diff --git a/docs/generation-report.md b/docs/generation-report.md
index bd02f14..884d754 100644
--- a/docs/generation-report.md
+++ b/docs/generation-report.md
@@ -1 +1,17 @@
# Generation Report
+
+## 2026-05-06 | Library v3.1.0b0 | API 1.70.0-beta.0
+
+
+### Python keyword parameter conflicts
+
+
+The following operations have parameters whose names are Python reserved keywords.
+The generator renames them with a trailing underscore (e.g., `from` -> `from_`).
+These should be reported to the owning teams for resolution in the API spec.
+
+
+| Scope | Operation | Location | Param |
+| --- | --- | --- | --- |
+| secureConnect | `createOrganizationSecureConnectRemoteAccessLogsExport` | body | `from` |
+
diff --git a/meraki/__init__.py b/meraki/__init__.py
index 04eb794..aafca11 100644
--- a/meraki/__init__.py
+++ b/meraki/__init__.py
@@ -52,7 +52,7 @@
from meraki._version import __version__ # noqa: F401
from datetime import datetime
-__api_version__ = "1.70.0"
+__api_version__ = "1.70.0-beta.0"
__all__ = [
"APIError",
diff --git a/meraki/_version.py b/meraki/_version.py
index f5f41e5..af79d36 100644
--- a/meraki/_version.py
+++ b/meraki/_version.py
@@ -1 +1 @@
-__version__ = "3.1.0"
+__version__ = "3.1.0b0"
diff --git a/meraki/aio/api/administered.py b/meraki/aio/api/administered.py
index 86a4429..05b1663 100644
--- a/meraki/aio/api/administered.py
+++ b/meraki/aio/api/administered.py
@@ -67,3 +67,36 @@ def revokeAdministeredIdentitiesMeApiKeys(self, suffix: str):
resource = f"/administered/identities/me/api/keys/{suffix}/revoke"
return self._session.post(metadata, resource)
+
+ def getAdministeredSearchLive(self, query: str, organizationId: str, networkId: str, **kwargs):
+ """
+ **List the appropriate results for a given global search utilizing live_search_react**
+ https://developer.cisco.com/meraki/api-v1/#!get-administered-search-live
+
+ - query (string): Search keywords
+ - organizationId (string): Id of Organization you want to search with
+ - networkId (string): Id of NodeGroup you want to seach with
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["administered", "configure", "search", "live"],
+ "operation": "getAdministeredSearchLive",
+ }
+ resource = "/administered/search/live"
+
+ query_params = [
+ "query",
+ "organizationId",
+ "networkId",
+ ]
+ 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"getAdministeredSearchLive: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
diff --git a/meraki/aio/api/appliance.py b/meraki/aio/api/appliance.py
index db28a66..b4634ab 100644
--- a/meraki/aio/api/appliance.py
+++ b/meraki/aio/api/appliance.py
@@ -23,6 +23,112 @@ def getDeviceApplianceDhcpSubnets(self, serial: str):
return self._session.get(metadata, resource)
+ def createDeviceApplianceInterfacesPortsUpdate(self, serial: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-appliance-interfaces-ports-update
+
+ - serial (string): Serial
+ - interface (object): The interface tuple used to identify the port
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "ports", "update"],
+ "operation": "createDeviceApplianceInterfacesPortsUpdate",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/update"
+
+ body_params = [
+ "interface",
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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"createDeviceApplianceInterfacesPortsUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateDeviceApplianceInterfacesPort(self, serial: str, number: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-appliance-interfaces-port
+
+ - serial (string): Serial
+ - number (string): Number
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "ports"],
+ "operation": "updateDeviceApplianceInterfacesPort",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/{number}"
+
+ body_params = [
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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"updateDeviceApplianceInterfacesPort: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceAppliancePerformance(self, serial: str, **kwargs):
"""
**Return the performance score for a single MX**
@@ -1038,6 +1144,93 @@ def updateNetworkApplianceFirewallSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def createNetworkApplianceInterfacesL3(self, networkId: str, ipv4: dict, **kwargs):
+ """
+ **Create wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - ipv4 (object): IPv4 configuration
+ - port (object): Port configuration
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "createNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ 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"createNetworkApplianceInterfacesL3: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str, **kwargs):
+ """
+ **Update wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ - port (object): Port configuration
+ - ipv4 (object): IPv4 configuration
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "updateNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ interfaceId = urllib.parse.quote(str(interfaceId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ 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"updateNetworkApplianceInterfacesL3: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str):
+ """
+ **Delete wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "deleteNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ interfaceId = urllib.parse.quote(str(interfaceId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ return self._session.delete(metadata, resource)
+
def getNetworkAppliancePorts(self, networkId: str):
"""
**List per-port VLAN settings for all ports of a secure router or security appliance.**
@@ -1087,6 +1280,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
- vlan (integer): Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode.
- allowedVlans (string): Comma-delimited list of VLAN IDs (e.g. '2,15') for all devices. Secure Routers also support VLAN ranges (e.g. '2-10,15'). Use 'all' to permit all VLANs on the port.
- accessPolicy (string): The name of the policy. Only applicable to Access ports. Valid values are: 'open', '8021x-radius', 'mac-radius', 'hybris-radius' for MX64 or Z3 or any MX supporting the per port authentication feature. Otherwise, 'open' is the only valid value and 'open' is the default value if the field is missing.
+ - peerSgtCapable (boolean): If true, Peer SGT is enabled for traffic through this port. Applicable to trunk port only, not access port.
+ - adaptivePolicyGroupId (string): Adaptive policy group ID that all traffic originating from this port is assigned to.
"""
kwargs.update(locals())
@@ -1106,6 +1301,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
"vlan",
"allowedVlans",
"accessPolicy",
+ "peerSgtCapable",
+ "adaptivePolicyGroupId",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1674,6 +1871,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
- applianceIp (string): The appliance IP address of the single LAN
- ipv6 (object): IPv6 configuration on the VLAN
- mandatoryDhcp (object): Mandatory DHCP will enforce that clients connecting to this LAN 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
+ - vrf (object): VRF configuration on the Single LAN
"""
kwargs.update(locals())
@@ -1690,6 +1888,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
"applianceIp",
"ipv6",
"mandatoryDhcp",
+ "vrf",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2301,6 +2500,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
- networkId (string): Network ID
- custom (array): Custom VPN exclusion rules. Pass an empty array to clear existing rules.
- majorApplications (array): Major Application based VPN exclusion rules. Pass an empty array to clear existing rules.
+ - applications (array): NBAR Application based VPN exclusion rules. Available for networks on >=19.2 firmware
"""
kwargs.update(locals())
@@ -2315,6 +2515,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
body_params = [
"custom",
"majorApplications",
+ "applications",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2378,6 +2579,186 @@ def disconnectNetworkApplianceUmbrellaAccount(self, networkId: str):
return self._session.post(metadata, resource)
+ def disableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Disable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!disable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "disableNetworkApplianceUmbrellaProtection",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/disableProtection"
+
+ return self._session.delete(metadata, resource)
+
+ def enableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Enable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!enable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "enableNetworkApplianceUmbrellaProtection",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/enableProtection"
+
+ return self._session.post(metadata, resource)
+
+ def excludeNetworkApplianceUmbrellaDomains(self, networkId: str, domains: list, **kwargs):
+ """
+ **Specify one or more domain names to be excluded from being routed to Cisco Umbrella.**
+ https://developer.cisco.com/meraki/api-v1/#!exclude-network-appliance-umbrella-domains
+
+ - networkId (string): Network ID
+ - domains (array): Array of domain names
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "excludeNetworkApplianceUmbrellaDomains",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/excludeDomains"
+
+ body_params = [
+ "domains",
+ ]
+ 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"excludeNetworkApplianceUmbrellaDomains: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def policiesNetworkApplianceUmbrella(self, networkId: str, policyIds: list, **kwargs):
+ """
+ **Update umbrella policies applied to MX network.**
+ https://developer.cisco.com/meraki/api-v1/#!policies-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - policyIds (array): Array of umbrella policy IDs
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "policiesNetworkApplianceUmbrella",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies"
+
+ body_params = [
+ "policyIds",
+ ]
+ 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"policiesNetworkApplianceUmbrella: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def addNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str, **kwargs):
+ """
+ **Add one umbrella policy to your network.**
+ https://developer.cisco.com/meraki/api-v1/#!add-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies"],
+ "operation": "addNetworkApplianceUmbrellaPolicies",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/add"
+
+ body_params = [
+ "policyId",
+ ]
+ 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"addNetworkApplianceUmbrellaPolicies: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def removeNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str):
+ """
+ **Remove one umbrella policy from your network.**
+ https://developer.cisco.com/meraki/api-v1/#!remove-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies"],
+ "operation": "removeNetworkApplianceUmbrellaPolicies",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/remove"
+
+ return self._session.delete(metadata, resource)
+
+ def protectionNetworkApplianceUmbrella(self, networkId: str, enable: bool, **kwargs):
+ """
+ **Enable or disable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!protection-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - enable (boolean): Enable or disable umbrella protection
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "protectionNetworkApplianceUmbrella",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/protection"
+
+ body_params = [
+ "enable",
+ ]
+ 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"protectionNetworkApplianceUmbrella: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def updateNetworkApplianceUplinksNat(self, networkId: str, uplinks: list, **kwargs):
"""
**Update uplink NAT settings of the specified network**
@@ -2488,6 +2869,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
- dhcpBootNextServer (string): DHCP boot option to direct boot clients to the server to load the boot file from
- dhcpBootFilename (string): DHCP boot option for boot filename
- 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.
- 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.
"""
@@ -2535,6 +2917,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
"dhcpBootNextServer",
"dhcpBootFilename",
"dhcpOptions",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -2642,6 +3025,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
- mask (integer): Mask used for the subnet of all bound to the template networks. Applicable only for template network.
- ipv6 (object): IPv6 configuration on the VLAN
- 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.
- 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.
"""
@@ -2693,6 +3077,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
"mask",
"ipv6",
"mandatoryDhcp",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -2807,6 +3192,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
- mode (string): The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'
- hubs (array): The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required.
- subnets (array): The list of subnets and their VPN presence.
+ - peerSgtCapable (boolean): Whether or not Peer SGT is enabled for traffic to this VPN peer.
- subnet (object): Configuration of subnet features
- hostTranslations (array): The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2
"""
@@ -2828,6 +3214,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
"mode",
"hubs",
"subnets",
+ "peerSgtCapable",
"subnet",
"hostTranslations",
]
@@ -2916,17 +3303,18 @@ def swapNetworkApplianceWarmSpare(self, networkId: str):
return self._session.post(metadata, resource)
- def getOrganizationApplianceDevicesRedundancyByNetwork(
+ def getOrganizationApplianceDevicesInterfacesL3ByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Return MX warm spare settings**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-redundancy-by-network
+ **Listing of L3 Interface Configurations across networks for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-interfaces-l-3-by-network
- 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 5 - 1000. Default is 50.
+ - networkIds (array): Optional Network IDs to filter results
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
- 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.
"""
@@ -2934,21 +3322,115 @@ def getOrganizationApplianceDevicesRedundancyByNetwork(
kwargs.update(locals())
metadata = {
- "tags": ["appliance", "configure", "devices", "redundancy", "byNetwork"],
- "operation": "getOrganizationApplianceDevicesRedundancyByNetwork",
+ "tags": ["appliance", "configure", "devices", "interfaces", "l3", "byNetwork"],
+ "operation": "getOrganizationApplianceDevicesInterfacesL3ByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/appliance/devices/redundancy/byNetwork"
+ resource = f"/organizations/{organizationId}/appliance/devices/interfaces/l3/byNetwork"
query_params = [
+ "networkIds",
"perPage",
"startingAfter",
"endingBefore",
]
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
+ 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"getOrganizationApplianceDevicesInterfacesL3ByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationApplianceDevicesInterfacesPortsByDevice(self, organizationId: str, **kwargs):
+ """
+ **Returns port configurations for appliances in a given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-interfaces-ports-by-device
+
+ - organizationId (string): Organization ID
+ - serials (array): Parameter to filter the results by device serials
+ - numbers (array): Parameter to filter the results by specific ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "devices", "interfaces", "ports", "byDevice"],
+ "operation": "getOrganizationApplianceDevicesInterfacesPortsByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/interfaces/ports/byDevice"
+
+ query_params = [
+ "serials",
+ "numbers",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "numbers",
+ ]
+ 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"getOrganizationApplianceDevicesInterfacesPortsByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceDevicesRedundancyByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return MX warm spare settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-redundancy-by-network
+
+ - 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 5 - 1000. Default is 50.
+ - 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": ["appliance", "configure", "devices", "redundancy", "byNetwork"],
+ "operation": "getOrganizationApplianceDevicesRedundancyByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/redundancy/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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(
@@ -2957,6 +3439,68 @@ def getOrganizationApplianceDevicesRedundancyByNetwork(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationApplianceDevicesSystemUtilizationByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return the appliance utilization history for devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-system-utilization-by-interval
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 2 hours.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 1200. The default is 1200.
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device utilization history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "devices", "system", "utilization", "byInterval"],
+ "operation": "getOrganizationApplianceDevicesSystemUtilizationByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/system/utilization/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationApplianceDevicesSystemUtilizationByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationApplianceDnsLocalProfiles(self, organizationId: str, **kwargs):
"""
**Fetch the local DNS profiles used in the organization**
@@ -3682,6 +4226,55 @@ def updateOrganizationApplianceRoutingVrfsSettings(self, organizationId: str, en
return self._session.put(metadata, resource, payload)
+ def getOrganizationApplianceSdwanInternetPolicies(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the SDWAN internet traffic preferences for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-sdwan-internet-policies
+
+ - 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 - 200. Default is 50.
+ - 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.
+ - wanTrafficUplinkPreferences (array): policies with respective traffic filters for an MX network
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "sdwan", "internetPolicies"],
+ "operation": "getOrganizationApplianceSdwanInternetPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/sdwan/internetPolicies"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "wanTrafficUplinkPreferences",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "wanTrafficUplinkPreferences",
+ ]
+ 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"getOrganizationApplianceSdwanInternetPolicies: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List the security events for an organization**
@@ -3836,6 +4429,58 @@ def getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationApplianceUmbrellaPoliciesByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List Umbrella policy IDs applied to MX networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-umbrella-policies-by-network
+
+ - 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
+ - organizationId (string): Organization identifier
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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): Filter results to only the given network IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies", "byNetwork"],
+ "operation": "getOrganizationApplianceUmbrellaPoliciesByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/umbrella/policies/byNetwork"
+
+ query_params = [
+ "organizationId",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationApplianceUmbrellaPoliciesByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
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**
@@ -4021,6 +4666,233 @@ def getOrganizationApplianceUplinksUsageByNetwork(self, organizationId: str, **k
return self._session.get(metadata, resource, params)
+ def getOrganizationApplianceVlans(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the VLANs for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vlans
+
+ - 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 100.
+ - 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": ["appliance", "configure", "vlans"],
+ "operation": "getOrganizationApplianceVlans",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vlans"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationApplianceVlans: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationApplianceVpnConnectivityVpnPeersByNetwork(self, organizationId: str, **kwargs):
+ """
+ **Summarizes by-device vpn peers for the organization in the given interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-connectivity-vpn-peers-by-network
+
+ - 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 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 3600, 14400, 86400. The default is 3600. Interval is calculated if time params are provided.
+ - networkIds (array): Filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "connectivity", "vpnPeers", "byNetwork"],
+ "operation": "getOrganizationApplianceVpnConnectivityVpnPeersByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/connectivity/vpnPeers/byNetwork"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationApplianceVpnConnectivityVpnPeersByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Get authentication for all clients in organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "authentication", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/authentication/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient(self, organizationId: str, **kwargs):
+ """
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-ip-assignment-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "ipAssignment", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/ipAssignment/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient(self, organizationId: str, **kwargs):
+ """
+ **Get tunnel creation events for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-tunnel-creation-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "tunnelCreation", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/tunnelCreation/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: str):
"""
**Get the list of available IPsec SLA policies for an organization**
diff --git a/meraki/aio/api/camera.py b/meraki/aio/api/camera.py
index 98e5c8a..8d29b25 100644
--- a/meraki/aio/api/camera.py
+++ b/meraki/aio/api/camera.py
@@ -739,6 +739,97 @@ def getNetworkCameraSchedules(self, networkId: str):
return self._session.get(metadata, resource)
+ def createNetworkCameraVideoWall(self, networkId: str, name: str, tiles: list, **kwargs):
+ """
+ **Create a new video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "createNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ 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"createNetworkCameraVideoWall: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkCameraVideoWall(self, networkId: str, id: str, name: str, tiles: list, **kwargs):
+ """
+ **Update the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "updateNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ 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"updateNetworkCameraVideoWall: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkCameraVideoWall(self, networkId: str, id: str):
+ """
+ **Delete the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "deleteNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ return self._session.delete(metadata, resource)
+
def createNetworkCameraWirelessProfile(self, networkId: str, name: str, ssid: dict, **kwargs):
"""
**Creates a new camera wireless profile for this network.**
@@ -1091,6 +1182,45 @@ def getOrganizationCameraDetectionsHistoryByBoundaryByInterval(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationCameraDevicesConfigurations(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Lists all the capabilities of cameras in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-devices-configurations
+
+ - 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 - 100. Default is 20.
+ - 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": ["camera", "configure", "devices", "configurations"],
+ "operation": "getOrganizationCameraDevicesConfigurations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/camera/devices/configurations"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationCameraDevicesConfigurations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwargs):
"""
**Fetch onboarding status of cameras**
@@ -1336,3 +1466,104 @@ def updateOrganizationCameraRole(self, organizationId: str, roleId: str, **kwarg
self._session._logger.warning(f"updateOrganizationCameraRole: ignoring unrecognized kwargs: {invalid}")
return self._session.put(metadata, resource, payload)
+
+ def getOrganizationCameraVideoWalls(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a list of video walls.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-walls
+
+ - 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 10 - 250. Default is 50.
+ - 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): A list of network ids to filter video walls on
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "getOrganizationCameraVideoWalls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationCameraVideoWalls: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCameraVideoWall(self, organizationId: str, id: str):
+ """
+ **Return the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-wall
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "getOrganizationCameraVideoWall",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationCameraVideoWallVideoLink(self, organizationId: str, id: str, **kwargs):
+ """
+ **Returns video wall link to the specified video wall id**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-wall-video-link
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - timestamp (string): [optional] The video link will start at this time. The timestamp should be a string in ISO8601 format. If no timestamp is specified, we will assume current time.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls", "videoLink"],
+ "operation": "getOrganizationCameraVideoWallVideoLink",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls/{id}/videoLink"
+
+ query_params = [
+ "timestamp",
+ ]
+ 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"getOrganizationCameraVideoWallVideoLink: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
diff --git a/meraki/aio/api/campusGateway.py b/meraki/aio/api/campusGateway.py
index ed7cee5..cfe63c5 100644
--- a/meraki/aio/api/campusGateway.py
+++ b/meraki/aio/api/campusGateway.py
@@ -96,6 +96,96 @@ def updateNetworkCampusGatewayCluster(self, networkId: str, clusterId: str, **kw
return self._session.put(metadata, resource, payload)
+ def deleteNetworkCampusGatewayCluster(self, networkId: str, clusterId: str):
+ """
+ **Delete a cluster**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-campus-gateway-cluster
+
+ - networkId (string): Network ID
+ - clusterId (string): Cluster ID
+ """
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters"],
+ "operation": "deleteNetworkCampusGatewayCluster",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clusterId = urllib.parse.quote(str(clusterId), safe="")
+ resource = f"/networks/{networkId}/campusGateway/clusters/{clusterId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationCampusGatewayClientsUsageByNetworkByCluster(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns client usage details for campus gateway clusters within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clients-usage-by-network-by-cluster
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Limit the results to clients that belong to one of the provided network groups.
+ - clusterIds (array): Filter results by a list of cluster IDs.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "monitor", "clients", "usage", "byNetwork", "byCluster"],
+ "operation": "getOrganizationCampusGatewayClientsUsageByNetworkByCluster",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clients/usage/byNetwork/byCluster"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "clusterIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClientsUsageByNetworkByCluster: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Get the details of campus gateway clusters**
@@ -143,6 +233,464 @@ def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationCampusGatewayClustersFailoverTargets(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the details of a Failover Targets for a Campus Gateway cluster**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-failover-targets
+
+ - 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
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - clusterIds (array): Optional parameter to filter clusters. This filter uses multiple exact matches.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["campusGateway", "configure", "clusters", "failover", "targets"],
+ "operation": "getOrganizationCampusGatewayClustersFailoverTargets",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/failover/targets"
+
+ query_params = [
+ "networkIds",
+ "clusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClustersFailoverTargets: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayClustersFailoverTargetsByCluster(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get available backup cluster targets for campus gateway failover configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-failover-targets-by-cluster
+
+ - 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
+ - networkIds (array): Networks for which backup cluster targets should be gathered.
+ - clusterIds (array): Cluster IDs to filter backup cluster targets.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["campusGateway", "configure", "clusters", "failover", "targets", "byCluster"],
+ "operation": "getOrganizationCampusGatewayClustersFailoverTargetsByCluster",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/failover/targets/byCluster"
+
+ query_params = [
+ "networkIds",
+ "clusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClustersFailoverTargetsByCluster: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayClustersNetworksOverviews(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List networks tunneling through Campus Gateway clusters with their AP, ssids and client counts**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-networks-overviews
+
+ - 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
+ - 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.
+ - 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'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clients", "clusterId", "connections", "name", "networkId", "siteName", "ssids"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters", "networks", "overviews"],
+ "operation": "getOrganizationCampusGatewayClustersNetworksOverviews",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/networks/overviews"
+
+ query_params = [
+ "clusterIds",
+ "siteIds",
+ "networkIds",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clusterIds",
+ "siteIds",
+ "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"getOrganizationCampusGatewayClustersNetworksOverviews: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def provisionOrganizationCampusGatewayClusters(
+ self,
+ organizationId: str,
+ clusterId: str,
+ network: dict,
+ name: str,
+ uplinks: list,
+ tunnels: list,
+ nameservers: dict,
+ portChannels: list,
+ **kwargs,
+ ):
+ """
+ **Provisions a cluster,adds campus gateways to it and associate/dissociate failover targets.**
+ https://developer.cisco.com/meraki/api-v1/#!provision-organization-campus-gateway-clusters
+
+ - organizationId (string): Organization ID
+ - clusterId (string): ID of the cluster to be provisioned
+ - network (object): Network to be provisioned
+ - name (string): Name of the new cluster
+ - uplinks (array): Uplink interface settings of the cluster
+ - tunnels (array): Tunnel interface settings of the cluster: Reuse uplink or specify tunnel interface
+ - nameservers (object): Nameservers of the cluster
+ - portChannels (array): Port channel settings of the cluster
+ - devices (array): Devices to be added to the cluster
+ - failover (object): Failover targets for the cluster
+ - notes (string): Notes about cluster with max size of 511 characters allowed
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters"],
+ "operation": "provisionOrganizationCampusGatewayClusters",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/provision"
+
+ body_params = [
+ "clusterId",
+ "network",
+ "name",
+ "uplinks",
+ "tunnels",
+ "nameservers",
+ "portChannels",
+ "devices",
+ "failover",
+ "notes",
+ ]
+ 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"provisionOrganizationCampusGatewayClusters: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationCampusGatewayClustersSsids(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List SSIDs tunneling through Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-ssids
+
+ - 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
+ - clusterIds (array): Optional parameter to filter by MCG cluster IDs. This filter uses multiple exact matches.
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - search (string): Optional parameter to filter SSIDs by name. This filter uses case-insensitive starts with string matching.
+ - sortBy (string): Optional parameter to sort results. Default is 'networkId'.
+ - sortOrder (string): Optional parameter to specify sort direction. Default is 'asc'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clusterId", "name", "networkId", "ssidId"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters", "ssids"],
+ "operation": "getOrganizationCampusGatewayClustersSsids",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/ssids"
+
+ query_params = [
+ "clusterIds",
+ "networkIds",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clusterIds",
+ "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"getOrganizationCampusGatewayClustersSsids: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayConnections(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the details of APs tunneling through the Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-connections
+
+ - 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
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connections(APs) by its own serials. This filter uses multiple exact matches.
+ - campusGatewaySerials (array): Optional parameter to filter connections(APs) by MCG serials. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter connections(APs) by MCG cluster IDs. This filter uses multiple exact matches.
+ - campusGatewayTunnelStatuses (array): Optional parameter to filter connections(APs) by tunnel statuses. This filter uses multiple exact matches.
+ - search (string): Optional parameter to filter connections(APs) on AP name, serial, MAC address, network name, or interface IP address. This filter uses partial string matching (ILIKE).
+ - models (array): Optional parameter to filter connections(APs) by device model names. This filter uses multiple exact matches.
+ - dataEncryptionStatuses (array): Optional parameter to filter connections(APs) by data encryption status. This filter uses multiple exact matches.
+ - sortBy (string): Optional parameter to sort results. Available options: name, serial, status, interfaces, clients, dataEncryption, networkName. Default is 'serial'.
+ - sortOrder (string): Optional parameter to specify sort direction. Default is 'asc'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clients", "dataEncryption", "interfaces", "name", "networkName", "serial", "status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "connections"],
+ "operation": "getOrganizationCampusGatewayConnections",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/connections"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "search",
+ "models",
+ "dataEncryptionStatuses",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ 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"getOrganizationCampusGatewayConnections: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayConnectionsOverview(self, organizationId: str, **kwargs):
+ """
+ **List the count of connections(APs) with tunneling status up and down through the Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-connections-overview
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connections(APs) by its own serials. This filter uses multiple exact matches.
+ - campusGatewaySerials (array): Optional parameter to filter connections(APs) by Campus Gateway serials. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter connections(APs) by Campus Gateway cluster IDs. This filter uses multiple exact matches.
+ - campusGatewayTunnelStatuses (array): Optional parameter to filter connections(APs) by tunnel statuses. This filter uses multiple exact matches.
+ - search (string): Optional setting that lets you filter access points (APs) by name, serial number, MAC address, network name, or interface IP address. The filter matches partial text, not just exact values (uses ILIKE matching).
+ - models (array): Optional parameter to filter connections(APs) by device model names. This filter uses multiple exact matches.
+ - dataEncryptionStatuses (array): Optional parameter to filter connections(APs) by data encryption status. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "connections", "overview"],
+ "operation": "getOrganizationCampusGatewayConnectionsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/connections/overview"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "search",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ 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"getOrganizationCampusGatewayConnectionsOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
diff --git a/meraki/aio/api/devices.py b/meraki/aio/api/devices.py
index 0b12c40..3d4f22a 100644
--- a/meraki/aio/api/devices.py
+++ b/meraki/aio/api/devices.py
@@ -232,6 +232,72 @@ def createDeviceCellularUplinksBandsMasksUpdate(self, serial: str, slot: str, ty
return self._session.post(metadata, resource, payload)
+ def updateDeviceCliConfigFavorite(self, serial: str, configId: str, favorite: bool, **kwargs):
+ """
+ **Favorite or unfavorite a configuration for an IOS-XE device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-cli-config-favorite
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - favorite (boolean): Whether the config should be favorited
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["devices", "configure", "cli", "configs"],
+ "operation": "updateDeviceCliConfigFavorite",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ configId = urllib.parse.quote(str(configId), safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}"
+
+ body_params = [
+ "favorite",
+ ]
+ 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"updateDeviceCliConfigFavorite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def createDeviceConfigRestore(self, serial: str, configId: str, **kwargs):
+ """
+ **Create a restore request for a specific config history record**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-config-restore
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - scheduledFor (string): Requested ISO 8601 UTC timestamp for when the restore should be scheduled
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["devices", "configure", "cli", "configs"],
+ "operation": "createDeviceConfigRestore",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ configId = urllib.parse.quote(str(configId), safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}/restores"
+
+ body_params = [
+ "scheduledFor",
+ ]
+ 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"createDeviceConfigRestore: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
def getDeviceClients(self, serial: str, **kwargs):
"""
**List the clients of a device, up to a maximum of a month ago**
@@ -265,6 +331,56 @@ def getDeviceClients(self, serial: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def createDeviceLiveToolsAclHitCount(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform an ACL hit count for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-acl-hit-count
+
+ - 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", "aclHitCount"],
+ "operation": "createDeviceLiveToolsAclHitCount",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/aclHitCount"
+
+ 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"createDeviceLiveToolsAclHitCount: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsAclHitCount(self, serial: str, id: str):
+ """
+ **Return an ACL hit count live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-acl-hit-count
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "aclHitCount"],
+ "operation": "getDeviceLiveToolsAclHitCount",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/aclHitCount/{id}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsArpTable(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a ARP table request for the device**
@@ -367,6 +483,75 @@ def getDeviceLiveToolsCableTest(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def getDeviceLiveToolsClientsDisconnect(self, serial: str, id: str):
+ """
+ **Return a client disconnect job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-clients-disconnect
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "clients", "disconnect"],
+ "operation": "getDeviceLiveToolsClientsDisconnect",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/clients/disconnect/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsDhcpLease(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a DHCP leases request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-dhcp-lease
+
+ - 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", "dhcpLeases"],
+ "operation": "createDeviceLiveToolsDhcpLease",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/dhcpLeases"
+
+ 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"createDeviceLiveToolsDhcpLease: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsDhcpLease(self, serial: str, dhcpLeasesId: str):
+ """
+ **Return a DHCP leases live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-dhcp-lease
+
+ - serial (string): Serial
+ - dhcpLeasesId (string): Dhcp leases ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "dhcpLeases"],
+ "operation": "getDeviceLiveToolsDhcpLease",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ dhcpLeasesId = urllib.parse.quote(str(dhcpLeasesId), safe="")
+ resource = f"/devices/{serial}/liveTools/dhcpLeases/{dhcpLeasesId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs):
"""
**Enqueue a job to blink LEDs on a device**
@@ -521,6 +706,56 @@ def getDeviceLiveToolsMulticastRouting(self, serial: str, multicastRoutingId: st
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsOspfNeighbor(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a OSPF neighbors request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-ospf-neighbor
+
+ - 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", "ospfNeighbors"],
+ "operation": "createDeviceLiveToolsOspfNeighbor",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/ospfNeighbors"
+
+ 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"createDeviceLiveToolsOspfNeighbor: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsOspfNeighbor(self, serial: str, ospfNeighborsId: str):
+ """
+ **Return an OSPF neighbors live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-ospf-neighbor
+
+ - serial (string): Serial
+ - ospfNeighborsId (string): Ospf neighbors ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "ospfNeighbors"],
+ "operation": "getDeviceLiveToolsOspfNeighbor",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ ospfNeighborsId = urllib.parse.quote(str(ospfNeighborsId), safe="")
+ resource = f"/devices/{serial}/liveTools/ospfNeighbors/{ospfNeighborsId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsPing(self, serial: str, target: str, **kwargs):
"""
**Enqueue a job to ping a target host from the device**
@@ -627,6 +862,56 @@ def getDeviceLiveToolsPingDevice(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsPortStatus(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-port-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", "portStatus"],
+ "operation": "createDeviceLiveToolsPortStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/portStatus"
+
+ 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"createDeviceLiveToolsPortStatus: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsPortStatus(self, serial: str, portStatusId: str):
+ """
+ **Return a port status live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-port-status
+
+ - serial (string): Serial
+ - portStatusId (string): Port status ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "portStatus"],
+ "operation": "getDeviceLiveToolsPortStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ portStatusId = urllib.parse.quote(str(portStatusId), safe="")
+ resource = f"/devices/{serial}/liveTools/portStatus/{portStatusId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsPortsCycle(self, serial: str, ports: list, **kwargs):
"""
**Enqueue a job to perform a cycle port for the device on the specified ports**
@@ -679,6 +964,294 @@ def getDeviceLiveToolsPortsCycle(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsReboot(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to reboot a device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-reboot
+
+ - 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", "reboot"],
+ "operation": "createDeviceLiveToolsReboot",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/reboot"
+
+ 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"createDeviceLiveToolsReboot: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsReboot(self, serial: str, rebootId: str):
+ """
+ **Return a reboot job**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-reboot
+
+ - serial (string): Serial
+ - rebootId (string): Reboot ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "reboot"],
+ "operation": "getDeviceLiveToolsReboot",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ rebootId = urllib.parse.quote(str(rebootId), safe="")
+ resource = f"/devices/{serial}/liveTools/reboot/{rebootId}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsRoutingTable(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-routing-table
+
+ - 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"],
+ "operation": "createDeviceLiveToolsRoutingTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/routingTable"
+
+ 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"createDeviceLiveToolsRoutingTable: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table lookup request for the 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.**
+ 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 job to perform a routing table summary request for the 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 a routing table live tool 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 getDeviceLiveToolsRoutingTable(self, serial: str, id: str):
+ """
+ **Return an routing table live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-routing-table
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "routingTable"],
+ "operation": "getDeviceLiveToolsRoutingTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/routingTable/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsSpeedTest(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to execute a speed test from a device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-speed-test
+
+ - serial (string): Serial
+ - interface (string): Optional filter for a specific WAN interface. Valid interfaces are wan1, wan2, wan3, wan4. Default will return wan1.
+ """
+
+ kwargs.update(locals())
+
+ if "interface" in kwargs:
+ options = ["wan1", "wan2", "wan3", "wan4"]
+ assert kwargs["interface"] in options, (
+ f'''"interface" cannot be "{kwargs["interface"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["devices", "liveTools", "speedTest"],
+ "operation": "createDeviceLiveToolsSpeedTest",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/speedTest"
+
+ body_params = [
+ "interface",
+ ]
+ 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"createDeviceLiveToolsSpeedTest: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsSpeedTest(self, serial: str, id: str):
+ """
+ **Returns a speed test result in megabits per second**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-speed-test
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "speedTest"],
+ "operation": "getDeviceLiveToolsSpeedTest",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/speedTest/{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**
@@ -729,6 +1302,110 @@ def getDeviceLiveToolsThroughputTest(self, serial: str, throughputTestId: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsTraceRoute(self, serial: str, target: str, sourceInterface: str, **kwargs):
+ """
+ **Enqueue a job to run trace route in the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-trace-route
+
+ - serial (string): Serial
+ - target (string): Destination Host name or address
+ - sourceInterface (string): Source Interface IP address
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["devices", "liveTools", "traceRoute"],
+ "operation": "createDeviceLiveToolsTraceRoute",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/traceRoute"
+
+ body_params = [
+ "target",
+ "sourceInterface",
+ "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"createDeviceLiveToolsTraceRoute: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsTraceRoute(self, serial: str, traceRouteId: str):
+ """
+ **Return a trace route job**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-trace-route
+
+ - serial (string): Serial
+ - traceRouteId (string): Trace route ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "traceRoute"],
+ "operation": "getDeviceLiveToolsTraceRoute",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ traceRouteId = urllib.parse.quote(str(traceRouteId), safe="")
+ resource = f"/devices/{serial}/liveTools/traceRoute/{traceRouteId}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsVrrpTable(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a VRRP table request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-vrrp-table
+
+ - 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", "vrrpTable"],
+ "operation": "createDeviceLiveToolsVrrpTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/vrrpTable"
+
+ 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"createDeviceLiveToolsVrrpTable: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsVrrpTable(self, serial: str, vrrpTableId: str):
+ """
+ **Return an VRRP table live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-vrrp-table
+
+ - serial (string): Serial
+ - vrrpTableId (string): Vrrp table ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "vrrpTable"],
+ "operation": "getDeviceLiveToolsVrrpTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ vrrpTableId = urllib.parse.quote(str(vrrpTableId), safe="")
+ resource = f"/devices/{serial}/liveTools/vrrpTable/{vrrpTableId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsWakeOnLan(self, serial: str, vlanId: int, mac: str, **kwargs):
"""
**Enqueue a job to send a Wake-on-LAN packet from the device**
diff --git a/meraki/aio/api/insight.py b/meraki/aio/api/insight.py
index 98345d2..eab3e2a 100644
--- a/meraki/aio/api/insight.py
+++ b/meraki/aio/api/insight.py
@@ -64,6 +64,95 @@ def getOrganizationInsightApplications(self, organizationId: str):
return self._session.get(metadata, resource)
+ def createOrganizationInsightApplication(self, organizationId: str, counterSetRuleId: int, **kwargs):
+ """
+ **Add an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - counterSetRuleId (integer): The id of the counter set rule
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "createOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications"
+
+ body_params = [
+ "counterSetRuleId",
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ 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"createOrganizationInsightApplication: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationInsightApplication(self, organizationId: str, applicationId: str, **kwargs):
+ """
+ **Update an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "updateOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ applicationId = urllib.parse.quote(str(applicationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ body_params = [
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ 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"updateOrganizationInsightApplication: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationInsightApplication(self, organizationId: str, applicationId: str):
+ """
+ **Delete an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "deleteOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ applicationId = urllib.parse.quote(str(applicationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationInsightMonitoredMediaServers(self, organizationId: str):
"""
**List the monitored media servers for this organization**
@@ -194,3 +283,154 @@ def deleteOrganizationInsightMonitoredMediaServer(self, organizationId: str, mon
resource = f"/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}"
return self._session.delete(metadata, resource)
+
+ def getOrganizationInsightSpeedTestResults(self, organizationId: str, serials: list, **kwargs):
+ """
+ **List the speed tests for the given devices under this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-insight-speed-test-results
+
+ - organizationId (string): Organization ID
+ - serials (array): A list of serial numbers. The returned results will be filtered to only include these serials.
+ - timespan (integer): Amount of seconds ago to query for results. Only include timespan OR both t0 & t1.
+ - t0 (integer): Start time to query for results in epoch seconds. Only include timespan OR both t0 & t1.
+ - t1 (integer): End time to query for results in epoch seconds. Only include timespan OR both t0 & t1.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "speedTestResults"],
+ "operation": "getOrganizationInsightSpeedTestResults",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/speedTestResults"
+
+ query_params = [
+ "serials",
+ "timespan",
+ "t0",
+ "t1",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationInsightSpeedTestResults: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationInsightWebApps(self, organizationId: str):
+ """
+ **Lists all default web applications rules with counter set rule ids**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-insight-web-apps
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "getOrganizationInsightWebApps",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationInsightWebApp(self, organizationId: str, name: str, hostname: str, **kwargs):
+ """
+ **Add a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "createOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ 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"createOrganizationInsightWebApp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str, **kwargs):
+ """
+ **Update a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "updateOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ customCounterSetRuleId = urllib.parse.quote(str(customCounterSetRuleId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ 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"updateOrganizationInsightWebApp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str):
+ """
+ **Delete a custom web application by counter set rule id.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "deleteOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ customCounterSetRuleId = urllib.parse.quote(str(customCounterSetRuleId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ return self._session.delete(metadata, resource)
diff --git a/meraki/aio/api/licensing.py b/meraki/aio/api/licensing.py
index 962e765..c8ba0f9 100644
--- a/meraki/aio/api/licensing.py
+++ b/meraki/aio/api/licensing.py
@@ -45,6 +45,39 @@ def getAdministeredLicensingSubscriptionEntitlements(self, **kwargs):
return self._session.get(metadata, resource, params)
+ def batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate(self, **kwargs):
+ """
+ **Batch change networks to their desired feature tier for specified product types**
+ https://developer.cisco.com/meraki/api-v1/#!batch-administered-licensing-subscription-networks-feature-tiers-update
+
+ - items (array): List of networks and corresponding product types to update. Maximum 500 networks
+ - isAtomic (boolean): Flag to determine if the operation should act atomically
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["licensing", "configure", "subscription", "featureTiers"],
+ "operation": "batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate",
+ }
+ resource = "/administered/licensing/subscription/networks/featureTiers/batchUpdate"
+
+ body_params = [
+ "items",
+ "isAtomic",
+ ]
+ 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"batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getAdministeredLicensingSubscriptionSubscriptions(
self, organizationIds: list, total_pages=1, direction="next", **kwargs
):
diff --git a/meraki/aio/api/nac.py b/meraki/aio/api/nac.py
new file mode 100644
index 0000000..0dcad5c
--- /dev/null
+++ b/meraki/aio/api/nac.py
@@ -0,0 +1,1151 @@
+import urllib
+
+
+class AsyncNac:
+ def __init__(self, session):
+ super().__init__()
+ self._session = session
+
+ def getOrganizationNacAuthorizationPolicies(self, organizationId: str, **kwargs):
+ """
+ **Get all nac authorization policies for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-authorization-policies
+
+ - organizationId (string): Organization ID
+ - policyIds (array): List of ids for specific authorization policies retrieval
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies"],
+ "operation": "getOrganizationNacAuthorizationPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies"
+
+ query_params = [
+ "policyIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "policyIds",
+ ]
+ 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"getOrganizationNacAuthorizationPolicies: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def createOrganizationNacAuthorizationPolicyRule(
+ self, organizationId: str, policyId: str, name: str, rank: int, authorizationProfile: dict, **kwargs
+ ):
+ """
+ **Create a rule in an authorization policy set of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - name (string): Name of Authorization rule
+ - rank (integer): Rank of Authorization rule
+ - authorizationProfile (object): Authorization profile associated with the rule
+ - enabled (boolean): Enabled status of authorization rule. Default is False.
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ - condition (object): Condition of Authorization rule.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "createOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules"
+
+ body_params = [
+ "name",
+ "rank",
+ "enabled",
+ "sourcePolicyVersion",
+ "authorizationProfile",
+ "condition",
+ ]
+ 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"createOrganizationNacAuthorizationPolicyRule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationNacAuthorizationPolicyRule(
+ self, organizationId: str, policyId: str, ruleId: str, name: str, rank: int, authorizationProfile: dict, **kwargs
+ ):
+ """
+ **Update an existing rule of an authorization policy set within an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - ruleId (string): Rule ID
+ - name (string): Name of Authorization rule
+ - rank (integer): Rank of Authorization rule
+ - authorizationProfile (object): Authorization profile associated with the rule
+ - enabled (boolean): Enabled status of authorization rule. Default is False.
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ - condition (object): Condition of Authorization rule.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "updateOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ ruleId = urllib.parse.quote(str(ruleId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules/{ruleId}"
+
+ body_params = [
+ "name",
+ "rank",
+ "enabled",
+ "sourcePolicyVersion",
+ "authorizationProfile",
+ "condition",
+ ]
+ 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"updateOrganizationNacAuthorizationPolicyRule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationNacAuthorizationPolicyRule(self, organizationId: str, policyId: str, ruleId: str, **kwargs):
+ """
+ **Delete a rule in an authorization policy set of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - ruleId (string): Rule ID
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "deleteOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ ruleId = urllib.parse.quote(str(ruleId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules/{ruleId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationNacCertificates(self, organizationId: str, **kwargs):
+ """
+ **Gets all certificates for an organization and can filter by certificate status, expiry date and last used date**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates
+
+ - organizationId (string): Organization ID
+ - status (string): Status Parameter for GetAll request
+ - expiry (boolean): Boolean indicating whether to filter by expiry in one month
+ - lastUsed (boolean): Boolean indicating whether to filter by last used in over one month
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["Disabled", "Enabled"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates"],
+ "operation": "getOrganizationNacCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates"
+
+ query_params = [
+ "status",
+ "expiry",
+ "lastUsed",
+ ]
+ 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"getOrganizationNacCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacCertificatesAuthoritiesCrls(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all the organization's CRL.It's possible to filter results by CRL issuers (CA) or CRL's ID - see caIds and crlIds query parameters.This endpoint could be used for 'show' action when you specify a single CRL ID in crlIds parameter**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-authorities-crls
+
+ - 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 - 20. Default is 5.
+ - 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.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: caId)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ - crlIds (array): A list of CRL ids. The returned CRLs will be filtered to only include these ids
+ - caIds (array): When ca Ids are provided, only CRLs associated to the given CA will be returned. Otherwise, all the CRLs created for an organization will be returned.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["caId", "createdAt", "lastUpdatedAt"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "getOrganizationNacCertificatesAuthoritiesCrls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ "crlIds",
+ "caIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "crlIds",
+ "caIds",
+ ]
+ 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"getOrganizationNacCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacCertificatesAuthoritiesCrl(
+ self, organizationId: str, caId: str, content: str, isDelta: bool, **kwargs
+ ):
+ """
+ **Create a new CRL (either base or delta) for an existing CA**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - caId (string): ID of the CRL issuer
+ - content (string): CRL content in PEM format
+ - isDelta (boolean): Whether it's a delta CRL or not
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "createOrganizationNacCertificatesAuthoritiesCrl",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls"
+
+ body_params = [
+ "caId",
+ "content",
+ "isDelta",
+ ]
+ 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"createOrganizationNacCertificatesAuthoritiesCrl: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacCertificatesAuthoritiesCrlsDescriptors(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get all the organization's CRL descriptors (metadata only - revocation list data is excluded)**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-authorities-crls-descriptors
+
+ - 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 - 100. Default is 20.
+ - 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.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: caId)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ - caIds (array): When ca Ids are provided, only CRLs associated to the given CA will be returned. Otherwise, all the CRLs created for an organization will be returned.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["caId", "createdAt", "lastUpdatedAt"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls", "descriptors"],
+ "operation": "getOrganizationNacCertificatesAuthoritiesCrlsDescriptors",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls/descriptors"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ "caIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "caIds",
+ ]
+ 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"getOrganizationNacCertificatesAuthoritiesCrlsDescriptors: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationNacCertificatesAuthoritiesCrl(self, organizationId: str, crlId: str):
+ """
+ **Deletes a whole CRL, including all its deltas (in case of base CRL removal)**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - crlId (string): Crl ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "deleteOrganizationNacCertificatesAuthoritiesCrl",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ crlId = urllib.parse.quote(str(crlId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls/{crlId}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationNacCertificatesImport(self, organizationId: str, contents: str, **kwargs):
+ """
+ **Import certificate for this organization or validate without persisting**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-import
+
+ - organizationId (string): Organization ID
+ - contents (string): Certificate content in valid PEM format
+ - dryRun (boolean): If true, validates the certificate without persisting it
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "import"],
+ "operation": "createOrganizationNacCertificatesImport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/import"
+
+ body_params = [
+ "contents",
+ "dryRun",
+ "profile",
+ ]
+ 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"createOrganizationNacCertificatesImport: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacCertificatesOverview(self, organizationId: str):
+ """
+ **Get counts of Enabled, Disabled, Expired and Last Used certificates for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-overview
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "overview"],
+ "operation": "getOrganizationNacCertificatesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/overview"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationNacCertificate(self, organizationId: str, certificateId: str, profile: dict, **kwargs):
+ """
+ **Update certificate configuration by certificateId for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates"],
+ "operation": "updateOrganizationNacCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/{certificateId}"
+
+ body_params = [
+ "profile",
+ ]
+ 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"updateOrganizationNacCertificate: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationNacClients(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all known clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients
+
+ - 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
+ - sortOrder (string): Query parameter for specifying the direction of sorting to use for the given sortKey.
+ - sortKey (string): Query parameter to sort the clients by the value of the specified key.
+ - 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.
+ - search (string): Optional parameter to fuzzy search on clients.
+ - clientIds (array): List of ids for specific client retrieval
+ - groupIds (array): List of group ids for client retrieval by group
+ - lastNetworkName (array): List of network names for client retrieval by last login network name
+ - ssid (array): List of SSID's to filter
+ - classification (object): Classification filters for client retrieval
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ASC", "DESC"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = ["mac"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "getOrganizationNacClients",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients"
+
+ query_params = [
+ "sortOrder",
+ "sortKey",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "clientIds",
+ "groupIds",
+ "lastNetworkName",
+ "ssid",
+ "classification",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clientIds",
+ "groupIds",
+ "lastNetworkName",
+ "ssid",
+ ]
+ 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"getOrganizationNacClients: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacClient(self, organizationId: str, mac: str, **kwargs):
+ """
+ **Create a client for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-client
+
+ - organizationId (string): Organization ID
+ - mac (string): The MAC address of the client
+ - type (string): Type describes if the network client belongs to an individual user or corporate
+ - owner (string): The username of the owner of the client
+ - description (string): User provided description for the client
+ - uuid (string): Universally unique identifier of the client
+ - userDetails (array): List of users of this network client
+ - oui (object): Organizationally unique identifier assigned to a vendor of the client
+ - groups (array): List of group members associated with the client
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["BYOD", "corporate"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "createOrganizationNacClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients"
+
+ body_params = [
+ "type",
+ "owner",
+ "mac",
+ "description",
+ "uuid",
+ "userDetails",
+ "oui",
+ "groups",
+ ]
+ 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"createOrganizationNacClient: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationNacClientsDelete(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Delete existing client(s) for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-nac-clients-delete
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of ids for specific client retrieval
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "bulkOrganizationNacClientsDelete",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkDelete"
+
+ body_params = [
+ "clientIds",
+ ]
+ 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"bulkOrganizationNacClientsDelete: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationNacClientsBulkEdit(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Bulk Update of existing clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-edit
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of clients ids to apply the bulk edit operation on.
+ - description (string): User provided description to be applied on the list of clients provided
+ - groups (object): Client group information to be applied on the list of clients provided
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "bulkEdit"],
+ "operation": "createOrganizationNacClientsBulkEdit",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkEdit"
+
+ body_params = [
+ "clientIds",
+ "description",
+ "groups",
+ ]
+ 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"createOrganizationNacClientsBulkEdit: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationNacClientsBulkUpload(
+ self, organizationId: str, contents: str, updateClients: bool, createClientGroups: bool, **kwargs
+ ):
+ """
+ **Bulk upload of clients, client groups and their associations for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-upload
+
+ - organizationId (string): Organization ID
+ - contents (string): CSV file content in Base64 encoded string format
+ - updateClients (boolean): The updateClients indicates whether existing clients must be updated with new data from the CSV
+ - createClientGroups (boolean): The createClientGroups indicates whether new client groups must be created or not
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "bulkUpload"],
+ "operation": "createOrganizationNacClientsBulkUpload",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkUpload"
+
+ body_params = [
+ "contents",
+ "updateClients",
+ "createClientGroups",
+ ]
+ 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"createOrganizationNacClientsBulkUpload: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all known client groups for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients-groups
+
+ - 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
+ - sortOrder (string): Query parameter for specifying the direction of sorting to use for the given sortKey.
+ - sortKey (string): Query parameter to sort the client groups by the value of the specified key.
+ - 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.
+ - search (string): Optional parameter to fuzzy search on client groups.
+ - groupIds (array): List of ids for specific group retrieval
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ASC", "DESC"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = ["name"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "getOrganizationNacClientsGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups"
+
+ query_params = [
+ "sortOrder",
+ "sortKey",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "groupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "groupIds",
+ ]
+ 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"getOrganizationNacClientsGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacClientsGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (array): List of client members associated with the group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "createOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ 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"createOrganizationNacClientsGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationNacClientsGroup(self, organizationId: str, groupId: str, **kwargs):
+ """
+ **Update an existing client group for the organization with bulk member operations**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (object): Bulk member operations with addList/removeList arrays
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "updateOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ 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"updateOrganizationNacClientsGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationNacClientsGroup(self, organizationId: str, groupId: str):
+ """
+ **Delete an existing client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "deleteOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationNacClientsOverview(self, organizationId: str):
+ """
+ **Get overview data for all known clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients-overview
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "overview"],
+ "operation": "getOrganizationNacClientsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/overview"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationNacClient(self, organizationId: str, clientId: str, mac: str, **kwargs):
+ """
+ **Update an existing client for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-client
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - mac (string): The MAC address of the client
+ - type (string): Type describes if the network client belongs to an individual user or corporate
+ - owner (string): The username of the owner of the client
+ - description (string): User provided description for the client
+ - uuid (string): Universally unique identifier of the client
+ - userDetails (array): List of users of this network client
+ - oui (object): Organizationally unique identifier assigned to a vendor of the client
+ - groups (object): Client group membership changes
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["BYOD", "corporate"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "updateOrganizationNacClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/{clientId}"
+
+ body_params = [
+ "type",
+ "owner",
+ "mac",
+ "description",
+ "uuid",
+ "userDetails",
+ "oui",
+ "groups",
+ ]
+ 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"updateOrganizationNacClient: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationNacDictionaries(self, organizationId: str):
+ """
+ **Get all NAC dictionaries**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionaries
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries"],
+ "operation": "getOrganizationNacDictionaries",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationNacDictionaryAttributes(self, organizationId: str, dictionaryId: str, **kwargs):
+ """
+ **Get all attributes by dictionary ID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionary-attributes
+
+ - organizationId (string): Organization ID
+ - dictionaryId (string): Dictionary ID
+ - networkIds (array): An optional list of network IDs to filter the 'enum' field. Only enum values applicable to the specified networks will be returned.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries", "attributes"],
+ "operation": "getOrganizationNacDictionaryAttributes",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ dictionaryId = urllib.parse.quote(str(dictionaryId), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries/{dictionaryId}/attributes"
+
+ 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"getOrganizationNacDictionaryAttributes: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacDictionaryAttributeValues(
+ self, organizationId: str, dictionaryId: str, attributeName: str, **kwargs
+ ):
+ """
+ **Search allowed values for a dictionary attribute**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionary-attribute-values
+
+ - organizationId (string): Organization ID
+ - dictionaryId (string): Dictionary ID
+ - attributeName (string): Attribute name
+ - search (string): Optional search string for contains-match filtering of allowed values
+ - networkIds (array): An optional list of network IDs to filter the allowed values.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries", "attributes", "values"],
+ "operation": "getOrganizationNacDictionaryAttributeValues",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ dictionaryId = urllib.parse.quote(str(dictionaryId), safe="")
+ attributeName = urllib.parse.quote(str(attributeName), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries/{dictionaryId}/attributes/{attributeName}/values"
+
+ query_params = [
+ "search",
+ "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"getOrganizationNacDictionaryAttributeValues: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacLicenseUsage(self, organizationId: str, startDate: str, **kwargs):
+ """
+ **Returns license usage data for a specific organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-license-usage
+
+ - organizationId (string): Organization ID
+ - startDate (string): Start date for the usage data in UTC timezone
+ - endDate (string): End date for the usage data in UTC timezone
+ - networkIds (array): List of locale and node group ids
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "license", "usage"],
+ "operation": "getOrganizationNacLicenseUsage",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/license/usage"
+
+ query_params = [
+ "startDate",
+ "endDate",
+ "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"getOrganizationNacLicenseUsage: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacSessionsHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the NAC Sessions for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-sessions-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 hour.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "sessions", "history"],
+ "operation": "getOrganizationNacSessionsHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/sessions/history"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationNacSessionsHistory: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationNacSessionDetails(self, organizationId: str, sessionId: str):
+ """
+ **Return the details of selected NAC Sessions**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-session-details
+
+ - organizationId (string): Organization ID
+ - sessionId (string): Session ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "sessions", "details"],
+ "operation": "getOrganizationNacSessionDetails",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ sessionId = urllib.parse.quote(str(sessionId), safe="")
+ resource = f"/organizations/{organizationId}/nac/sessions/{sessionId}/details"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/aio/api/networks.py b/meraki/aio/api/networks.py
index ffa0e04..63de730 100644
--- a/meraki/aio/api/networks.py
+++ b/meraki/aio/api/networks.py
@@ -886,6 +886,37 @@ def removeNetworkDevices(self, networkId: str, serial: str, **kwargs):
return self._session.post(metadata, resource, payload)
+ def updateNetworkDevicesSyslogServers(self, networkId: str, servers: list, **kwargs):
+ """
+ **Updates the syslog servers configuration for a network.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-devices-syslog-servers
+
+ - networkId (string): Network ID
+ - servers (array): A list of the syslog servers for this network; suggested maximum array size is 10
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["networks", "configure", "devices", "syslog", "servers"],
+ "operation": "updateNetworkDevicesSyslogServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/devices/syslog/servers"
+
+ body_params = [
+ "servers",
+ ]
+ 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"updateNetworkDevicesSyslogServers: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkEvents(self, networkId: str, total_pages=1, direction="prev", event_log_end_time=None, **kwargs):
"""
**List the events for the network**
@@ -1455,6 +1486,7 @@ def createNetworkFloorPlan(self, networkId: str, name: str, imageContents: str,
- topLeftCorner (object): The longitude and latitude of the top left corner of your floor plan.
- topRightCorner (object): The longitude and latitude of the top right corner of your floor plan.
- floorNumber (number): The floor number of the floors within the building
+ - buildingId (string): The ID of the building that this floor belongs to.
"""
kwargs.update(locals())
@@ -1474,6 +1506,7 @@ def createNetworkFloorPlan(self, networkId: str, name: str, imageContents: str,
"topLeftCorner",
"topRightCorner",
"floorNumber",
+ "buildingId",
"imageContents",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1670,6 +1703,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
- topLeftCorner (object): The longitude and latitude of the top left corner of your floor plan.
- topRightCorner (object): The longitude and latitude of the top right corner of your floor plan.
- floorNumber (number): The floor number of the floors within the building
+ - buildingId (string): The ID of the building that this floor belongs to.
- imageContents (string): The file contents (a base 64 encoded string) of your new image. Supported formats are PNG, GIF, and JPG. Note that all images are saved as PNG files, regardless of the format they are uploaded in. If you upload a new image, and you do NOT specify any new geolocation fields ('center, 'topLeftCorner', etc), the floor plan will be recentered with no rotation in order to maintain the aspect ratio of your new image.
"""
@@ -1691,6 +1725,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
"topLeftCorner",
"topRightCorner",
"floorNumber",
+ "buildingId",
"imageContents",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1918,6 +1953,106 @@ def getNetworkHealthAlerts(self, networkId: str):
return self._session.get(metadata, resource)
+ def getNetworkLocationScanning(self, networkId: str):
+ """
+ **Return scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-location-scanning
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning"],
+ "operation": "getNetworkLocationScanning",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkLocationScanning(self, networkId: str, **kwargs):
+ """
+ **Change scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning
+
+ - networkId (string): Network ID
+ - analyticsEnabled (boolean): Collect location and scanning analytics
+ - scanningApiEnabled (boolean): Enable push API for scanning events, analytics must be enabled
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning"],
+ "operation": "updateNetworkLocationScanning",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning"
+
+ body_params = [
+ "analyticsEnabled",
+ "scanningApiEnabled",
+ ]
+ 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"updateNetworkLocationScanning: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getNetworkLocationScanningHttpServers(self, networkId: str):
+ """
+ **Return list of scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-location-scanning-http-servers
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning", "httpServers"],
+ "operation": "getNetworkLocationScanningHttpServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning/httpServers"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkLocationScanningHttpServers(self, networkId: str, endpoints: list, **kwargs):
+ """
+ **Set the list of scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning-http-servers
+
+ - networkId (string): Network ID
+ - endpoints (array): A set of http server configurations
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning", "httpServers"],
+ "operation": "updateNetworkLocationScanningHttpServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning/httpServers"
+
+ body_params = [
+ "endpoints",
+ ]
+ 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"updateNetworkLocationScanningHttpServers: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkMerakiAuthUsers(self, networkId: str):
"""
**List the authorized users configured under Meraki Authentication for a network (splash guest or RADIUS users for a wireless network, or client VPN users for a MX network)**
@@ -2606,6 +2741,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
- remoteStatusPageEnabled (boolean): Enables / disables access to the device status page (http://[device's LAN IP]). Optional. Can only be set if localStatusPageEnabled is set to true
- localStatusPage (object): A hash of Local Status page(s)' authentication options applied to the Network.
- securePort (object): A hash of SecureConnect options applied to the Network.
+ - fips (object): A hash of FIPS options applied to the Network
- namedVlans (object): A hash of Named VLANs options applied to the Network.
"""
@@ -2623,6 +2759,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
"remoteStatusPageEnabled",
"localStatusPage",
"securePort",
+ "fips",
"namedVlans",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2635,6 +2772,93 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def createNetworkSitesBuilding(self, networkId: str, name: str, **kwargs):
+ """
+ **Create a new building**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-sites-building
+
+ - networkId (string): Network ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "createNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ 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"createNetworkSitesBuilding: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteNetworkSitesBuilding(self, networkId: str, buildingId: str):
+ """
+ **Delete a building**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "deleteNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ buildingId = urllib.parse.quote(str(buildingId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateNetworkSitesBuilding(self, networkId: str, buildingId: str, **kwargs):
+ """
+ **Update a building**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "updateNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ buildingId = urllib.parse.quote(str(buildingId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ 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"updateNetworkSitesBuilding: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSnmp(self, networkId: str):
"""
**Return the SNMP settings for a network**
@@ -2661,6 +2885,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())
@@ -2682,6 +2908,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}
@@ -2693,6 +2921,47 @@ def updateNetworkSnmp(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkSnmpTraps(self, networkId: str, **kwargs):
+ """
+ **Update the SNMP trap configuration for the specified network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-snmp-traps
+
+ - networkId (string): Network ID
+ - mode (string): SNMP trap protocol version
+ - receiver (object): Stores the port and address
+ - v2 (object): V2 mode
+ - v3 (object): V3 mode
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["disabled", "v1/v2c", "v3"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["networks", "configure", "snmp", "traps"],
+ "operation": "updateNetworkSnmpTraps",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/snmp/traps"
+
+ body_params = [
+ "mode",
+ "receiver",
+ "v2",
+ "v3",
+ ]
+ 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"updateNetworkSnmpTraps: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSplashLoginAttempts(self, networkId: str, **kwargs):
"""
**List the splash login attempts for a network**
@@ -3005,9 +3274,10 @@ def createNetworkVlanProfile(self, networkId: str, name: str, vlanNames: list, v
- vlanNames (array): An array of named VLANs
- vlanGroups (array): An array of VLAN groups
- iname (string): IName of the profile
+ - allowedVlans (string): The VLANs allowed on the VLAN profile. Only applicable to trunk ports. The given range must be inclusive of all named VLANs.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
"tags": ["networks", "configure", "vlanProfiles"],
@@ -3018,6 +3288,7 @@ def createNetworkVlanProfile(self, networkId: str, name: str, vlanNames: list, v
body_params = [
"name",
+ "allowedVlans",
"vlanNames",
"vlanGroups",
"iname",
@@ -3153,9 +3424,10 @@ def updateNetworkVlanProfile(self, networkId: str, iname: str, name: str, vlanNa
- name (string): Name of the profile, string length must be from 1 to 255 characters
- vlanNames (array): An array of named VLANs
- vlanGroups (array): An array of VLAN groups
+ - allowedVlans (string): The VLANs allowed on the VLAN profile. Only applicable to trunk ports. The given range must be inclusive of all named VLANs.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
"tags": ["networks", "configure", "vlanProfiles"],
@@ -3167,6 +3439,7 @@ def updateNetworkVlanProfile(self, networkId: str, iname: str, name: str, vlanNa
body_params = [
"name",
+ "allowedVlans",
"vlanNames",
"vlanGroups",
]
diff --git a/meraki/aio/api/organizations.py b/meraki/aio/api/organizations.py
index 5707656..30a71f7 100644
--- a/meraki/aio/api/organizations.py
+++ b/meraki/aio/api/organizations.py
@@ -1081,6 +1081,52 @@ def deleteOrganizationAlertsProfile(self, organizationId: str, alertConfigId: st
return self._session.delete(metadata, resource)
+ def getOrganizationApiRestProvisioningPipelines(self, organizationId: str, **kwargs):
+ """
+ **List pipeline IDs for the organization, with optional status and timespan filtering**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-rest-provisioning-pipelines
+
+ - organizationId (string): Organization ID
+ - status (string): If provided, filters pipelines by status. If omitted, pipelines of all statuses are returned.
+ - timespan (string): Created-at lookback for matching pipelines. Defaults to -2hours.
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["active", "error", "pending", "success"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+ if "timespan" in kwargs:
+ options = ["-1days", "-2hours", "-30days", "-7days"]
+ assert kwargs["timespan"] in options, (
+ f'''"timespan" cannot be "{kwargs["timespan"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "api", "rest", "provisioning", "pipelines"],
+ "operation": "getOrganizationApiRestProvisioningPipelines",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/api/rest/provisioning/pipelines"
+
+ query_params = [
+ "status",
+ "timespan",
+ ]
+ 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"getOrganizationApiRestProvisioningPipelines: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationApiRestProvisioningPipelinesJobs(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List pipeline jobs, with optional status filtering**
@@ -1367,6 +1413,154 @@ def getOrganizationApiRequestsOverviewResponseCodesByInterval(self, organization
return self._session.get(metadata, resource, params)
+ def getOrganizationApiRequestsResponseCodesHistoryByAdmin(self, organizationId: str, **kwargs):
+ """
+ **Lists API request response codes and their counts aggregated by admin**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-admin
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byAdmin"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByAdmin",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byAdmin"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByAdmin: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryByApplication(self, organizationId: str, **kwargs):
+ """
+ **Lists API request response codes and their counts aggregated by application**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-application
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byApplication"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byApplication"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryByOperation(self, organizationId: str, **kwargs):
+ """
+ **Aggregates API usage data by operationId**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-operation
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byOperation"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByOperation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byOperation"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByOperation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryBySourceIp(self, organizationId: str, **kwargs):
+ """
+ **Aggregates API usage by source ip**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-source-ip
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "bySourceIp"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryBySourceIp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/bySourceIp"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryBySourceIp: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationAssuranceAlerts(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return all health alerts for an organization**
@@ -1906,124 +2100,1335 @@ def getOrganizationAssuranceAlert(self, organizationId: str, id: str):
return self._session.get(metadata, resource)
- def getOrganizationBrandingPolicies(self, organizationId: str):
+ def getOrganizationAssuranceClientsConnectedCountHistory(self, organizationId: str, networkId: str, **kwargs):
"""
- **List the branding policies of an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies
+ **Return combined wireless and wired connected client counts over time for a network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-connected-count-history
- organizationId (string): Organization ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "brandingPolicies"],
- "operation": "getOrganizationBrandingPolicies",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies"
-
- return self._session.get(metadata, resource)
-
- def createOrganizationBrandingPolicy(self, organizationId: str, name: str, **kwargs):
- """
- **Add a new branding policy to an organization**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-branding-policy
-
- - organizationId (string): Organization ID
- - name (string): Name of the Dashboard branding policy.
- - enabled (boolean): Boolean indicating whether this policy is enabled.
- - adminSettings (object): Settings for describing which kinds of admins this policy applies to.
- - helpSettings (object): Settings for describing the modifications to various Help page features. Each property in this object accepts one of
- 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show
- the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on
- Dashboard; see the documentation for each property to see the allowed values.
- Each property defaults to 'default or inherit' when not provided.
- - customLogo (object): Properties describing the custom logo attached to the branding policy.
+ - networkId (string): Network ID to query.
+ - 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.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600. The default is 600. Interval is calculated if time params are provided.
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "brandingPolicies"],
- "operation": "createOrganizationBrandingPolicy",
+ "tags": ["organizations", "monitor", "clients", "connectedCountHistory"],
+ "operation": "getOrganizationAssuranceClientsConnectedCountHistory",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies"
+ resource = f"/organizations/{organizationId}/assurance/clients/connectedCountHistory"
- body_params = [
- "name",
- "enabled",
- "adminSettings",
- "helpSettings",
- "customLogo",
+ query_params = [
+ "networkId",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
if self._session._validate_kwargs:
- all_params = [] + body_params
+ 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"createOrganizationBrandingPolicy: ignoring unrecognized kwargs: {invalid}")
-
- return self._session.post(metadata, resource, payload)
-
- def getOrganizationBrandingPoliciesPriorities(self, organizationId: str):
- """
- **Return the branding policy IDs of an organization in priority order**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies-priorities
-
- - organizationId (string): Organization ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
- "operation": "getOrganizationBrandingPoliciesPriorities",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+ self._session._logger.warning(
+ f"getOrganizationAssuranceClientsConnectedCountHistory: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.get(metadata, resource)
+ return self._session.get(metadata, resource, params)
- def updateOrganizationBrandingPoliciesPriorities(self, organizationId: str, **kwargs):
+ def getOrganizationAssuranceClientsEvents(self, organizationId: str, clientId: str, networkId: str, **kwargs):
"""
- **Update the priority ordering of an organization's branding policies.**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-branding-policies-priorities
+ **Given a client, get all alerts and events for a given timespan**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-events
- organizationId (string): Organization ID
- - brandingPolicyIds (array): An ordered list of branding policy IDs that determines the priority order of how to apply the policies
-
+ - clientId (string): ID of client to query
+ - networkId (string): Network ID where client is connected
+ - filter (array): Optional parameter to filter by issue
+ - 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 less than or equal to 14 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
- "operation": "updateOrganizationBrandingPoliciesPriorities",
+ "tags": ["organizations", "configure", "clients", "events"],
+ "operation": "getOrganizationAssuranceClientsEvents",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+ resource = f"/organizations/{organizationId}/assurance/clients/events"
- body_params = [
- "brandingPolicyIds",
+ query_params = [
+ "filter",
+ "clientId",
+ "networkId",
+ "t0",
+ "t1",
+ "timespan",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "filter",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationBrandingPoliciesPriorities: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceClientsEvents: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def getOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId: str):
+ def getOrganizationAssuranceClientsEventsCorrelated(
+ self, organizationId: str, clientId: str, category: str, networkId: str, timestamp: str, **kwargs
+ ):
"""
- **Return a branding policy**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policy
+ **Given a client, category, and timespan, return events that have a close connection to each other.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-events-correlated
- organizationId (string): Organization ID
- - brandingPolicyId (string): Branding policy ID
+ - clientId (string): Client ID
+ - category (string): Category of events
+ - networkId (string): Network used by the client
+ - timestamp (string): Timestamp for the event
+ - lookback (integer): Amount of time in minutes to look back
+ - lookforward (integer): Amount of time in minutes to look forwards
+ """
+
+ kwargs.update(locals())
+
+ if "category" in kwargs:
+ options = ["application", "association", "authentication", "dhcp", "dns"]
+ assert kwargs["category"] in options, (
+ f'''"category" cannot be "{kwargs["category"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "events", "correlated"],
+ "operation": "getOrganizationAssuranceClientsEventsCorrelated",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/events/correlated"
+
+ query_params = [
+ "clientId",
+ "category",
+ "networkId",
+ "timestamp",
+ "lookback",
+ "lookforward",
+ ]
+ 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"getOrganizationAssuranceClientsEventsCorrelated: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceClientsTopologyCurrent(self, organizationId: str, clientId: str, networkId: str, **kwargs):
+ """
+ **Given a client, return current topology**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-topology-current
+
+ - organizationId (string): Organization ID
+ - clientId (string): ID of client to query
+ - networkId (string): Network ID where client is connected
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "topology", "current"],
+ "operation": "getOrganizationAssuranceClientsTopologyCurrent",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/topology/current"
+
+ query_params = [
+ "clientId",
+ "networkId",
+ ]
+ 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"getOrganizationAssuranceClientsTopologyCurrent: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceClientsTopologyNew(self, organizationId: str, clientIds: list, networkId: str, **kwargs):
+ """
+ **Given a client, return current topology**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-topology-new
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of IDs for client retrieval for a given network. Limited to 1 client for now
+ - networkId (string): Network ID where client is connected
+ - timestamp (string): Timestamp for client topology path
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "topology", "new"],
+ "operation": "getOrganizationAssuranceClientsTopologyNew",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/topology/new"
+
+ query_params = [
+ "clientIds",
+ "networkId",
+ "timestamp",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clientIds",
+ ]
+ 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"getOrganizationAssuranceClientsTopologyNew: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ """
+ **Returns counts of online, offline, and recovered devices by product type, along with offline intervals for impacted devices in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-devices-statuses-overview
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - 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 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
+ "operation": "getOrganizationAssuranceDevicesStatusesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/devices/statuses/overview"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceFetchTableQuery(self, organizationId: str, tableName: str, **kwargs):
+ """
+ **Returns the table data for a given timespan**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-fetch-table-query
+
+ - organizationId (string): Organization ID
+ - tableName (string): The table from which we want to get data
+ - t0 (string): The beginning of the timespan for the data.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 365 days, 5 hours, 49 minutes, and 12 seconds. The default is 30 days, 10 hours, 29 minutes, and 6 seconds.
+ - userEmail (string): The user email for whom we want to calculate lookback
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "fetchTableQuery"],
+ "operation": "getOrganizationAssuranceFetchTableQuery",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/fetchTableQuery"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "tableName",
+ "userEmail",
+ ]
+ 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"getOrganizationAssuranceFetchTableQuery: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServer(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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", "networkServices", "serverHealth", "byServer"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServer"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server and by interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-by-interval
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networkServices", "serverHealth", "byServer", "byInterval"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServer/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerType(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-type
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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", "networkServices", "serverHealth", "byServerType"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServerType"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server type and by interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-type-by-interval
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networkServices", "serverHealth", "byServerType", "byInterval"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServerType/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def checkupOrganizationAssuranceOptimization(self, organizationId: str, **kwargs):
+ """
+ **Returns an array of checkup results for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!checkup-organization-assurance-optimization
+
+ - organizationId (string): Organization ID
+ - forceRefresh (boolean): Optional parameter to reassess best practices
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "optimization"],
+ "operation": "checkupOrganizationAssuranceOptimization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/optimization/checkup"
+
+ query_params = [
+ "forceRefresh",
+ ]
+ 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"checkupOrganizationAssuranceOptimization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceOptimizationCheckupByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns an array of checkup results for the networks**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-optimization-checkup-by-network
+
+ - 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 - 20. Default is 7.
+ - 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 parameter to filter checkups by Network Id
+ - forceRefresh (boolean): Optional parameter to reassess best practices
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "optimization", "checkup", "byNetwork"],
+ "operation": "getOrganizationAssuranceOptimizationCheckupByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/optimization/checkup/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "forceRefresh",
+ ]
+ 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"getOrganizationAssuranceOptimizationCheckupByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceProductAnnouncements(self, organizationId: str, **kwargs):
+ """
+ **Gets relevant product announcements for a user**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-product-announcements
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 365 days, 5 hours, 49 minutes, and 12 seconds. The default is 91 days, 7 hours, 27 minutes, and 18 seconds.
+ - onlyRelevant (boolean): Limits product announcements that are considered relevant to this user when true
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "productAnnouncements"],
+ "operation": "getOrganizationAssuranceProductAnnouncements",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/productAnnouncements"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "onlyRelevant",
+ ]
+ 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"getOrganizationAssuranceProductAnnouncements: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceScores(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get network health scores for a list of networks.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-scores
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
+ - 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 2 hours and be less than or equal to 14 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "scores"],
+ "operation": "getOrganizationAssuranceScores",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/scores"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceScores: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceThousandEyesApplications(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Get a list of Thousand Eyes applications with their alerts.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-thousand-eyes-applications
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - clientId (string): Filter results by client.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "thousandEyes", "applications"],
+ "operation": "getOrganizationAssuranceThousandEyesApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/thousandEyes/applications"
+
+ query_params = [
+ "networkIds",
+ "clientId",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceThousandEyesApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wired connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network
+
+ - 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
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "wired", "experience", "successfulConnections", "byNetwork"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarizes wired connection successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-by-client
+
+ - 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", "byClient"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byClient"
+
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wired connection successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-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
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "wired", "experience", "successfulConnections", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval(self, organizationId: str, **kwargs):
+ """
+ **Time-series of wired connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-by-interval
+
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "wired", "experience", "successfulConnections", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval: 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**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-workflows
+
+ - 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 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.
+ - networkIds (array): Optional parameter to filter by network ID
+ - types (array): Optional parameter to filter workflows by types
+ - categories (array): Optional parameter to filter workflows by categories
+ - scopeTypes (array): Optional parameter to filter workflows by scope types
+ - networkTags (array): Optional parameter to filter workflows by network tags
+ - clientTags (array): Optional parameter to filter workflows by client tags
+ - nodeTags (array): Optional parameter to filter workflows by node tags
+ - state (string): Optional parameter to filter workflows by state
+ - tsStart (string): Start time to filter workflows
+ - tsEnd (string): End time to filter workflows
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "workflows"],
+ "operation": "getOrganizationAssuranceWorkflows",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/workflows"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ "networkIds",
+ "types",
+ "categories",
+ "scopeTypes",
+ "networkTags",
+ "clientTags",
+ "nodeTags",
+ "state",
+ "tsStart",
+ "tsEnd",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "types",
+ "categories",
+ "scopeTypes",
+ "networkTags",
+ "clientTags",
+ "nodeTags",
+ ]
+ 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"getOrganizationAssuranceWorkflows: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAuthRadiusServers(self, organizationId: str):
+ """
+ **List the organization-wide RADIUS servers in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-servers
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "getOrganizationAuthRadiusServers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationAuthRadiusServer(self, organizationId: str, address: str, secret: str, **kwargs):
+ """
+ **Add an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - address (string): The IP address or FQDN of the RADIUS server
+ - secret (string): Shared secret of the RADIUS server
+ - name (string): The name of the RADIUS server
+ - modes (array): Available server modes
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "createOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ 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"createOrganizationAuthRadiusServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationAuthRadiusServersAssignments(self, organizationId: str):
+ """
+ **Return list of network and policies that organization-wide RADIUS servers are bing used**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-servers-assignments
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers", "assignments"],
+ "operation": "getOrganizationAuthRadiusServersAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/assignments"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationAuthRadiusServer(self, organizationId: str, serverId: str):
+ """
+ **Return an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "getOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationAuthRadiusServer(self, organizationId: str, serverId: str, **kwargs):
+ """
+ **Update an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ - name (string): The name of the RADIUS server
+ - address (string): The IP address or FQDN of the RADIUS server
+ - modes (array): Available server modes
+ - secret (string): Shared secret of the RADIUS server
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "updateOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ 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"updateOrganizationAuthRadiusServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationAuthRadiusServer(self, organizationId: str, serverId: str):
+ """
+ **Delete an organization-wide RADIUS server from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "deleteOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationBrandingPolicies(self, organizationId: str):
+ """
+ **List the branding policies of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies"],
+ "operation": "getOrganizationBrandingPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationBrandingPolicy(self, organizationId: str, name: str, **kwargs):
+ """
+ **Add a new branding policy to an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-branding-policy
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the Dashboard branding policy.
+ - enabled (boolean): Boolean indicating whether this policy is enabled.
+ - adminSettings (object): Settings for describing which kinds of admins this policy applies to.
+ - helpSettings (object): Settings for describing the modifications to various Help page features. Each property in this object accepts one of
+ 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show
+ the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on
+ Dashboard; see the documentation for each property to see the allowed values.
+ Each property defaults to 'default or inherit' when not provided.
+ - customLogo (object): Properties describing the custom logo attached to the branding policy.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies"],
+ "operation": "createOrganizationBrandingPolicy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies"
+
+ body_params = [
+ "name",
+ "enabled",
+ "adminSettings",
+ "helpSettings",
+ "customLogo",
+ ]
+ 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"createOrganizationBrandingPolicy: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationBrandingPoliciesPriorities(self, organizationId: str):
+ """
+ **Return the branding policy IDs of an organization in priority order**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies-priorities
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
+ "operation": "getOrganizationBrandingPoliciesPriorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationBrandingPoliciesPriorities(self, organizationId: str, **kwargs):
+ """
+ **Update the priority ordering of an organization's branding policies.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-branding-policies-priorities
+
+ - organizationId (string): Organization ID
+ - brandingPolicyIds (array): An ordered list of branding policy IDs that determines the priority order of how to apply the policies
+
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
+ "operation": "updateOrganizationBrandingPoliciesPriorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+
+ body_params = [
+ "brandingPolicyIds",
+ ]
+ 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"updateOrganizationBrandingPoliciesPriorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId: str):
+ """
+ **Return a branding policy**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policy
+
+ - organizationId (string): Organization ID
+ - brandingPolicyId (string): Branding policy ID
"""
metadata = {
@@ -2100,6 +3505,191 @@ def deleteOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId
return self._session.delete(metadata, resource)
+ def getOrganizationCertificates(self, organizationId: str, **kwargs):
+ """
+ **Gets all or specific certificates for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificates
+
+ - organizationId (string): Organization ID
+ - certificateIds (array): List of ids for specific certificate retrieval
+ - certManagedBy (array): List of cert managed by types
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "getOrganizationCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates"
+
+ query_params = [
+ "certificateIds",
+ "certManagedBy",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateIds",
+ "certManagedBy",
+ ]
+ 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"getOrganizationCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def importOrganizationCertificates(self, organizationId: str, managedBy: str, contents: str, description: str, **kwargs):
+ """
+ **Import certificate for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!import-organization-certificates
+
+ - organizationId (string): Organization ID
+ - managedBy (string): Certificate managed by type [system_manager, mr, encrypted_syslog]
+ - contents (string): Certificate content in valid PEM format
+ - description (string): Certificate description
+ """
+
+ kwargs = locals()
+
+ if "managedBy" in kwargs:
+ options = ["encrypted_syslog", "mr", "system_manager"]
+ assert kwargs["managedBy"] in options, (
+ f'''"managedBy" cannot be "{kwargs["managedBy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "importOrganizationCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/import"
+
+ body_params = [
+ "managedBy",
+ "contents",
+ "description",
+ ]
+ 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"importOrganizationCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationCertificatesMerakiAuthContents(self, organizationId: str):
+ """
+ **Download the public RADIUS certificate.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificates-meraki-auth-contents
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "monitor", "certificates", "merakiAuth", "contents"],
+ "operation": "getOrganizationCertificatesMerakiAuthContents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/merakiAuth/contents"
+
+ return self._session.get(metadata, resource)
+
+ def deleteOrganizationCertificate(self, organizationId: str, certificateId: str):
+ """
+ **Delete a certificate for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "deleteOrganizationCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationCertificate(self, organizationId: str, certificateId: str, **kwargs):
+ """
+ **Update a certificate's description for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - description (string): Description of a certificate that already exist in your org
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "updateOrganizationCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}"
+
+ body_params = [
+ "description",
+ ]
+ 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"updateOrganizationCertificate: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationCertificateContents(self, organizationId: str, certificateId: str, **kwargs):
+ """
+ **Download the trusted certificate by certificate id.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificate-contents
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - chainId (string): chainId that represent which certificate chain is being requested
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates", "contents"],
+ "operation": "getOrganizationCertificateContents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}/contents"
+
+ query_params = [
+ "chainId",
+ ]
+ 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"getOrganizationCertificateContents: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def claimIntoOrganization(self, organizationId: str, **kwargs):
"""
**Claim a list of devices, licenses, and/or orders into an organization inventory**
@@ -2143,6 +3733,7 @@ def getOrganizationClientsBandwidthUsageHistory(self, organizationId: str, **kwa
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
- t0 (string): The beginning of the timespan for the data.
@@ -2162,6 +3753,7 @@ def getOrganizationClientsBandwidthUsageHistory(self, organizationId: str, **kwa
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"ssidName",
"usageUplink",
"t0",
@@ -2285,6 +3877,23 @@ def cloneOrganization(self, organizationId: str, name: str, **kwargs):
return self._session.post(metadata, resource, payload)
+ def getOrganizationCloudConnectivityRequirements(self, organizationId: str):
+ """
+ **List of source/destination traffic rules**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-cloud-connectivity-requirements
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "monitor", "cloud", "connectivity", "requirements"],
+ "operation": "getOrganizationCloudConnectivityRequirements",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/cloud/connectivity/requirements"
+
+ return self._session.get(metadata, resource)
+
def getOrganizationConfigTemplates(self, organizationId: str):
"""
**List the configuration templates for this organization**
@@ -2630,10 +4239,26 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
- productTypes (array): Optional parameter to filter device availabilities history by device product types
- networkIds (array): Optional parameter to filter device availabilities history by network IDs
- statuses (array): Optional parameter to filter device availabilities history by device statuses
+ - categories (array): Optional parameter to filter device availabilities history by categories of status, reboot, or upgrade
+ - networkTags (array): Optional parameter to filter device availabilities history by network tags. The filtering is case-sensitive. If tags are included, 'networkTagsFilterType' should also be included (see below).
+ - networkTagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return networks which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
+ - deviceTags (array): Optional parameter to filter device availabilities history by device tags. The filtering is case-sensitive. If tags are included, 'deviceTagsFilterType' should also be included (see below).
+ - deviceTagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
"""
kwargs.update(locals())
+ if "networkTagsFilterType" in kwargs:
+ options = ["withAllTags", "withAnyTags"]
+ assert kwargs["networkTagsFilterType"] in options, (
+ f'''"networkTagsFilterType" cannot be "{kwargs["networkTagsFilterType"]}", & must be set to one of: {options}'''
+ )
+ if "deviceTagsFilterType" in kwargs:
+ options = ["withAllTags", "withAnyTags"]
+ assert kwargs["deviceTagsFilterType"] in options, (
+ f'''"deviceTagsFilterType" cannot be "{kwargs["deviceTagsFilterType"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
"tags": ["organizations", "monitor", "devices", "availabilities", "changeHistory"],
"operation": "getOrganizationDevicesAvailabilitiesChangeHistory",
@@ -2648,18 +4273,142 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
"t0",
"t1",
"timespan",
- "serials",
- "productTypes",
- "networkIds",
- "statuses",
+ "serials",
+ "productTypes",
+ "networkIds",
+ "statuses",
+ "categories",
+ "networkTags",
+ "networkTagsFilterType",
+ "deviceTags",
+ "deviceTagsFilterType",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "productTypes",
+ "networkIds",
+ "statuses",
+ "categories",
+ "networkTags",
+ "deviceTags",
+ ]
+ 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"getOrganizationDevicesAvailabilitiesChangeHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesBootsHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns the history of device boots in reverse chronological order (most recent first)**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-boots-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 730 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 730 days.
+ - serials (array): Optional parameter to filter device by device serial numbers. This filter uses multiple exact matches.
+ - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - mostRecentPerDevice (boolean): If true, only the most recent boot for each device is returned.
+ - 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'descending'.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "boots", "history"],
+ "operation": "getOrganizationDevicesBootsHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/boots/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "serials",
+ "productTypes",
+ "mostRecentPerDevice",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "productTypes",
+ ]
+ 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"getOrganizationDevicesBootsHistory: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesBootsOverviewByDevice(self, organizationId: str, **kwargs):
+ """
+ **Summarizes device reboots across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-boots-overview-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "boots", "overview", "byDevice"],
+ "operation": "getOrganizationDevicesBootsOverviewByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/boots/overview/byDevice"
+
+ query_params = [
+ "networkIds",
+ "productTypes",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "serials",
- "productTypes",
"networkIds",
- "statuses",
+ "productTypes",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -2671,10 +4420,10 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
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"getOrganizationDevicesAvailabilitiesChangeHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationDevicesBootsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
def getOrganizationDevicesCellularDataDevices(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
@@ -3274,6 +5023,147 @@ def getOrganizationDevicesCellularUplinksTowersByDevice(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationDevicesCliConfigs(self, organizationId: str, serials: list, total_pages=1, direction="next", **kwargs):
+ """
+ **Retrieve the history of running configurations for IOS-XE devices**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-cli-configs
+
+ - organizationId (string): Organization ID
+ - serials (array): Device serials to include in the response
+ - 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 - 20. Default is 20.
+ - 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.
+ - isFavorite (boolean): Whether to return only favorited configs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "cli", "configs"],
+ "operation": "getOrganizationDevicesCliConfigs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "serials",
+ "isFavorite",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationDevicesCliConfigs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesCliConfigsDetails(
+ self, organizationId: str, configId: str, serials: list, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Retrieve the full contents for a given IOS-XE device configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-cli-configs-details
+
+ - organizationId (string): Organization ID
+ - configId (string): Config ID
+ - serials (array): Device serials to use when locating the config record
+ - 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 - 5. Default is 5.
+ - 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", "cli", "configs", "details"],
+ "operation": "getOrganizationDevicesCliConfigsDetails",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs/details"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configId",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationDevicesCliConfigsDetails: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getDeviceConfigRestores(self, organizationId: str, serials: list, **kwargs):
+ """
+ **Return restore status entries for IOS-XE device configurations**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-config-restores
+
+ - organizationId (string): Organization ID
+ - serials (array): Device serial numbers
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "cli", "configs", "restores"],
+ "operation": "getDeviceConfigRestores",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs/restores"
+
+ query_params = [
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getDeviceConfigRestores: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def createOrganizationDevicesControllerMigration(self, organizationId: str, serials: list, target: str, **kwargs):
"""
**Migrate devices to another controller or management mode**
@@ -3408,6 +5298,56 @@ def bulkUpdateOrganizationDevicesDetails(self, organizationId: str, serials: lis
return self._session.post(metadata, resource, payload)
+ def getOrganizationDevicesMemoryByDevice(self, organizationId: str, networkIds: list, productTypes: list, **kwargs):
+ """
+ **Summarizes memory status across devices of a given network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-memory-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - productTypes (array): Parameter to filter device availabilities by device product types. This filter uses multiple exact matches.
+ - usageThreshold (number): Threshold of device memory utilization expressed as a percent. Filters out all devices below this value.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "memory", "byDevice"],
+ "operation": "getOrganizationDevicesMemoryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/memory/byDevice"
+
+ query_params = [
+ "networkIds",
+ "productTypes",
+ "usageThreshold",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "productTypes",
+ ]
+ 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"getOrganizationDevicesMemoryByDevice: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationDevicesOverviewByModel(self, organizationId: str, **kwargs):
"""
**Lists the count for each device model**
@@ -3742,6 +5682,65 @@ def stopOrganizationDevicesPacketCaptureCapture(self, organizationId: str, captu
return self._session.post(metadata, resource, payload)
+ def getOrganizationDevicesPacketCaptureOpportunisticByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the Opportunistic Pcap settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-packet-capture-opportunistic-by-network
+
+ - 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
+ - networkIds (array): Optional parameter to filter results by network.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'descending'.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCapture", "opportunistic", "byNetwork"],
+ "operation": "getOrganizationDevicesPacketCaptureOpportunisticByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCapture/opportunistic/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ ]
+ 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"getOrganizationDevicesPacketCaptureOpportunisticByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationDevicesPacketCaptureSchedules(self, organizationId: str, **kwargs):
"""
**List the Packet Capture Schedules**
@@ -3791,36 +5790,69 @@ def getOrganizationDevicesPacketCaptureSchedules(self, organizationId: str, **kw
def createOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, devices: list, **kwargs):
"""
- **Create a schedule for packet capture**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-devices-packet-capture-schedule
+ **Create a schedule for packet capture**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-devices-packet-capture-schedule
+
+ - organizationId (string): Organization ID
+ - devices (array): device details
+ - name (string): Name of the packet capture file
+ - notes (string): Reason for capture
+ - duration (integer): Duration of the capture in seconds
+ - filterExpression (string): Filter expression for the capture
+ - enabled (boolean): Enable or disable the schedule
+ - schedule (object): Schedule details
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCapture", "schedules"],
+ "operation": "createOrganizationDevicesPacketCaptureSchedule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCapture/schedules"
+
+ body_params = [
+ "devices",
+ "name",
+ "notes",
+ "duration",
+ "filterExpression",
+ "enabled",
+ "schedule",
+ ]
+ 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"createOrganizationDevicesPacketCaptureSchedule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationDevicesPacketCaptureSchedulesDelete(self, organizationId: str, scheduleIds: list, **kwargs):
+ """
+ **Delete packet capture schedules**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-packet-capture-schedules-delete
- organizationId (string): Organization ID
- - devices (array): device details
- - name (string): Name of the packet capture file
- - notes (string): Reason for capture
- - duration (integer): Duration of the capture in seconds
- - filterExpression (string): Filter expression for the capture
- - enabled (boolean): Enable or disable the schedule
- - schedule (object): Schedule details
+ - scheduleIds (array): Delete the packet capture schedules of the specified schedule ids
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
"tags": ["organizations", "configure", "devices", "packetCapture", "schedules"],
- "operation": "createOrganizationDevicesPacketCaptureSchedule",
+ "operation": "bulkOrganizationDevicesPacketCaptureSchedulesDelete",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/packetCapture/schedules"
+ resource = f"/organizations/{organizationId}/devices/packetCapture/schedules/bulkDelete"
body_params = [
- "devices",
- "name",
- "notes",
- "duration",
- "filterExpression",
- "enabled",
- "schedule",
+ "scheduleIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -3829,7 +5861,7 @@ def createOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, de
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"createOrganizationDevicesPacketCaptureSchedule: ignoring unrecognized kwargs: {invalid}"
+ f"bulkOrganizationDevicesPacketCaptureSchedulesDelete: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
@@ -3935,6 +5967,119 @@ def deleteOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, sc
return self._session.delete(metadata, resource)
+ def tasksOrganizationDevicesPacketCapture(self, organizationId: str, packetId: str, task: str, **kwargs):
+ """
+ **Enqueues a task for a specific packet capture**
+ https://developer.cisco.com/meraki/api-v1/#!tasks-organization-devices-packet-capture
+
+ - organizationId (string): Organization ID
+ - packetId (string): Packet ID
+ - task (string): Type of task to enqueue. It can be one of: ["analysis", "reasoning", "summary", "highlights", "title", "flow"]
+ - networkId (string): Parameter to validate authorization by network access
+ """
+
+ kwargs.update(locals())
+
+ if "task" in kwargs:
+ options = ["analysis", "flow", "highlights", "reasoning", "summary", "title"]
+ assert kwargs["task"] in options, f'''"task" cannot be "{kwargs["task"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCaptures"],
+ "operation": "tasksOrganizationDevicesPacketCapture",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ packetId = urllib.parse.quote(str(packetId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCaptures/{packetId}/tasks"
+
+ body_params = [
+ "networkId",
+ "task",
+ ]
+ 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"tasksOrganizationDevicesPacketCapture: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationDevicesPacketCaptureTask(self, organizationId: str, packetId: str, id: str, **kwargs):
+ """
+ **Retrieves packet capture analysis result for a specific packet capture task.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-packet-capture-task
+
+ - organizationId (string): Organization ID
+ - packetId (string): Packet ID
+ - id (string): ID
+ - networkId (string): Optional parameter to validate authorization by network access
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCaptures", "tasks"],
+ "operation": "getOrganizationDevicesPacketCaptureTask",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ packetId = urllib.parse.quote(str(packetId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCaptures/{packetId}/tasks/{id}"
+
+ query_params = [
+ "networkId",
+ ]
+ 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"getOrganizationDevicesPacketCaptureTask: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def bulkOrganizationDevicesPlacementPositionsUpdate(self, organizationId: str, serials: list, **kwargs):
+ """
+ **Bulk update the attributes related to positions for provided devices**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-placement-positions-update
+
+ - organizationId (string): Organization ID
+ - serials (array): List of device serials on a floor plan to update
+ - height (object): Height of the devices on the floor plan
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "placement", "positions"],
+ "operation": "bulkOrganizationDevicesPlacementPositionsUpdate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/placement/positions/bulkUpdate"
+
+ body_params = [
+ "serials",
+ "height",
+ ]
+ 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"bulkOrganizationDevicesPlacementPositionsUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getOrganizationDevicesPowerModulesStatusesByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
@@ -4076,6 +6221,128 @@ def getOrganizationDevicesProvisioningStatuses(self, organizationId: str, total_
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns details about software updates for networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-software-updates-overviews-by-network
+
+ - 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 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.
+ - sortKey (string): Specify key to order the list of networks.
+ - configSource (string): Limit the list of networks to those that contain devices with the specified config source
+ - networkIds (array): Limit the list of networks to those that match the provided network IDs
+ - networkGroupIds (array): Limit the list of networks to those that belong to one of the provided network group IDs.
+ - productTypes (array): Limit the list of product types included for each network
+ - networkName (string): Limit the list of networks to those whose name contains the given search string.
+ - versionIds (array): Limit the list of networks to those that are currently on one of the provided version IDs.
+ - firmwareStatus (string): Limit the list of networks to those whose current firmware version has the specified end-of-support status.
+ - firmwareType (string): Limit the list of networks to those whose current firmware version has the specified release type.
+ - upgradeDependencyIds (array): Limit the list of networks to those that belong to one of the provided upgrade dependencies.
+ - upgradeAvailable (boolean): Limit the list of networks by upgrade availability.
+ - templateRole (string): Limit the list of networks by config template role: non-template only, templates only, or templates and bound networks.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = [
+ "availability",
+ "currentVersion",
+ "firmwareStatus",
+ "firmwareType",
+ "lastUpgrade",
+ "networkGroup",
+ "networkName",
+ "networkType",
+ "scheduledTime",
+ "scheduledUpgradeVersion",
+ "upgradeDependency",
+ ]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+ if "configSource" in kwargs:
+ options = ["cloud", "local"]
+ assert kwargs["configSource"] in options, (
+ f'''"configSource" cannot be "{kwargs["configSource"]}", & must be set to one of: {options}'''
+ )
+ if "firmwareStatus" in kwargs:
+ options = ["critical", "good", "warning"]
+ assert kwargs["firmwareStatus"] in options, (
+ f'''"firmwareStatus" cannot be "{kwargs["firmwareStatus"]}", & must be set to one of: {options}'''
+ )
+ if "firmwareType" in kwargs:
+ options = ["beta", "candidate", "stable"]
+ assert kwargs["firmwareType"] in options, (
+ f'''"firmwareType" cannot be "{kwargs["firmwareType"]}", & must be set to one of: {options}'''
+ )
+ if "templateRole" in kwargs:
+ options = ["bound-templates", "non-template", "templates"]
+ assert kwargs["templateRole"] in options, (
+ f'''"templateRole" cannot be "{kwargs["templateRole"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "software", "updates", "overviews", "byNetwork"],
+ "operation": "getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/software/updates/overviews/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ "sortKey",
+ "configSource",
+ "networkIds",
+ "networkGroupIds",
+ "productTypes",
+ "networkName",
+ "versionIds",
+ "firmwareStatus",
+ "firmwareType",
+ "upgradeDependencyIds",
+ "upgradeAvailable",
+ "templateRole",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "productTypes",
+ "versionIds",
+ "upgradeDependencyIds",
+ ]
+ 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"getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork: 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**
@@ -4094,6 +6361,7 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
- models (array): Optional parameter to filter devices by models.
- tags (array): An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below).
- tagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
+ - configurationUpdatedAfter (string): Optional parameter to filter results by whether or not the device's configuration has been updated after the given timestamp
"""
kwargs.update(locals())
@@ -4105,33 +6373,125 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
)
metadata = {
- "tags": ["organizations", "monitor", "devices", "statuses"],
- "operation": "getOrganizationDevicesStatuses",
+ "tags": ["organizations", "monitor", "devices", "statuses"],
+ "operation": "getOrganizationDevicesStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "statuses",
+ "productTypes",
+ "models",
+ "tags",
+ "tagsFilterType",
+ "configurationUpdatedAfter",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "statuses",
+ "productTypes",
+ "models",
+ "tags",
+ ]
+ 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"getOrganizationDevicesStatuses: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ """
+ **Return an overview of current device statuses**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-statuses-overview
+
+ - organizationId (string): Organization ID
+ - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - networkIds (array): An optional parameter to filter device statuses by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
+ "operation": "getOrganizationDevicesStatusesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/statuses/overview"
+
+ query_params = [
+ "productTypes",
+ "networkIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "productTypes",
+ "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"getOrganizationDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationDevicesSyslogServersByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns syslog servers configured for the networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-syslog-servers-by-network
+
+ - 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 10.
+ - 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): IDs of the networks for which to fetch syslog servers; suggested maximum array size is 100
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "syslog", "servers", "byNetwork"],
+ "operation": "getOrganizationDevicesSyslogServersByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/statuses"
+ resource = f"/organizations/{organizationId}/devices/syslog/servers/byNetwork"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
- "serials",
- "statuses",
- "productTypes",
- "models",
- "tags",
- "tagsFilterType",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "serials",
- "statuses",
- "productTypes",
- "models",
- "tags",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4142,37 +6502,46 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
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"getOrganizationDevicesStatuses: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationDevicesSyslogServersByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ def getOrganizationDevicesSyslogServersRolesByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Return an overview of current device statuses**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-statuses-overview
+ **Returns roles that can be assigned to a syslog server for a given network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-syslog-servers-roles-by-network
- organizationId (string): Organization ID
- - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
- - networkIds (array): An optional parameter to filter device statuses by network.
+ - 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 10.
+ - 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): IDs of the networks for which to fetch valid syslog server roles; suggested maximum array size is 100
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
- "operation": "getOrganizationDevicesStatusesOverview",
+ "tags": ["organizations", "configure", "devices", "syslog", "servers", "roles", "byNetwork"],
+ "operation": "getOrganizationDevicesSyslogServersRolesByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/statuses/overview"
+ resource = f"/organizations/{organizationId}/devices/syslog/servers/roles/byNetwork"
query_params = [
- "productTypes",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
"networkIds",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "productTypes",
"networkIds",
]
for k, v in kwargs.items():
@@ -4185,10 +6554,10 @@ def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
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"getOrganizationDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationDevicesSyslogServersRolesByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
def getOrganizationDevicesSystemMemoryUsageHistoryByInterval(
self, organizationId: str, total_pages=1, direction="next", **kwargs
@@ -4408,22 +6777,285 @@ def createOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, shortN
https://developer.cisco.com/meraki/api-v1/#!create-organization-early-access-features-opt-in
- organizationId (string): Organization ID
- - shortName (string): Short name of the early access feature
- - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ - shortName (string): Short name of the early access feature
+ - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "createOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns"
+
+ body_params = [
+ "shortName",
+ "limitScopeToNetworks",
+ ]
+ 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"createOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ """
+ **Show an early access feature opt-in for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "getOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str, **kwargs):
+ """
+ **Update an early access feature opt-in for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "updateOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ body_params = [
+ "limitScopeToNetworks",
+ ]
+ 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"updateOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ """
+ **Delete an early access feature opt-in**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "deleteOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationExtensionsSdwanmanagerInterconnect(
+ self, organizationId: str, interconnectId: str, name: str, status: str, **kwargs
+ ):
+ """
+ **Update name and status of an Interconnect**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-sdwanmanager-interconnect
+
+ - organizationId (string): Organization ID
+ - interconnectId (string): Interconnect ID
+ - name (string): Interconnect name
+ - status (string): Interconnect status
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "sdwanmanager", "interconnects"],
+ "operation": "updateOrganizationExtensionsSdwanmanagerInterconnect",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ interconnectId = urllib.parse.quote(str(interconnectId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/sdwanmanager/interconnects/{interconnectId}"
+
+ body_params = [
+ "name",
+ "status",
+ ]
+ 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"updateOrganizationExtensionsSdwanmanagerInterconnect: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationExtensionsThousandEyesNetworks(self, organizationId: str):
+ """
+ **List the ThousandEyes agent configurations under this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-networks
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "getOrganizationExtensionsThousandEyesNetworks",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, enabled: bool, networkId: str, **kwargs):
+ """
+ **Add a ThousandEyes agent for this network**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
+ - networkId (string): Network that will have the ThousandEyes agent installed on.
+ - tests (array): An array of tests to be created
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "createOrganizationExtensionsThousandEyesNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks"
+
+ body_params = [
+ "enabled",
+ "networkId",
+ "tests",
+ ]
+ 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"createOrganizationExtensionsThousandEyesNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationExtensionsThousandEyesNetworksSupported(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all the networks eligible for ThousandEyes agent activation under this organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-networks-supported
+
+ - 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 100.
+ - 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.
+ - agentInstalled (boolean): Set to true to get only networks with installed ThousandEyes agent; set to false to get networks without agents.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks", "supported"],
+ "operation": "getOrganizationExtensionsThousandEyesNetworksSupported",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/supported"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "agentInstalled",
+ ]
+ 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"getOrganizationExtensionsThousandEyesNetworksSupported: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str):
+ """
+ **List the ThousandEyes agent configuration under this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "getOrganizationExtensionsThousandEyesNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str, enabled: bool, **kwargs):
+ """
+ **Update a ThousandEyes agent from this network**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "createOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "updateOrganizationExtensionsThousandEyesNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns"
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
body_params = [
- "shortName",
- "limitScopeToNetworks",
+ "enabled",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4432,52 +7064,50 @@ def createOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, shortN
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"createOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ f"updateOrganizationExtensionsThousandEyesNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.put(metadata, resource, payload)
- def getOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ def deleteOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str):
"""
- **Show an early access feature opt-in for an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-early-access-features-opt-in
+ **Delete a ThousandEyes agent from this network**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-extensions-thousand-eyes-network
- organizationId (string): Organization ID
- - optInId (string): Opt in ID
+ - networkId (string): Network ID
"""
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "getOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "deleteOrganizationExtensionsThousandEyesNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
- return self._session.get(metadata, resource)
+ return self._session.delete(metadata, resource)
- def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str, **kwargs):
+ def createOrganizationExtensionsThousandEyesTest(self, organizationId: str, **kwargs):
"""
- **Update an early access feature opt-in for an organization**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-early-access-features-opt-in
+ **Create a ThousandEyes test based on a provided test template**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-test
- organizationId (string): Organization ID
- - optInId (string): Opt in ID
- - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ - tests (array): An array of tests to be created
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "updateOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "tests"],
+ "operation": "createOrganizationExtensionsThousandEyesTest",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/tests"
body_params = [
- "limitScopeToNetworks",
+ "tests",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4486,29 +7116,10 @@ def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInI
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"updateOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationExtensionsThousandEyesTest: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def deleteOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
- """
- **Delete an early access feature opt-in**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-early-access-features-opt-in
-
- - organizationId (string): Organization ID
- - optInId (string): Opt in ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "deleteOrganizationEarlyAccessFeaturesOptIn",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
-
- return self._session.delete(metadata, resource)
+ return self._session.post(metadata, resource, payload)
def getOrganizationFirmwareUpgrades(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
@@ -5567,40 +8178,287 @@ def getOrganizationNetworks(self, organizationId: str, total_pages=1, direction=
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"getOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"getOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes: list, **kwargs):
+ """
+ **Create a network**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-network
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the new network
+ - productTypes (array): The product type(s) of the new network. If more than one type is included, the network will be a combined network.
+ - tags (array): A list of tags to be applied to the network
+ - timeZone (string): The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article.
+ - copyFromNetworkId (string): The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly.
+ - notes (string): Add any notes or additional information about this network here.
+ - details (array): An array of details
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks"],
+ "operation": "createOrganizationNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks"
+
+ body_params = [
+ "name",
+ "productTypes",
+ "tags",
+ "timeZone",
+ "copyFromNetworkId",
+ "notes",
+ "details",
+ ]
+ 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"createOrganizationNetwork: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds: list, **kwargs):
+ """
+ **Combine multiple networks into a single network**
+ https://developer.cisco.com/meraki/api-v1/#!combine-organization-networks
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the combined network
+ - networkIds (array): A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network
+ - enrollmentString (string): A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks"],
+ "operation": "combineOrganizationNetworks",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/combine"
+
+ body_params = [
+ "name",
+ "networkIds",
+ "enrollmentString",
+ ]
+ 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"combineOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNetworksGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the network groups in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-networks-groups
+
+ - 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
+ - groupIds (array): Optional parameter to filter network groups by ID
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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", "networks", "groups"],
+ "operation": "getOrganizationNetworksGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups"
+
+ query_params = [
+ "groupIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "groupIds",
+ ]
+ 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"getOrganizationNetworksGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNetworksGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a network group**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the network group
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "createOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups"
+
+ body_params = [
+ "name",
+ ]
+ 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"createOrganizationNetworksGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNetworksGroupsOverviewByGroup(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the client and status overview information for the network groups in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-networks-groups-overview-by-group
+
+ - 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
+ - sortBy (string): Field by which to sort the results
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "monitor", "networks", "groups", "overview", "byGroup"],
+ "operation": "getOrganizationNetworksGroupsOverviewByGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/overview/byGroup"
+
+ query_params = [
+ "sortBy",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationNetworksGroupsOverviewByGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationNetworksGroup(self, organizationId: str, groupId: str, name: str, **kwargs):
+ """
+ **Update a network group**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The new name of the network group
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "updateOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ body_params = [
+ "name",
+ ]
+ 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"updateOrganizationNetworksGroup: ignoring unrecognized kwargs: {invalid}")
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.put(metadata, resource, payload)
- def createOrganizationNetwork(self, organizationId: str, name: str, productTypes: list, **kwargs):
+ def deleteOrganizationNetworksGroup(self, organizationId: str, groupId: str):
"""
- **Create a network**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-network
+ **Delete a network group**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-networks-group
- organizationId (string): Organization ID
- - name (string): The name of the new network
- - productTypes (array): The product type(s) of the new network. If more than one type is included, the network will be a combined network.
- - tags (array): A list of tags to be applied to the network
- - timeZone (string): The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article.
- - copyFromNetworkId (string): The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly.
- - notes (string): Add any notes or additional information about this network here.
+ - groupId (string): Group ID
"""
- kwargs.update(locals())
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "deleteOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ return self._session.delete(metadata, resource)
+
+ def bulkOrganizationNetworksGroupAssign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
+ """
+ **Add networks to a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-assign
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to add to the network group
+ """
+
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "networks"],
- "operation": "createOrganizationNetwork",
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "bulkOrganizationNetworksGroupAssign",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/networks"
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkAssign"
body_params = [
- "name",
- "productTypes",
- "tags",
- "timeZone",
- "copyFromNetworkId",
- "notes",
+ "networkIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -5608,34 +8466,32 @@ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes
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"createOrganizationNetwork: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"bulkOrganizationNetworksGroupAssign: ignoring unrecognized kwargs: {invalid}")
return self._session.post(metadata, resource, payload)
- def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds: list, **kwargs):
+ def bulkOrganizationNetworksGroupUnassign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
"""
- **Combine multiple networks into a single network**
- https://developer.cisco.com/meraki/api-v1/#!combine-organization-networks
+ **Remove networks from a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-unassign
- organizationId (string): Organization ID
- - name (string): The name of the combined network
- - networkIds (array): A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network
- - enrollmentString (string): A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted.
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to remove from the network group
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "networks"],
- "operation": "combineOrganizationNetworks",
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "bulkOrganizationNetworksGroupUnassign",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/networks/combine"
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkUnassign"
body_params = [
- "name",
"networkIds",
- "enrollmentString",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -5643,7 +8499,9 @@ def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds
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"combineOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"bulkOrganizationNetworksGroupUnassign: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.post(metadata, resource, payload)
@@ -6906,6 +9764,140 @@ def deleteOrganizationPolicyObject(self, organizationId: str, policyObjectId: st
return self._session.delete(metadata, resource)
+ def getOrganizationRoutingVrfs(self, organizationId: str, **kwargs):
+ """
+ **List existing organization-wide VRFs (Virtual Routing and Forwarding).**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-routing-vrfs
+
+ - organizationId (string): Organization ID
+ - vrfIds (array): IDs of the desired VRFs.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "getOrganizationRoutingVrfs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs"
+
+ query_params = [
+ "vrfIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "vrfIds",
+ ]
+ 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"getOrganizationRoutingVrfs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def createOrganizationRoutingVrf(self, organizationId: str, name: str, **kwargs):
+ """
+ **Add an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "createOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ 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"createOrganizationRoutingVrf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationRoutingVrf(self, organizationId: str, vrfId: str, **kwargs):
+ """
+ **Update an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "updateOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ vrfId = urllib.parse.quote(str(vrfId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ 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"updateOrganizationRoutingVrf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationRoutingVrf(self, organizationId: str, vrfId: str):
+ """
+ **Delete a VRF (Virtual Routing and Forwarding) from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "deleteOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ vrfId = urllib.parse.quote(str(vrfId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationSaml(self, organizationId: str):
"""
**Returns the SAML SSO enabled settings for an organization.**
@@ -7214,6 +10206,72 @@ def deleteOrganizationSamlRole(self, organizationId: str, samlRoleId: str):
return self._session.delete(metadata, resource)
+ def getOrganizationSaseBatch(self, organizationId: str, batchId: str):
+ """
+ **Retrieves a batch summary with aggregated job status counts**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sase-batch
+
+ - organizationId (string): Organization ID
+ - batchId (string): Batch ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "batches"],
+ "operation": "getOrganizationSaseBatch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ batchId = urllib.parse.quote(str(batchId), safe="")
+ resource = f"/organizations/{organizationId}/sase/batches/{batchId}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSaseBatchJobs(self, organizationId: str, batchId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List jobs within a batch, with optional status filtering**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sase-batch-jobs
+
+ - organizationId (string): Organization ID
+ - batchId (string): Batch 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 10.
+ - 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.
+ - status (string): If provided, filters jobs by status
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["complete", "deferred", "failed", "new", "ready", "running", "scheduled"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "batches", "jobs"],
+ "operation": "getOrganizationSaseBatchJobs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ batchId = urllib.parse.quote(str(batchId), safe="")
+ resource = f"/organizations/{organizationId}/sase/batches/{batchId}/jobs"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "status",
+ ]
+ 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"getOrganizationSaseBatchJobs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSaseConnectors(self, organizationId: str):
"""
**List SSE Connectors for an organization**
@@ -7552,6 +10610,39 @@ def detachOrganizationSaseSites(self, organizationId: str, **kwargs):
return self._session.delete(metadata, resource)
+ def enrollOrganizationSaseSites(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Access**
+ https://developer.cisco.com/meraki/api-v1/#!enroll-organization-sase-sites
+
+ - organizationId (string): Organization ID
+ - items (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "sites"],
+ "operation": "enrollOrganizationSaseSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sase/sites/enroll"
+
+ body_params = [
+ "items",
+ "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"enrollOrganizationSaseSites: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
def updateOrganizationSaseSite(self, organizationId: str, siteId: str, **kwargs):
"""
**Update the configuration for a site**
@@ -7582,9 +10673,59 @@ def updateOrganizationSaseSite(self, organizationId: str, siteId: 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"updateOrganizationSaseSite: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"updateOrganizationSaseSite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationSitesBuildings(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the buildings belonging to the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sites-buildings
+
+ - 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 parameter to filter buildings by one or more network IDs
+ - buildingIds (array): Optional parameter to filter buildings by one or more building IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "sites", "buildings"],
+ "operation": "getOrganizationSitesBuildings",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sites/buildings"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "buildingIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "buildingIds",
+ ]
+ 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"getOrganizationSitesBuildings: ignoring unrecognized kwargs: {invalid}")
- return self._session.put(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
def getOrganizationSnmp(self, organizationId: str):
"""
@@ -7657,6 +10798,45 @@ def updateOrganizationSnmp(self, organizationId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getOrganizationSnmpTrapsByNetwork(self, organizationId: str, **kwargs):
+ """
+ **Retrieve the SNMP trap configuration for the networks in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-snmp-traps-by-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): An optional parameter to filter SNMP trap configs by network IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "snmp", "traps", "byNetwork"],
+ "operation": "getOrganizationSnmpTrapsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/snmp/traps/byNetwork"
+
+ 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"getOrganizationSnmpTrapsByNetwork: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationSplashAsset(self, organizationId: str, id: str):
"""
**Get a Splash Theme Asset**
@@ -7807,6 +10987,7 @@ def getOrganizationSummaryTopAppliancesByUtilization(self, organizationId: str,
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -7827,6 +11008,7 @@ def getOrganizationSummaryTopAppliancesByUtilization(self, organizationId: str,
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -7952,6 +11134,7 @@ def getOrganizationSummaryTopClientsByUsage(self, organizationId: str, **kwargs)
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -7972,6 +11155,7 @@ def getOrganizationSummaryTopClientsByUsage(self, organizationId: str, **kwargs)
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -7999,6 +11183,7 @@ def getOrganizationSummaryTopClientsManufacturersByUsage(self, organizationId: s
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8019,6 +11204,7 @@ def getOrganizationSummaryTopClientsManufacturersByUsage(self, organizationId: s
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8046,6 +11232,7 @@ def getOrganizationSummaryTopDevicesByUsage(self, organizationId: str, **kwargs)
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8066,6 +11253,7 @@ def getOrganizationSummaryTopDevicesByUsage(self, organizationId: str, **kwargs)
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8093,6 +11281,7 @@ def getOrganizationSummaryTopDevicesModelsByUsage(self, organizationId: str, **k
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8113,6 +11302,7 @@ def getOrganizationSummaryTopDevicesModelsByUsage(self, organizationId: str, **k
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8142,6 +11332,7 @@ def getOrganizationSummaryTopNetworksByStatus(self, organizationId: str, total_p
- direction (string): direction to paginate, either "next" (default) or "prev" page
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8162,6 +11353,7 @@ def getOrganizationSummaryTopNetworksByStatus(self, organizationId: str, total_p
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8189,6 +11381,7 @@ def getOrganizationSummaryTopSsidsByUsage(self, organizationId: str, **kwargs):
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8209,6 +11402,7 @@ def getOrganizationSummaryTopSsidsByUsage(self, organizationId: str, **kwargs):
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8236,6 +11430,7 @@ def getOrganizationSummaryTopSwitchesByEnergyUsage(self, organizationId: str, **
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8256,6 +11451,7 @@ def getOrganizationSummaryTopSwitchesByEnergyUsage(self, organizationId: str, **
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8384,6 +11580,137 @@ def getOrganizationWebhooksCallbacksStatus(self, organizationId: str, callbackId
return self._session.get(metadata, resource)
+ def getOrganizationWebhooksHttpServers(self, organizationId: str):
+ """
+ **List the HTTP servers for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-http-servers
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "getOrganizationWebhooksHttpServers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationWebhooksHttpServer(self, organizationId: str, name: str, url: str, **kwargs):
+ """
+ **Add an HTTP server to an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - name (string): A name for easy reference to the HTTP server
+ - url (string): The URL of the HTTP server
+ - sharedSecret (string): A shared secret that will be included in POSTs sent to the HTTP server. This secret can be used to verify that the request was sent by Meraki.
+ - payloadTemplate (object): The payload template to use when posting data to the HTTP server.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "createOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers"
+
+ body_params = [
+ "name",
+ "url",
+ "sharedSecret",
+ "payloadTemplate",
+ ]
+ 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"createOrganizationWebhooksHttpServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksHttpServer(self, organizationId: str, id: str):
+ """
+ **Return an HTTP server for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "getOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationWebhooksHttpServer(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update an HTTP server for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): A name for easy reference to the HTTP server
+ - url (string): The URL of the HTTP server
+ - sharedSecret (string): A shared secret that will be included in POSTs sent to the HTTP server. This secret can be used to verify that the request was sent by Meraki.
+ - payloadTemplate (object): The payload template to use when posting data to the HTTP server.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "updateOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ body_params = [
+ "name",
+ "url",
+ "sharedSecret",
+ "payloadTemplate",
+ ]
+ 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"updateOrganizationWebhooksHttpServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWebhooksHttpServer(self, organizationId: str, id: str):
+ """
+ **Delete an HTTP server from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "deleteOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationWebhooksLogs(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return the log of webhook POSTs sent**
@@ -8428,3 +11755,206 @@ def getOrganizationWebhooksLogs(self, organizationId: str, total_pages=1, direct
self._session._logger.warning(f"getOrganizationWebhooksLogs: ignoring unrecognized kwargs: {invalid}")
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWebhooksPayloadTemplates(self, organizationId: str):
+ """
+ **List the webhook payload templates for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-payload-templates
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "getOrganizationWebhooksPayloadTemplates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationWebhooksPayloadTemplate(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the new template
+ - body (string): The liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "createOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ 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"createOrganizationWebhooksPayloadTemplate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str):
+ """
+ **Get the webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "getOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ return self._session.get(metadata, resource)
+
+ def deleteOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str):
+ """
+ **Destroy a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "deleteOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str, **kwargs):
+ """
+ **Update a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ - name (string): The name of the template
+ - body (string): The liquid template used for the body of the webhook message.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "updateOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ 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"updateOrganizationWebhooksPayloadTemplate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createOrganizationWebhooksWebhookTest(self, organizationId: str, url: str, **kwargs):
+ """
+ **Send a test webhook for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-webhook-test
+
+ - organizationId (string): Organization ID
+ - url (string): The URL where the test webhook will be sent
+ - sharedSecret (string): The shared secret the test webhook will send. Optional. Defaults to HTTP server's shared secret. Otherwise, defaults to an empty string.
+ - payloadTemplateId (string): The ID of the payload template of the test webhook. Defaults to the HTTP server's template ID if one exists for the given URL, or Generic template ID otherwise
+ - payloadTemplateName (string): The name of the payload template.
+ - alertTypeId (string): The type of alert which the test webhook will send. Optional. Defaults to insight_app_outage_start.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "webhookTests"],
+ "operation": "createOrganizationWebhooksWebhookTest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/webhookTests"
+
+ body_params = [
+ "url",
+ "sharedSecret",
+ "payloadTemplateId",
+ "payloadTemplateName",
+ "alertTypeId",
+ ]
+ 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"createOrganizationWebhooksWebhookTest: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksWebhookTest(self, organizationId: str, webhookTestId: str):
+ """
+ **Return the status of a webhook test for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-webhook-test
+
+ - organizationId (string): Organization ID
+ - webhookTestId (string): Webhook test ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "webhookTests"],
+ "operation": "getOrganizationWebhooksWebhookTest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ webhookTestId = urllib.parse.quote(str(webhookTestId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/webhookTests/{webhookTestId}"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/aio/api/secureConnect.py b/meraki/aio/api/secureConnect.py
new file mode 100644
index 0000000..dfec273
--- /dev/null
+++ b/meraki/aio/api/secureConnect.py
@@ -0,0 +1,1082 @@
+import urllib
+
+
+class AsyncSecureConnect:
+ def __init__(self, session):
+ super().__init__()
+ self._session = session
+
+ def getOrganizationSecureConnectPrivateApplicationGroups(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides a list of private application groups for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application-groups
+
+ - 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 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to search the application group list by group name, case is ignored
+ - applicationGroupIds (array): List of application group ids attached to fetch
+ - sortBy (string): Optional parameter to specify the field used to sort objects.
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["applicationGroupId", "modifiedAt", "name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "getOrganizationSecureConnectPrivateApplicationGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "applicationGroupIds",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "applicationGroupIds",
+ ]
+ 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"getOrganizationSecureConnectPrivateApplicationGroups: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Creates a group of private applications to apply to policy**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - name (string): Application Group Name. This is required and cannot have any special characters other than spaces and hyphens
+ - description (string): Optional short description for application group
+ - applicationIds (array): List of application ids attached to this Private Application Group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "createOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups"
+
+ body_params = [
+ "name",
+ "description",
+ "applicationIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateApplicationGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str, name: str, **kwargs):
+ """
+ **Update an application group in an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Application Group Name. This is required and cannot have any special characters other than spaces and hyphens
+ - description (string): Optional short description for application group
+ - applicationIds (array): List of application ids attached to this Private Application Group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "updateOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "applicationIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateApplicationGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str, **kwargs):
+ """
+ **Deletes private application group from an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - force (boolean): Boolean flag to force delete application group, even if application group is in use by one or more rules.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "deleteOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific private application group**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "getOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplications(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of private applications for an Organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-applications
+
+ - 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 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to filter the private applications list by application and associated application group names, case is ignored
+ - applicationGroupIds (array): Optional parameter for filtering the list of private applications belonging to the application group identified by the given IDs.
+ - appTypes (array): Optional parameter for filtering the list of private applications by applications that contain at least one destination with the specified accessType value.
+ - sortBy (string): Optional parameter to specify the field used to sort objects.
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["modifiedAt", "name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "getOrganizationSecureConnectPrivateApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "applicationGroupIds",
+ "appTypes",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "applicationGroupIds",
+ "appTypes",
+ ]
+ 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"getOrganizationSecureConnectPrivateApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateApplication(self, organizationId: str, name: str, destinations: list, **kwargs):
+ """
+ **Adds a new private application to the Organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - name (string): Name of Application. This is required and should be unique across all applications for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - destinations (array): List of IP address destinations.
+ - description (string): Optional Text description for Application
+ - appProtocol (string): Protocol for communication between proxy to private application. Applicable for Browser Based Access only.
+ - sni (string): Optional SNI. Applicable for Browser Based Access only. SNI should be a valid domain.
+ - externalFQDN (string): Cisco or Customer Managed URL for Application. Applicable for Browser Based Access only. This field is system generated based on the application name and organization ID and overrides user input in payload. This value must be unique across all applications for a given organization.
+ - sslVerificationEnabled (boolean): Enable Upstream SSL verification for the internally hosted URL by the customer. Applicable for Browser Based Access only. Default is true.
+ - applicationGroupIds (array): List of application group ids attached to this Private Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "createOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications"
+
+ body_params = [
+ "name",
+ "description",
+ "destinations",
+ "appProtocol",
+ "sni",
+ "externalFQDN",
+ "sslVerificationEnabled",
+ "applicationGroupIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateApplication(
+ self, organizationId: str, id: str, name: str, destinations: list, **kwargs
+ ):
+ """
+ **Updates a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of Application. This is required and should be unique across all applications for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - destinations (array): List of IP address destinations.
+ - description (string): Optional Text description for Application
+ - appProtocol (string): Protocol for communication between proxy to private application. Applicable for Browser Based Access only.
+ - sni (string): Optional SNI. Applicable for Browser Based Access only. SNI should be a valid domain.
+ - externalFQDN (string): Cisco or Customer Managed URL for Application. Applicable for Browser Based Access only. This field is system generated based on the application name and organization ID and overrides user input in payload. This value must be unique across all applications for a given organization.
+ - sslVerificationEnabled (boolean): Enable Upstream SSL verification for the internally hosted URL by the customer. Applicable for Browser Based Access only. Default is true.
+ - applicationGroupIds (array): List of application group ids attached to this Private Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "updateOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "destinations",
+ "appProtocol",
+ "sni",
+ "externalFQDN",
+ "sslVerificationEnabled",
+ "applicationGroupIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateApplication(self, organizationId: str, id: str, **kwargs):
+ """
+ **Deletes a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - force (boolean): Boolean flag to force delete application, even if application is in use by one or more rules.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "deleteOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplication(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "getOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateResourceGroups(self, organizationId: str):
+ """
+ **Provides a list of the private resource groups in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-resource-groups
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "getOrganizationSecureConnectPrivateResourceGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Adds a new private resource group to an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "createOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateResourceGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str, name: str, **kwargs):
+ """
+ **Updates a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "updateOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateResourceGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "deleteOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateResources(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of private resources for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-resources
+
+ - 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 (string): Number of resources to return for a paginated response.
+ - startingAfter (string): The name of the resource to start after for a paginated response. Use '' for the first page.
+ - endingBefore (string): The name of the resource to end before for a paginated response. Use '' for the final page.
+ - sortBy (string): Parameter to specify the field used to sort objects, by default, resources are returned by name asc.
+ - sortOrder (string): Parameter to specify the direction used to sort objects, by default, resources are returned by name asc.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "getOrganizationSecureConnectPrivateResources",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ ]
+ 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"getOrganizationSecureConnectPrivateResources: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Adds a new private resource to the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for a resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "createOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateResource: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, id: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Updates a specific private resource.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization.Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "updateOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateResource: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateResource(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "deleteOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPublicApplications(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of public applications for an Organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-public-applications
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to filter the public applications list by application name, case is ignored
+ - risks (array): List of risk levels to filter by
+ - categories (array): List of categories to filter by
+ - appTypes (array): List of app types to filter by
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ - sortBy (string): Optional parameter to specify the field used to sort objects, by default, applications are returned by lastDetected desc
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is desc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["appType", "category", "lastDetected", "name", "risk"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "publicApplications"],
+ "operation": "getOrganizationSecureConnectPublicApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/publicApplications"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "risks",
+ "categories",
+ "appTypes",
+ "t0",
+ "t1",
+ "timespan",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "risks",
+ "categories",
+ "appTypes",
+ ]
+ 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"getOrganizationSecureConnectPublicApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSecureConnectRegions(self, organizationId: str, **kwargs):
+ """
+ **List deployed cloud hubs and regions in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-regions
+
+ - organizationId (string): Organization ID
+ - regionType (string): Filter results by region type
+ """
+
+ kwargs.update(locals())
+
+ if "regionType" in kwargs:
+ options = ["CNHE", "CloudHub", "Region", "ThirdParty"]
+ assert kwargs["regionType"] in options, (
+ f'''"regionType" cannot be "{kwargs["regionType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "regions"],
+ "operation": "getOrganizationSecureConnectRegions",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/regions"
+
+ query_params = [
+ "regionType",
+ ]
+ 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"getOrganizationSecureConnectRegions: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSecureConnectRemoteAccessLog(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the latest 5000 events logged by remote access.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-log
+
+ - 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 - 5000. Default is 50.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ - identityids (string): An identity ID or comma-delimited list of identity ID.
+ - identitytypes (string): An identity type or comma-delimited list of identity type.
+ - connectionevent (string): Specify the type of connection event.
+ - anyconnectversions (string): Specify a comma-separated list of AnyConnect Roaming Security module
+ versions to filter the data.
+ - osversions (string): Specify a comma-separated list of OS versions to filter the data.
+ """
+
+ kwargs.update(locals())
+
+ if "connectionevent" in kwargs:
+ options = ["connected", "disconnected", "failed"]
+ assert kwargs["connectionevent"] in options, (
+ f'''"connectionevent" cannot be "{kwargs["connectionevent"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "monitor", "remoteAccessLog"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLog",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLog"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "identityids",
+ "identitytypes",
+ "connectionevent",
+ "anyconnectversions",
+ "osversions",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLog: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExports(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides a list of remote access logs exports for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-exports
+
+ - 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 10.
+ - 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.
+ - status (string): Filter exports by status.
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["complete", "continue", "error", "in_progress", "new", "zip"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExports",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "status",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLogsExports: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, from_: int, to: int, **kwargs):
+ """
+ **Creates a 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.
+ """
+
+ kwargs = locals()
+ if "from_" in kwargs:
+ kwargs["from"] = kwargs.pop("from_")
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "createOrganizationSecureConnectRemoteAccessLogsExport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports"
+
+ body_params = [
+ "from",
+ "to",
+ ]
+ 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"createOrganizationSecureConnectRemoteAccessLogsExport: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExportsDownload(
+ self, organizationId: str, id: str, fileType: str, **kwargs
+ ):
+ """
+ **Redirects to the download link of the completed export.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-exports-download
+
+ - organizationId (string): Organization ID
+ - id (string): Export ID.
+ - fileType (string): Export download file type.
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports", "download"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExportsDownload",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports/download"
+
+ query_params = [
+ "id",
+ "fileType",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLogsExportsDownload: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific remote access logs export**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-export
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectSites(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List sites in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-sites
+
+ - 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 10.
+ - 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.
+ - search (string): If provided, filters results by search string
+ - enrolledState (string): Filter results by sites that have already been enrolled or can be enrolled. Acceptable values are 'enrolled' or 'enrollable
+ """
+
+ kwargs.update(locals())
+
+ if "enrolledState" in kwargs:
+ options = ["enrollable", "enrolled"]
+ assert kwargs["enrolledState"] in options, (
+ f'''"enrolledState" cannot be "{kwargs["enrolledState"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "getOrganizationSecureConnectSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "enrolledState",
+ ]
+ 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"getOrganizationSecureConnectSites: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectSite(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Connect**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-site
+
+ - organizationId (string): Organization ID
+ - enrollments (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "createOrganizationSecureConnectSite",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ body_params = [
+ "enrollments",
+ "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"createOrganizationSecureConnectSite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectSites(self, organizationId: str, **kwargs):
+ """
+ **Detach given sites from Secure Connect**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-sites
+
+ - organizationId (string): Organization ID
+ - sites (array): List of site IDs to detach
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "deleteOrganizationSecureConnectSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ return self._session.delete(metadata, resource)
diff --git a/meraki/aio/api/sensor.py b/meraki/aio/api/sensor.py
index 115465f..9e18e0d 100644
--- a/meraki/aio/api/sensor.py
+++ b/meraki/aio/api/sensor.py
@@ -74,9 +74,10 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
- serial (string): Serial
- operation (string): Operation to run on the sensor. 'enableDownstreamPower', 'disableDownstreamPower', and 'cycleDownstreamPower' turn power on/off to the device that is connected downstream of an MT40 power monitor. 'refreshData' causes an MT15 or MT40 device to upload its latest readings so that they are immediately available in the Dashboard API.
+ - arguments (array): Additional options to provide to commands run on the sensor, each with a corresponding 'name' and 'value'.
"""
- kwargs = locals()
+ kwargs.update(locals())
if "operation" in kwargs:
options = ["cycleDownstreamPower", "disableDownstreamPower", "enableDownstreamPower", "refreshData"]
@@ -92,6 +93,7 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
resource = f"/devices/{serial}/sensor/commands"
body_params = [
+ "arguments",
"operation",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -456,6 +458,103 @@ def getNetworkSensorRelationships(self, networkId: str):
return self._session.get(metadata, resource)
+ def getNetworkSensorSchedules(self, networkId: str):
+ """
+ **Returns a list of all sensor schedules.**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-sensor-schedules
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["sensor", "configure", "schedules"],
+ "operation": "getNetworkSensorSchedules",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/sensor/schedules"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSensorAlerts(self, organizationId: str, networkIds: list, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a list of sensor alert events**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sensor-alerts
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filters alerts by network. For now, this must be a single network 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 10.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 365 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 365 days. The default is 365 days.
+ - sensorSerial (string): Filters alerts to those triggered by this sensor.
+ - triggerMetric (string): Filters alerts to those triggered by this metric.
+ """
+
+ kwargs.update(locals())
+
+ if "triggerMetric" in kwargs:
+ options = [
+ "apparentPower",
+ "co2",
+ "current",
+ "door",
+ "frequency",
+ "humidity",
+ "indoorAirQuality",
+ "noise",
+ "pm25",
+ "powerFactor",
+ "realPower",
+ "temperature",
+ "tvoc",
+ "upstreamPower",
+ "voltage",
+ "water",
+ ]
+ assert kwargs["triggerMetric"] in options, (
+ f'''"triggerMetric" cannot be "{kwargs["triggerMetric"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["sensor", "monitor", "alerts"],
+ "operation": "getOrganizationSensorAlerts",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sensor/alerts"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "sensorSerial",
+ "networkIds",
+ "triggerMetric",
+ ]
+ 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"getOrganizationSensorAlerts: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSensorGatewaysConnectionsLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Returns latest sensor-gateway connectivity data.**
@@ -564,6 +663,72 @@ def getOrganizationSensorReadingsHistory(self, organizationId: str, total_pages=
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationSensorReadingsHistoryByInterval(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return all reported readings from sensors in a given timespan, summarized as a series of intervals, sorted by interval start time in descending order**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sensor-readings-history-by-interval
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 730 days, 11 hours, 38 minutes, and 24 seconds from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 730 days, 11 hours, 38 minutes, and 24 seconds 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 730 days, 11 hours, 38 minutes, and 24 seconds. The default is 7 days. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 15, 120, 300, 900, 3600, 14400, 86400, 604800. The default is 86400. Interval is calculated if time params are provided.
+ - networkIds (array): Optional parameter to filter readings by network.
+ - serials (array): Optional parameter to filter readings by sensor.
+ - metrics (array): Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved.
+ - models (array): Optional parameter to filter readings by one or more models.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sensor", "monitor", "readings", "history", "byInterval"],
+ "operation": "getOrganizationSensorReadingsHistoryByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sensor/readings/history/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "serials",
+ "metrics",
+ "models",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "metrics",
+ "models",
+ ]
+ 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"getOrganizationSensorReadingsHistoryByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSensorReadingsLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return the latest available reading for each metric from each sensor, sorted by sensor serial**
diff --git a/meraki/aio/api/sm.py b/meraki/aio/api/sm.py
index 26075e3..1ac166f 100644
--- a/meraki/aio/api/sm.py
+++ b/meraki/aio/api/sm.py
@@ -1396,6 +1396,187 @@ def getOrganizationSmApnsCert(self, organizationId: str):
return self._session.get(metadata, resource)
+ def createOrganizationSmAppleCloudEnrollmentSyncJob(self, organizationId: str, **kwargs):
+ """
+ **Enqueue a sync job for an ADE account**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-apple-cloud-enrollment-sync-job
+
+ - organizationId (string): Organization ID
+ - adeAccountId (string): ADE Account ID
+ - fullSync (boolean): Whether or not job is full sync (defaults to full sync)
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sm", "configure", "apple", "cloudEnrollment", "syncJobs"],
+ "operation": "createOrganizationSmAppleCloudEnrollmentSyncJob",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/apple/cloudEnrollment/syncJobs"
+
+ body_params = [
+ "adeAccountId",
+ "fullSync",
+ ]
+ 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"createOrganizationSmAppleCloudEnrollmentSyncJob: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSmAppleCloudEnrollmentSyncJob(self, organizationId: str, syncJobId: str):
+ """
+ **Retrieve the status of an ADE sync job**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-apple-cloud-enrollment-sync-job
+
+ - organizationId (string): Organization ID
+ - syncJobId (string): Sync job ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "apple", "cloudEnrollment", "syncJobs"],
+ "operation": "getOrganizationSmAppleCloudEnrollmentSyncJob",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ syncJobId = urllib.parse.quote(str(syncJobId), safe="")
+ resource = f"/organizations/{organizationId}/sm/apple/cloudEnrollment/syncJobs/{syncJobId}"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationSmBulkEnrollmentToken(self, organizationId: str, networkId: str, expiresAt: str, **kwargs):
+ """
+ **Create a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "createOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ 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"createOrganizationSmBulkEnrollmentToken: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str):
+ """
+ **Return a BulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "getOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str, **kwargs):
+ """
+ **Update a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "updateOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ 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"updateOrganizationSmBulkEnrollmentToken: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str):
+ """
+ **Delete a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "deleteOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSmBulkEnrollmentTokens(self, organizationId: str):
+ """
+ **List all BulkEnrollmentTokens for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-bulk-enrollment-tokens
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "tokens"],
+ "operation": "getOrganizationSmBulkEnrollmentTokens",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/tokens"
+
+ return self._session.get(metadata, resource)
+
def updateOrganizationSmSentryPoliciesAssignments(self, organizationId: str, items: list, **kwargs):
"""
**Update an Organizations Sentry Policies using the provided list**
diff --git a/meraki/aio/api/support.py b/meraki/aio/api/support.py
new file mode 100644
index 0000000..721ee80
--- /dev/null
+++ b/meraki/aio/api/support.py
@@ -0,0 +1,24 @@
+import urllib
+
+
+class AsyncSupport:
+ def __init__(self, session):
+ super().__init__()
+ self._session = session
+
+ def getOrganizationSupportSalesRepresentatives(self, organizationId: str):
+ """
+ **Returns the organization's sales representatives**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-support-sales-representatives
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["support", "monitor", "salesRepresentatives"],
+ "operation": "getOrganizationSupportSalesRepresentatives",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/support/salesRepresentatives"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/aio/api/switch.py b/meraki/aio/api/switch.py
index b164485..d3ddf5f 100644
--- a/meraki/aio/api/switch.py
+++ b/meraki/aio/api/switch.py
@@ -6,14 +6,17 @@ def __init__(self, session):
super().__init__()
self._session = session
- def getDeviceSwitchPorts(self, serial: str):
+ def getDeviceSwitchPorts(self, serial: str, **kwargs):
"""
**List the switch ports for a switch**
https://developer.cisco.com/meraki/api-v1/#!get-device-switch-ports
- serial (string): Serial
+ - hideDefaultPorts (boolean): Optional flag that, when true, will hide modular switchports that may not be connected to the device at the moment
"""
+ kwargs.update(locals())
+
metadata = {
"tags": ["switch", "configure", "ports"],
"operation": "getDeviceSwitchPorts",
@@ -21,7 +24,18 @@ def getDeviceSwitchPorts(self, serial: str):
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/switch/ports"
- return self._session.get(metadata, resource)
+ query_params = [
+ "hideDefaultPorts",
+ ]
+ 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"getDeviceSwitchPorts: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
def cycleDeviceSwitchPorts(self, serial: str, ports: list, **kwargs):
"""
@@ -54,6 +68,46 @@ def cycleDeviceSwitchPorts(self, serial: str, ports: list, **kwargs):
return self._session.post(metadata, resource, payload)
+ def updateDeviceSwitchPortsMirror(self, serial: str, source: dict, destination: dict, **kwargs):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-switch-ports-mirror
+
+ - serial (string): The switch identifier
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "mirror"],
+ "operation": "updateDeviceSwitchPortsMirror",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/switch/ports/mirror"
+
+ body_params = [
+ "serial",
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateDeviceSwitchPortsMirror: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceSwitchPortsStatuses(self, serial: str, **kwargs):
"""
**Return the status for all the ports of a switch**
@@ -154,6 +208,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
- vlan (integer): The VLAN of the switch 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 port. Only applicable to access ports.
- allowedVlans (string): The VLANs allowed on the switch port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -214,6 +269,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -303,6 +359,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -337,6 +399,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -386,6 +454,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -417,6 +491,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -1388,14 +1468,17 @@ def updateNetworkSwitchDscpToCosMappings(self, networkId: str, mappings: list, *
return self._session.put(metadata, resource, payload)
- def getNetworkSwitchLinkAggregations(self, networkId: str):
+ def getNetworkSwitchLinkAggregations(self, networkId: str, **kwargs):
"""
**List link aggregation groups**
https://developer.cisco.com/meraki/api-v1/#!get-network-switch-link-aggregations
- networkId (string): Network ID
+ - serials (array): Optional parameter to filter by device serial numbers. Matches multiple exact serials.
"""
+ kwargs.update(locals())
+
metadata = {
"tags": ["switch", "configure", "linkAggregations"],
"operation": "getNetworkSwitchLinkAggregations",
@@ -1403,7 +1486,26 @@ def getNetworkSwitchLinkAggregations(self, networkId: str):
networkId = urllib.parse.quote(str(networkId), safe="")
resource = f"/networks/{networkId}/switch/linkAggregations"
- return self._session.get(metadata, resource)
+ query_params = [
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getNetworkSwitchLinkAggregations: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
def createNetworkSwitchLinkAggregation(self, networkId: str, **kwargs):
"""
@@ -1652,6 +1754,126 @@ def updateNetworkSwitchPortSchedule(self, networkId: str, portScheduleId: str, *
return self._session.put(metadata, resource, payload)
+ def getNetworkSwitchPortsProfiles(self, networkId: str):
+ """
+ **List the port profiles in a network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-switch-ports-profiles
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getNetworkSwitchPortsProfiles",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles"
+
+ return self._session.get(metadata, resource)
+
+ def createNetworkSwitchPortsProfile(self, networkId: str, **kwargs):
+ """
+ **Create a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "createNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"createNetworkSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkSwitchPortsProfile(self, networkId: str, id: str, **kwargs):
+ """
+ **Update a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "updateNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"updateNetworkSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkSwitchPortsProfile(self, networkId: str, id: str):
+ """
+ **Delete a port profile from a network**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "deleteNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getNetworkSwitchQosRules(self, networkId: str):
"""
**List quality of service rules**
@@ -1855,6 +2077,64 @@ def updateNetworkSwitchQosRule(self, networkId: str, qosRuleId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getNetworkSwitchRaGuardPolicy(self, networkId: str):
+ """
+ **Return RA Guard settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-switch-ra-guard-policy
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "raGuardPolicy"],
+ "operation": "getNetworkSwitchRaGuardPolicy",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/raGuardPolicy"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkSwitchRaGuardPolicy(self, networkId: str, **kwargs):
+ """
+ **Update RA Guard settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-ra-guard-policy
+
+ - networkId (string): Network ID
+ - defaultPolicy (string): New Router Advertisers are 'allowed' or 'blocked'. Default value is 'allowed'.
+ - allowedServers (array): List the MAC addresses of Router Advertisers to permit on the network when defaultPolicy is set to blocked.
+ - blockedServers (array): List the MAC addresses of Router Advertisers to block on the network when defaultPolicy is set to allowed.
+ """
+
+ kwargs.update(locals())
+
+ if "defaultPolicy" in kwargs:
+ options = ["allowed", "blocked"]
+ assert kwargs["defaultPolicy"] in options, (
+ f'''"defaultPolicy" cannot be "{kwargs["defaultPolicy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["switch", "configure", "raGuardPolicy"],
+ "operation": "updateNetworkSwitchRaGuardPolicy",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/raGuardPolicy"
+
+ body_params = [
+ "defaultPolicy",
+ "allowedServers",
+ "blockedServers",
+ ]
+ 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"updateNetworkSwitchRaGuardPolicy: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchRoutingMulticast(self, networkId: str):
"""
**Return multicast settings for a network**
@@ -2175,6 +2455,45 @@ def updateNetworkSwitchSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkSwitchSpanningTree(self, networkId: str, **kwargs):
+ """
+ **Updates Spanning Tree configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-spanning-tree
+
+ - networkId (string): Network ID
+ - enabled (boolean): Network-level spanning Tree enable
+ - mode (string): Catalyst Spanning Tree Protocol mode (mst, rpvst+)
+ - priorities (array): Spanning tree priority for switches/stacks or switch templates. An empty array will clear the priority settings.
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["mst", "rpvst+"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "spanningTree"],
+ "operation": "updateNetworkSwitchSpanningTree",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/spanningTree"
+
+ body_params = [
+ "enabled",
+ "mode",
+ "priorities",
+ ]
+ 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"updateNetworkSwitchSpanningTree: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchStacks(self, networkId: str):
"""
**List the switch stacks in a network**
@@ -2225,6 +2544,41 @@ def createNetworkSwitchStack(self, networkId: str, name: str, serials: list, **k
return self._session.post(metadata, resource, payload)
+ def updateNetworkSwitchStack(self, networkId: str, switchStackId: str, **kwargs):
+ """
+ **Update a switch stack**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - name (string): The name of the stack
+ - members (array): The list of switches that should be in the stack
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "stacks"],
+ "operation": "updateNetworkSwitchStack",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ switchStackId = urllib.parse.quote(str(switchStackId), safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}"
+
+ body_params = [
+ "name",
+ "members",
+ ]
+ 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"updateNetworkSwitchStack: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchStack(self, networkId: str, switchStackId: str):
"""
**Show a switch stack**
@@ -2296,6 +2650,49 @@ def addNetworkSwitchStack(self, networkId: str, switchStackId: str, serial: str,
return self._session.post(metadata, resource, payload)
+ def updateNetworkSwitchStackPortsMirror(
+ self, networkId: str, switchStackId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update switch port mirrors for switch stacks**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-ports-mirror
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - source (object): Source port details
+ - destination (object): Destination port Details
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "stacks", "ports", "mirror"],
+ "operation": "updateNetworkSwitchStackPortsMirror",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ switchStackId = urllib.parse.quote(str(switchStackId), safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}/ports/mirror"
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateNetworkSwitchStackPortsMirror: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def removeNetworkSwitchStack(self, networkId: str, switchStackId: str, serial: str, **kwargs):
"""
**Remove a switch from a stack**
@@ -2391,6 +2788,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -2426,6 +2829,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -2480,6 +2889,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -2512,6 +2927,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -2911,14 +3332,68 @@ def updateNetworkSwitchStp(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
- def getOrganizationConfigTemplateSwitchProfiles(self, organizationId: str, configTemplateId: str):
+ def getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List the switch templates for your switch template configuration**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profiles
+ **list the port mirror configurations in an organization by switch profile**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-config-templates-switch-profiles-ports-mirrors-by-switch-profile
- organizationId (string): Organization ID
- - configTemplateId (string): Config template 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
+ - configTemplateIds (array): Optional parameter to filter the result set by the included set of config template IDs
+ - ids (array): A list of switch profile ids. The returned profiles will be filtered to only include these ids.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "configTemplates", "profiles", "ports", "mirrors", "bySwitchProfile"],
+ "operation": "getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/configTemplates/switch/profiles/ports/mirrors/bySwitchProfile"
+
+ query_params = [
+ "configTemplateIds",
+ "ids",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "configTemplateIds",
+ "ids",
+ ]
+ 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"getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationConfigTemplateSwitchProfiles(self, organizationId: str, configTemplateId: str):
+ """
+ **List the switch templates for your switch template configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profiles
+
+ - organizationId (string): Organization ID
+ - configTemplateId (string): Config template ID
+ """
metadata = {
"tags": ["switch", "configure", "configTemplates", "profiles"],
@@ -2951,6 +3426,55 @@ def getOrganizationConfigTemplateSwitchProfilePorts(self, organizationId: str, c
return self._session.get(metadata, resource)
+ def updateOrganizationConfigTemplateSwitchProfilePortsMirror(
+ self, organizationId: str, configTemplateId: str, profileId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-config-template-switch-profile-ports-mirror
+
+ - organizationId (string): Organization ID
+ - configTemplateId (string): Config template ID
+ - profileId (string): Profile ID
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "configTemplates", "profiles", "ports", "mirror"],
+ "operation": "updateOrganizationConfigTemplateSwitchProfilePortsMirror",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ configTemplateId = urllib.parse.quote(str(configTemplateId), safe="")
+ profileId = urllib.parse.quote(str(profileId), safe="")
+ resource = (
+ f"/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles/{profileId}/ports/mirror"
+ )
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateOrganizationConfigTemplateSwitchProfilePortsMirror: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getOrganizationConfigTemplateSwitchProfilePort(
self, organizationId: str, configTemplateId: str, profileId: str, portId: str
):
@@ -2997,6 +3521,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- 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.
- allowedVlans (string): The VLANs allowed on the switch template port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch template port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch template port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -3059,6 +3584,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -3128,89 +3654,101 @@ def getOrganizationSummarySwitchPowerHistory(self, organizationId: str, **kwargs
return self._session.get(metadata, resource, params)
- def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str, targetSerials: list, **kwargs):
+ def getOrganizationSwitchAlertsPoeByDevice(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Clone port-level and some switch-level configuration settings from a source switch to one or more target switches**
- https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-devices
+ **Gets all poe related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-alerts-poe-by-device
- organizationId (string): Organization ID
- - sourceSerial (string): Serial number of the source switch (must be on a network not bound to a template)
- - targetSerials (array): Array of serial numbers of one or more target switches (must be on a network not bound to a template)
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
- "tags": ["switch", "configure", "devices"],
- "operation": "cloneOrganizationSwitchDevices",
+ "tags": ["switch", "monitor", "alerts", "poe", "byDevice"],
+ "operation": "getOrganizationSwitchAlertsPoeByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/devices/clone"
+ resource = f"/organizations/{organizationId}/switch/alerts/poe/byDevice"
- body_params = [
- "sourceSerial",
- "targetSerials",
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(f"cloneOrganizationSwitchDevices: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchAlertsPoeByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.post(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def aurora2OrganizationSwitchSwitchTemplates(self, organizationId: str):
"""
- **List the switchports in an organization by switch**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-by-switch
+ **List switch templates running IOS XE Catalyst firmware.**
+ https://developer.cisco.com/meraki/api-v1/#!aurora-2-organization-switch-switch-templates
- 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 - 50. Default is 50.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ metadata = {
+ "tags": ["switch", "configure"],
+ "operation": "aurora2OrganizationSwitchSwitchTemplates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/aurora2SwitchTemplates"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSwitchClientsConnectionsAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarizes authentication outcomes per switch client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "configure", "ports", "bySwitch"],
- "operation": "getOrganizationSwitchPortsBySwitch",
+ "tags": ["switch", "monitor", "clients", "connections", "authentication", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsAuthenticationByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/bySwitch"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/authentication/byClient"
query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
"networkIds",
- "portProfileIds",
- "serial",
- "serials",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3221,66 +3759,43 @@ def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1,
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"getOrganizationSwitchPortsBySwitch: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchClientsConnectionsAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsClientsOverviewByDevice(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationSwitchClientsConnectionsDhcpByClient(self, organizationId: str, **kwargs):
"""
- **List the number of clients for all switchports with at least one online client in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-clients-overview-by-device
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-dhcp-by-client
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 20.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "clients", "overview", "byDevice"],
- "operation": "getOrganizationSwitchPortsClientsOverviewByDevice",
+ "tags": ["switch", "monitor", "clients", "connections", "dhcp", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsDhcpByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/clients/overview/byDevice"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/dhcp/byClient"
query_params = [
+ "networkIds",
"t0",
+ "t1",
"timespan",
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
- "networkIds",
- "portProfileIds",
- "serial",
- "serials",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3292,96 +3807,124 @@ def getOrganizationSwitchPortsClientsOverviewByDevice(
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"getOrganizationSwitchPortsClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchClientsConnectionsDhcpByClient: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsOverview(self, organizationId: str, **kwargs):
+ def getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient(self, organizationId: str, **kwargs):
"""
- **Returns the counts of all active ports for the requested timespan, grouped by speed**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-overview
+ **Switch port status by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-switch-port-status-by-client
- organizationId (string): Organization ID
- - t0 (string): The beginning of the timespan for the data.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 186 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 12 hours and be less than or equal to 186 days. The default is 1 day.
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "overview"],
- "operation": "getOrganizationSwitchPortsOverview",
+ "tags": ["switch", "monitor", "clients", "connections", "switchPortStatus", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/overview"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/switchPortStatus/byClient"
query_params = [
+ "networkIds",
"t0",
"t1",
"timespan",
]
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
+ 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"getOrganizationSwitchPortsOverview: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def cloneOrganizationSwitchProfilesToTemplateNetwork(self, organizationId: str, **kwargs):
"""
- **List the switchports in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-by-switch
+ **Clone existing switch templates into a destination template network.**
+ https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-profiles-to-template-network
- 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 - 20. Default is 10.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ - profileIds (array): Switch profile IDs to clone
+ - templateNodeGroupId (string): Destination template network ID
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "statuses", "bySwitch"],
- "operation": "getOrganizationSwitchPortsStatusesBySwitch",
+ "tags": ["switch", "configure"],
+ "operation": "cloneOrganizationSwitchProfilesToTemplateNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/statuses/bySwitch"
+ resource = f"/organizations/{organizationId}/switch/cloneProfilesToTemplateNetwork"
- query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
- "networkIds",
- "portProfileIds",
- "serial",
- "serials",
+ body_params = [
+ "profileIds",
+ "templateNodeGroupId",
+ ]
+ 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"cloneOrganizationSwitchProfilesToTemplateNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Lan link errors by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-lan-link-errors-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "lanLink", "errors", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/lanLink/errors/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3393,26 +3936,214 @@ def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_
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"getOrganizationSwitchPortsStatusesBySwitch: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
+ def getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Lan STP errors by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-lan-stp-errors-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "lanStp", "errors", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/lanStp/errors/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchConnectivityVrrpFailuresByDevice(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Gets all vrrp related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-vrrp-failures-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "vrrp", "failures", "byDevice"],
+ "operation": "getOrganizationSwitchConnectivityVrrpFailuresByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/vrrp/failures/byDevice"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchConnectivityVrrpFailuresByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str, targetSerials: list, **kwargs):
+ """
+ **Clone port-level and some switch-level configuration settings from a source switch to one or more target switches**
+ https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-devices
+
+ - organizationId (string): Organization ID
+ - sourceSerial (string): Serial number of the source switch (must be on a network not bound to a template)
+ - targetSerials (array): Array of serial numbers of one or more target switches (must be on a network not bound to a template)
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "devices"],
+ "operation": "cloneOrganizationSwitchDevices",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/devices/clone"
+
+ body_params = [
+ "sourceSerial",
+ "targetSerials",
+ ]
+ 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"cloneOrganizationSwitchDevices: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-topology-discovery-by-device
+ **Return a historical record of packet transmission and loss, broken down by protocol, for insight into switch device health.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-devices-system-queues-history-by-switch-by-interval
- 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 - 100. Default is 50.
+ - 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.
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - networkIds (array): Optional parameter to filter connectivity history by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connectivity history by switch.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "devices", "system", "queues", "history", "bySwitch", "byInterval"],
+ "operation": "getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/devices/system/queues/history/bySwitch/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the switchports in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-by-switch
+
+ - 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 - 50. Default is 50.
- 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.
+ - extendedParams (boolean): Optional flag to return all of the switchport data vs smaller dataset
+ - hideDefaultPorts (boolean): Optional flag that, when true, will hide modular switchports that may not be connected to the device at the moment
+ - type (array): Optional parameter to filter switchports by type ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad'). All types are selected if not supplied.
- configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
@@ -3426,18 +4157,19 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "topology", "discovery", "byDevice"],
- "operation": "getOrganizationSwitchPortsTopologyDiscoveryByDevice",
+ "tags": ["switch", "configure", "ports", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsBySwitch",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/topology/discovery/byDevice"
+ resource = f"/organizations/{organizationId}/switch/ports/bySwitch"
query_params = [
- "t0",
- "timespan",
"perPage",
"startingAfter",
"endingBefore",
+ "extendedParams",
+ "hideDefaultPorts",
+ "type",
"configurationUpdatedAfter",
"mac",
"macs",
@@ -3450,6 +4182,7 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
+ "type",
"macs",
"networkIds",
"portProfileIds",
@@ -3464,27 +4197,23 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
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"getOrganizationSwitchPortsTopologyDiscoveryByDevice: ignoring unrecognized kwargs: {invalid}"
- )
+ self._session._logger.warning(f"getOrganizationSwitchPortsBySwitch: ignoring unrecognized kwargs: {invalid}")
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
+ def getOrganizationSwitchPortsClientsOverviewByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List the historical usage and traffic data of switchports in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-usage-history-by-device-by-interval
+ **List the number of clients for all switchports with at least one online client in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-clients-overview-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
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 20.
- 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.
- configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
@@ -3500,17 +4229,15 @@ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "usage", "history", "byDevice", "byInterval"],
- "operation": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval",
+ "tags": ["switch", "monitor", "ports", "clients", "overview", "byDevice"],
+ "operation": "getOrganizationSwitchPortsClientsOverviewByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval"
+ resource = f"/organizations/{organizationId}/switch/ports/clients/overview/byDevice"
query_params = [
"t0",
- "t1",
"timespan",
- "interval",
"perPage",
"startingAfter",
"endingBefore",
@@ -3541,7 +4268,2962 @@ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
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"getOrganizationSwitchPortsUsageHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchPortsClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsMirrorsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **list the port mirror configurations in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-mirrors-by-switch
+
+ - 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
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - serials (array): A list of serial numbers. The returned devices will be filtered to only include these serials.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "ports", "mirrors", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsMirrorsBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/mirrors/bySwitch"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsMirrorsBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsOverview(self, organizationId: str, **kwargs):
+ """
+ **Returns the counts of all active ports for the requested timespan, grouped by speed**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-overview
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 186 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 12 hours and be less than or equal to 186 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "overview"],
+ "operation": "getOrganizationSwitchPortsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/overview"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchPortsOverview: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchPortsProfiles(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles
+
+ - 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
+ - networkIds (array): Return the port profiles for the specified network(s)
+ - formattedStaticAssignments (boolean): Returns the list of static switchports that are assigned to the switchport profile
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - radiusProfileEnabled (boolean): Optional parameter. If true, only return port profiles with a radius profile enabled
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getOrganizationSwitchPortsProfiles",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles"
+
+ query_params = [
+ "networkIds",
+ "formattedStaticAssignments",
+ "searchQuery",
+ "radiusProfileEnabled",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsProfiles: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfile(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "createOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"createOrganizationSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def batchOrganizationSwitchPortsProfilesAssignmentsAssign(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch assign or unassign port profiles to switch ports**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-assignments-assign
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignment operations (max 100)
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "assignments"],
+ "operation": "batchOrganizationSwitchPortsProfilesAssignmentsAssign",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/batchAssign"
+
+ body_params = [
+ "items",
+ ]
+ 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"batchOrganizationSwitchPortsProfilesAssignmentsAssign: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchPortsProfilesAssignmentsByPort(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile assignments in an organization, grouped by port**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-assignments-by-port
+
+ - 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
+ - profileIds (array): Filter by specific profile IDs
+ - serials (array): Filter by switch serials
+ - networkIds (array): Filter by network IDs
+ - templateIds (array): Filter by template (node_profile) IDs
+ - types (array): Filter by port type: switch, template
+ - assignmentTypes (array): Filter by assignment type: direct, template, exception
+ - isActive (boolean): Filter by assignment status. true: only ports with active assignments, showing only active assignments per port. false: only ports with inactive assignments, showing only inactive assignments per port. Omit: all ports with all assignment layers.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["switch", "configure", "ports", "profiles", "assignments", "byPort"],
+ "operation": "getOrganizationSwitchPortsProfilesAssignmentsByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/byPort"
+
+ query_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "templateIds",
+ "types",
+ "assignmentTypes",
+ "isActive",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "templateIds",
+ "types",
+ "assignmentTypes",
+ ]
+ 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"getOrganizationSwitchPortsProfilesAssignmentsByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesAssignmentsBySwitch(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile assignments in an organization, grouped by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-assignments-by-switch
+
+ - 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
+ - profileIds (array): Filter by specific profile IDs
+ - serials (array): Filter by switch serials
+ - networkIds (array): Filter by network IDs
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 50.
+ - 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": ["switch", "configure", "ports", "profiles", "assignments", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsProfilesAssignmentsBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/bySwitch"
+
+ query_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "profileIds",
+ "serials",
+ "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"getOrganizationSwitchPortsProfilesAssignmentsBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesAutomations(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **list the automation port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-automations
+
+ - 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
+ - ids (array): Optional parameter to filter the result set by the included set of automation IDs
+ - networkIds (array): Optional parameter to filter the result set by the associated networks.
+ - isOrganizationWide (string): Optional parameter to filter the result set by automations org-wide flag.
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "getOrganizationSwitchPortsProfilesAutomations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations"
+
+ query_params = [
+ "ids",
+ "networkIds",
+ "isOrganizationWide",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ids",
+ "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"getOrganizationSwitchPortsProfilesAutomations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile automation for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "createOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ 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"createOrganizationSwitchPortsProfilesAutomation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile automation in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "updateOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ 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"updateOrganizationSwitchPortsProfilesAutomation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str):
+ """
+ **Delete an automation port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "deleteOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfilesNetworksAssignments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Fetch all Network - Smart Port Profile associations for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-networks-assignments
+
+ - 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): Number of records per page
+ - page (integer): Page number
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesNetworksAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments"
+
+ query_params = [
+ "perPage",
+ "page",
+ ]
+ 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"getOrganizationSwitchPortsProfilesNetworksAssignments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesNetworksAssignment(
+ self, organizationId: str, type: str, profile: dict, network: dict, **kwargs
+ ):
+ """
+ **Create Network and Smart Ports Profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - type (string): Type of association
+ - profile (object): Smart Port Profile object
+ - network (object): Network object
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "createOrganizationSwitchPortsProfilesNetworksAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments"
+
+ body_params = [
+ "type",
+ "profile",
+ "network",
+ ]
+ 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"createOrganizationSwitchPortsProfilesNetworksAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch Create Network and Smart Ports Profile associations for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-networks-assignments-create
+
+ - organizationId (string): Organization ID
+ - items (array): Array of network and profile associations
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/batchCreate"
+
+ body_params = [
+ "items",
+ ]
+ 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"batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete(self, organizationId: str, items: list, **kwargs):
+ """
+ **Bulk delete Network and Smart Port Profile associations**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-switch-ports-profiles-networks-assignments-delete
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignments to delete
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/bulkDelete"
+
+ body_params = [
+ "items",
+ ]
+ 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"bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesNetworksAssignment(self, organizationId: str, assignmentId: str):
+ """
+ **Delete Network and Smart Port profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - assignmentId (string): Assignment ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "deleteOrganizationSwitchPortsProfilesNetworksAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ assignmentId = urllib.parse.quote(str(assignmentId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/{assignmentId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfilesOverviewByProfile(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-overview-by-profile
+
+ - 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
+ - networkIds (array): Return the port profiles for the specified network(s)
+ - formattedStaticAssignments (boolean): Returns the list of static switchports that are assgined to the switchport profile
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "overview", "byProfile"],
+ "operation": "getOrganizationSwitchPortsProfilesOverviewByProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/overview/byProfile"
+
+ query_params = [
+ "networkIds",
+ "formattedStaticAssignments",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsProfilesOverviewByProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesRadiusAssignments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile RADIUS assignments**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-radius-assignments
+
+ - 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
+ - networkIds (array): If present, the networks to limit the assignments to
+ - portProfileIds (array): If present, the port profiles to limit the assignments to
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesRadiusAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments"
+
+ query_params = [
+ "networkIds",
+ "portProfileIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "portProfileIds",
+ ]
+ 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"getOrganizationSwitchPortsProfilesRadiusAssignments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, network: dict, **kwargs):
+ """
+ **Create a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "createOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ 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"createOrganizationSwitchPortsProfilesRadiusAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str):
+ """
+ **Return a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "updateOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ 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"updateOrganizationSwitchPortsProfilesRadiusAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str):
+ """
+ **Deletes a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "deleteOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfile(self, organizationId: str, id: str):
+ """
+ **Get detailed information about a port profile**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSwitchPortsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "updateOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"updateOrganizationSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfile(self, organizationId: str, id: str):
+ """
+ **Delete a port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "deleteOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the switchports in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-by-switch
+
+ - 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 - 20. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "statuses", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsStatusesBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/statuses/bySwitch"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsStatusesBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsStatusesPacketsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Switch port packets by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-packets-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 1200, 14400, 86400. The default is 14400. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "statuses", "packets", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchPortsStatusesPacketsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/statuses/packets/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationSwitchPortsStatusesPacketsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-topology-discovery-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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "topology", "discovery", "byDevice"],
+ "operation": "getOrganizationSwitchPortsTopologyDiscoveryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/topology/discovery/byDevice"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsTopologyDiscoveryByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return time-series digital optical monitoring (DOM) readings for ports on each DOM-enabled switch in an organization, in addition to thresholds for each relevant Small Form Factor Pluggable (SFP) module.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-transceivers-readings-history-by-switch
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - networkIds (array): Networks for which information should be gathered.
+ - serials (array): Optional parameter to filter usage by switch.
+ - portIds (array): Optional parameter to filter usage by port ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "transceivers", "readings", "history", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/transceivers/readings/history/bySwitch"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "serials",
+ "portIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "portIds",
+ ]
+ 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"getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the historical usage and traffic data of switchports in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-usage-history-by-device-by-interval
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "usage", "history", "byDevice", "byInterval"],
+ "operation": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsUsageHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpAutonomousSystems(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the autonomous systems configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-autonomous-systems
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - numbers (array): Optional parameter to filter autonomous systems by number. This filter uses multiple exact matches.
+ - autonomousSystemIds (array): Optional parameter to filter autonomous systems by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "getOrganizationSwitchRoutingBgpAutonomousSystems",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpAutonomousSystems: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, number: int, **kwargs):
+ """
+ **Create an autonomous system**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "createOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ 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"createOrganizationSwitchRoutingBgpAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the autonomous systems configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-autonomous-systems-overview-by-autonomous-system
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - numbers (array): Optional parameter to filter autonomous systems by number. This filter uses multiple exact matches.
+ - autonomousSystemIds (array): Optional parameter to filter autonomous systems by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems", "overview", "byAutonomousSystem"],
+ "operation": "getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/overview/byAutonomousSystem"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str, **kwargs):
+ """
+ **Update an autonomous system**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "updateOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ autonomousSystemId = urllib.parse.quote(str(autonomousSystemId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ 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"updateOrganizationSwitchRoutingBgpAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str):
+ """
+ **Delete an autonomous system from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "deleteOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ autonomousSystemId = urllib.parse.quote(str(autonomousSystemId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterLists(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the filter lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter lists' by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter 'filter lists' by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterLists",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterLists: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy(
+ self, organizationId: str, filterList: dict, network: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a filter list, in addition to its associated rules**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-filter-lists-deploy
+
+ - organizationId (string): Organization ID
+ - filterList (object): Information regarding the filter list
+ - network (object): Information regarding the network the filter list belongs to
+ - rules (array): Information regarding the filter list rules
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/deploy"
+
+ body_params = [
+ "filterList",
+ "network",
+ "rules",
+ ]
+ 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"createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the filter lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists-overview-by-filter-list
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter list' overviews by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter 'filter list' overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "filters", "filterLists", "overview", "byFilterList"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/overview/byFilterList"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterListsRules(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the filter list rules configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists-rules
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter list' rules by network ID. This filter uses multiple exact matches.
+ - ruleIds (array): Optional parameter to filter 'filter list' rules by ID. This filter uses multiple exact matches.
+ - filterListIds (array): Optional parameter to filter 'filter lists' by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists", "rules"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterListsRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/rules"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "ruleIds",
+ "filterListIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "ruleIds",
+ "filterListIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterListsRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationSwitchRoutingBgpFiltersFilterList(self, organizationId: str, listId: str):
+ """
+ **Delete a filter list**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-filter-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists"],
+ "operation": "deleteOrganizationSwitchRoutingBgpFiltersFilterList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ listId = urllib.parse.quote(str(listId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/{listId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixLists(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the prefix lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix lists by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter prefix lists by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixLists",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixLists: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy(
+ self, organizationId: str, network: dict, prefixList: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a prefix list, in addition to its associated rules**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-prefix-lists-deploy
+
+ - organizationId (string): Organization ID
+ - network (object): Information regarding the network the prefix list belongs to
+ - prefixList (object): Information regarding the prefix list
+ - rules (array): Information regarding the prefix list rules
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/deploy"
+
+ body_params = [
+ "network",
+ "prefixList",
+ "rules",
+ ]
+ 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"createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the prefix lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists-overview-by-prefix-list
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix list overviews by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter prefix list overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "filters", "prefixLists", "overview", "byPrefixList"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/overview/byPrefixList"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixListsRules(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the prefix list rules configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists-rules
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix list rules by network ID. This filter uses multiple exact matches.
+ - prefixListIds (array): Optional parameter to filter prefix list rules by prefix list ID. This filter uses multiple exact matches.
+ - ruleIds (array): Optional parameter to filter prefix list rules by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists", "rules"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixListsRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/rules"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "prefixListIds",
+ "ruleIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "prefixListIds",
+ "ruleIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixListsRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationSwitchRoutingBgpFiltersPrefixList(self, organizationId: str, listId: str):
+ """
+ **Delete a prefix list**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-prefix-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists"],
+ "operation": "deleteOrganizationSwitchRoutingBgpFiltersPrefixList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ listId = urllib.parse.quote(str(listId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/{listId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpPeersGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the BGP peer groups configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer groups by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer groups by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer groups by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer groups by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroups: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for multiple peer groups or address families configured in the given organization, including profile information, peer group address family information, neighbors, and listen ranges**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-address-families-deployments
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer group address family deployments by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group address family deployments by peer group
+ - addressFamilyIds (array): Optional parameter to filter peer group address family deployments by address family
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "addressFamilies", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/addressFamilies/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "addressFamilyIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "addressFamilyIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpPeersGroupsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ network: dict,
+ peerGroup: dict,
+ peerGroupAddressFamilyBindingProfile: dict,
+ peerGroupProfile: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a peer group, in addition to an associated peer group profile, peer group address family binding, peer group address family binding profile and routing policies associated with the peer group**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-groups-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family the peer group address family binding belongs to
+ - network (object): Information regarding the network the peer group profile belongs to
+ - peerGroup (object): Information regarding the peer group
+ - peerGroupAddressFamilyBindingProfile (object): Information regarding the peer group address family binding profile
+ - peerGroupProfile (object): Information regarding the peer group profile
+ - policies (array): Information regarding the routing policies
+ - router (object): Information regarding the router this peer group belongs to
+ - peerGroupAddressFamilyBinding (object): Information regarding the peer group address family binding. Only required when updating.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpPeersGroupsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/deploy"
+
+ body_params = [
+ "addressFamily",
+ "network",
+ "peerGroup",
+ "peerGroupAddressFamilyBinding",
+ "peerGroupAddressFamilyBindingProfile",
+ "peerGroupProfile",
+ "policies",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpPeersGroupsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for peer groups configured in the given organization, including peer group address family information, as well as routing policies**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter peer group deployments by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer group deployments by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer group deployments by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group deployments by peer group ID. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each peer group by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each peer group by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the BGP peer groups configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-overview-by-peer-group
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer group overviews by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer group overviews by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer group overviews by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "peers", "groups", "overview", "byPeerGroup"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/overview/byPeerGroup"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersListenRanges(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the listen ranges configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-listen-ranges
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter listen ranges by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter listen ranges by router ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter listen ranges by peer group ID. This filter uses multiple exact matches.
+ - listenRangeIds (array): Optional parameter to filter listen ranges by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "listenRanges"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersListenRanges",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/listenRanges"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "peerGroupIds",
+ "listenRangeIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "peerGroupIds",
+ "listenRangeIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersListenRanges: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersNeighbors(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the neighbors configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-neighbors
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter neighbors by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter neighbors by peer group ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter neighbors by router ID. This filter uses multiple exact matches.
+ - neighborIds (array): Optional parameter to filter neighbors by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersNeighbors",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersNeighbors: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpPeersNeighborsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ neighbor: dict,
+ neighborAddressFamilyBinding: dict,
+ peerGroup: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a neighor, in addition to an associated neighbor address family binding and routing policies associated with the neighbor**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-neighbors-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family this binding is bound to
+ - neighbor (object): Information regarding the BPG neighbor
+ - neighborAddressFamilyBinding (object): Information regarding the neighbor address family binding
+ - peerGroup (object): Information regarding the peer group this neighbor belongs to
+ - policies (array): Information regarding the routing policies related to the neighbor
+ - router (object): Information regarding the router this neighbor peers with
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpPeersNeighborsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors/deploy"
+
+ body_params = [
+ "addressFamily",
+ "neighbor",
+ "neighborAddressFamilyBinding",
+ "peerGroup",
+ "policies",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpPeersNeighborsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpPeersNeighborsDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for neighbors configured in the given organization, including address family information, as well as routing policies**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-neighbors-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter neighbor deployments by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter neighbor deployments by peer group ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter neighbor deployments by router ID. This filter uses multiple exact matches.
+ - neighborIds (array): Optional parameter to filter neighbor deployments by neighbor ID. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each neighbor by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each neighbor by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersNeighborsDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersNeighborsDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpRouters(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the routers configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers
+
+ - 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 50.
+ - 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 parameter to filter routers by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter routers by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter routers by switch name. The filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter routers by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter routers by ID. This filter uses multiple exact matches.
+ - switchStackIds (array): Optional parameter to filter routers by switch stack id. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers"],
+ "operation": "getOrganizationSwitchRoutingBgpRouters",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRouters: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpRoutersDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ addressFamilyPrefixes: list,
+ addressFamilyProfile: dict,
+ autonomousSystem: dict,
+ router: dict,
+ switch: dict,
+ **kwargs,
+ ):
+ """
+ **Create a BGP router, in addition to an associated address family, address family prefixes, and address family profile**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - addressFamilyPrefixes (array): The list of network prefixes to which the address family applies
+ - addressFamilyProfile (object): Information regarding the profile applied to the address family
+ - autonomousSystem (object): Information regarding the router's autonomous system
+ - router (object): Information regarding the BPG router
+ - switch (object): The router's switch node. When the router is part of a switch stack, this is the switch stack's active node
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpRoutersDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "addressFamilyPrefixes",
+ "addressFamilyProfile",
+ "autonomousSystem",
+ "router",
+ "switch",
+ ]
+ 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"createOrganizationSwitchRoutingBgpRoutersDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpRoutersDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for routers configured in a given organization, including all address families**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter router deployments by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter router deployments by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter router deployments by switch name. The filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter router deployments by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter router deployments by router ID. This filter uses multiple exact matches.
+ - switchStackIds (array): Optional parameter to filter router deployments by switch stack id. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each router by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each router by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpRoutersDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRoutersDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpRoutersOverviewByRouter(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the routers configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers-overview-by-router
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter router overviews by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter router overviews by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter router overviews by switch name. This filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter router overviews by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter router overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "routers", "overview", "byRouter"],
+ "operation": "getOrganizationSwitchRoutingBgpRoutersOverviewByRouter",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/overview/byRouter"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRoutersOverviewByRouter: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpRoutersPeersDeploy(
+ self, organizationId: str, addressFamily: dict, peerGroups: list, router: dict, **kwargs
+ ):
+ """
+ **Create and update listen ranges, update peers' enabled flag, and delete peer groups for a BGP router**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-peers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - peerGroups (array): Information regarding the peer group peers for a router's peer group
+ - router (object): Information regarding the BPG router
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "peers", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpRoutersPeersDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/peers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "peerGroups",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpRoutersPeersDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSwitchRoutingBgpRouter(self, organizationId: str, routerId: str):
+ """
+ **Delete a router from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-router
+
+ - organizationId (string): Organization ID
+ - routerId (string): Router ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers"],
+ "operation": "deleteOrganizationSwitchRoutingBgpRouter",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ routerId = urllib.parse.quote(str(routerId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/{routerId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingStaticRoutes(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List layer 3 static routes for switches within an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-static-routes
+
+ - 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
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 20.
+ - 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": ["switch", "monitor", "routing", "staticRoutes"],
+ "operation": "getOrganizationSwitchRoutingStaticRoutes",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/staticRoutes"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchRoutingStaticRoutes: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchSpanningTree(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns Spanning Tree configuration settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-spanning-tree
+
+ - 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 parameter to filter by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "spanningTree"],
+ "operation": "getOrganizationSwitchSpanningTree",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/spanningTree"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationSwitchSpanningTree: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchStacksPortsMirrorsByStack(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the port mirror configurations in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-stacks-ports-mirrors-by-stack
+
+ - 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
+ - ids (array): Return the port mirror configuration for the specified stack(s)
+ - networkIds (array): Return the port mirror configurations for the specified network(s)
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "stacks", "ports", "mirrors", "byStack"],
+ "operation": "getOrganizationSwitchStacksPortsMirrorsByStack",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/stacks/ports/mirrors/byStack"
+
+ query_params = [
+ "ids",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ids",
+ "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"getOrganizationSwitchStacksPortsMirrorsByStack: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
diff --git a/meraki/aio/api/users.py b/meraki/aio/api/users.py
new file mode 100644
index 0000000..c75cffd
--- /dev/null
+++ b/meraki/aio/api/users.py
@@ -0,0 +1,838 @@
+import urllib
+
+
+class AsyncUsers:
+ def __init__(self, session):
+ super().__init__()
+ self._session = session
+
+ def getOrganizationIamUsersAuthorizations(
+ self, organizationId: str, userIds: list, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List specific authorizations for the list of Meraki end users.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-authorizations
+
+ - organizationId (string): Organization ID
+ - userIds (array): Meraki end user IDs
+ - 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 - 50. Default is 10.
+ - 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": ["users", "configure", "iam", "authorizations"],
+ "operation": "getOrganizationIamUsersAuthorizations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "userIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "userIds",
+ ]
+ 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"getOrganizationIamUsersAuthorizations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationIamUsersAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Authorize a Meraki end user for an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - idpUserId (string): Meraki end user's ID
+ - startsAt (string): Start time of the desired access for the authorization. Defaults to now.
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "createOrganizationIamUsersAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "email",
+ "idpUserId",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ 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"createOrganizationIamUsersAuthorization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationIamUsersAuthorizations(self, organizationId: str, **kwargs):
+ """
+ **Update a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-authorizations
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ - email (string): Meraki end user's email
+ - authZone (object): Auth zone
+ - startsAt (string): Start time of the desired access for the authorization
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "updateOrganizationIamUsersAuthorizations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "authorizationId",
+ "email",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ 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"updateOrganizationIamUsersAuthorizations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def revokeOrganizationIamUsersAuthorizationsAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Revoke a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!revoke-organization-iam-users-authorizations-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - authorizationId (string): Authorization ID
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations", "authorization"],
+ "operation": "revokeOrganizationIamUsersAuthorizationsAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/authorization/revoke"
+
+ body_params = [
+ "email",
+ "authorizationId",
+ "authZone",
+ ]
+ 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"revokeOrganizationIamUsersAuthorizationsAuthorization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersAuthorizationsZones(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List all of the available auth zones for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-authorizations-zones
+
+ - 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 10 - 1000. Default is 100.
+ - 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": ["users", "configure", "iam", "authorizations", "zones"],
+ "operation": "getOrganizationIamUsersAuthorizationsZones",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/zones"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationIamUsersAuthorizationsZones: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationIamUsersAuthorization(self, organizationId: str, authorizationId: str):
+ """
+ **Delete an authorization for a Meraki end user.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "deleteOrganizationIamUsersAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ authorizationId = urllib.parse.quote(str(authorizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/{authorizationId}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationIamUsersIdp(self, organizationId: str, name: str, type: str, idpConfig: dict, **kwargs):
+ """
+ **Create an identity provider for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the identity provider
+ - type (string): Type of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ - description (string): Optional. Description of the identity provider
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider.
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["Azure AD"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "createOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps"
+
+ body_params = [
+ "name",
+ "type",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ 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"createOrganizationIamUsersIdp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def searchOrganizationIdpGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Search all IdP groups for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!search-organization-idp-groups
+
+ - 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
+ - idpIds (array): Filter IdP groups by IdP ID(s). Multiple IdP IDs can be passed as a comma separated list.
+ - authZone (object): Auth zone
+ - searchQuery (string): Fuzzy filter by group name
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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": ["users", "configure", "iam", "idps", "groups", "search"],
+ "operation": "searchOrganizationIdpGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/groups/search"
+
+ body_params = [
+ "idpIds",
+ "authZone",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"searchOrganizationIdpGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpsProductIntegrations(self, organizationId: str):
+ """
+ **List all available IdP Product Integration urls for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-product-integrations
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "productIntegrations"],
+ "operation": "getOrganizationIamUsersIdpsProductIntegrations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/productIntegrations"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationIamUsersIdpsSearch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Search all IdPs for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-search
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpIds (array): Filter identity providers by id(s). Multiple ids can be passed as a comma separated list.
+ - type (string): Filter identity providers by idp type.
+ - authZone (object): Filter by auth zone
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["Azure AD"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "search"],
+ "operation": "createOrganizationIamUsersIdpsSearch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/search"
+
+ body_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpIds",
+ "type",
+ "authZone",
+ ]
+ 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"createOrganizationIamUsersIdpsSearch: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpsSyncHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the IdP sync status records for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-sync-history
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpId (string): Identity provider ID. Optional.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "history"],
+ "operation": "getOrganizationIamUsersIdpsSyncHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/sync/history"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpId",
+ ]
+ 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"getOrganizationIamUsersIdpsSyncHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationIamUsersIdpsSyncLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the latest IdP sync status records for all IdPs in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-sync-latest
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpIds (array): Identity provider IDs. Optional.
+ - authZoneId (string): Auth Zone ID
+ - authZoneType (string): Auth Zone type
+ """
+
+ kwargs.update(locals())
+
+ if "authZoneType" in kwargs:
+ options = ["access_policy", "node_group", "product", "ssid"]
+ assert kwargs["authZoneType"] in options, (
+ f'''"authZoneType" cannot be "{kwargs["authZoneType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "latest"],
+ "operation": "getOrganizationIamUsersIdpsSyncLatest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/sync/latest"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpIds",
+ "authZoneId",
+ "authZoneType",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "idpIds",
+ ]
+ 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"getOrganizationIamUsersIdpsSyncLatest: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationIamUsersIdpsTestConnectivity(self, organizationId: str, **kwargs):
+ """
+ **Test connectivity to an Entra ID identity provider.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-test-connectivity
+
+ - organizationId (string): Organization ID
+ - idpId (string): Id of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "testConnectivity"],
+ "operation": "createOrganizationIamUsersIdpsTestConnectivity",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/testConnectivity"
+
+ body_params = [
+ "idpId",
+ "idpConfig",
+ ]
+ 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"createOrganizationIamUsersIdpsTestConnectivity: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationIamUsersIdpsUser(self, organizationId: str, **kwargs):
+ """
+ **Create a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "createOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ 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"createOrganizationIamUsersIdpsUser: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationIamUsersIdpsUser(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "updateOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ 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"updateOrganizationIamUsersIdpsUser: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationIamUsersIdpsUser(self, organizationId: str, id: str):
+ """
+ **Delete a Meraki end user**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "deleteOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationIamUsersIdpSync(self, organizationId: str, idpId: str, **kwargs):
+ """
+ **Trigger an IdP sync for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp-sync
+
+ - organizationId (string): Organization ID
+ - idpId (string): Idp ID
+ - emails (array): List of emails to sync
+ - force (boolean): Force a complete sync of all users and groups
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync"],
+ "operation": "createOrganizationIamUsersIdpSync",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ idpId = urllib.parse.quote(str(idpId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{idpId}/sync"
+
+ body_params = [
+ "emails",
+ "force",
+ ]
+ 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"createOrganizationIamUsersIdpSync: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpSyncLatest(self, organizationId: str, idpId: str):
+ """
+ **Get the latest IdP sync status for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idp-sync-latest
+
+ - organizationId (string): Organization ID
+ - idpId (string): Idp ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "latest"],
+ "operation": "getOrganizationIamUsersIdpSyncLatest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ idpId = urllib.parse.quote(str(idpId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{idpId}/sync/latest"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationIamUsersIdp(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the identity provider
+ - description (string): Description of the identity provider
+ - idpConfig (object): Identity provider configuration. You can update individual attributes
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider. Set to 'null' for on-demand user and group provisioning.
+ """
+
+ kwargs.update(locals())
+
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "updateOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ 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"updateOrganizationIamUsersIdp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationIamUsersIdp(self, organizationId: str, id: str):
+ """
+ **Delete a identity provider from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "deleteOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationIamUsersIdpAuthZones(self, organizationId: str, id: str):
+ """
+ **List all auth zones for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idp-auth-zones
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "authZones"],
+ "operation": "getOrganizationIamUsersIdpAuthZones",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}/authZones"
+
+ return self._session.get(metadata, resource)
+
+ def searchOrganizationUsers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the end users and their associated identity providers for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!search-organization-users
+
+ - 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 - 50. Default is 10.
+ - 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.
+ - userIds (array): Filter end users by id(s).
+ - idpIds (array): Filter by identity provider id(s).
+ - groupIds (array): Filter by identity provider group id(s).
+ - accessTypes (array): Filter by access type(s).
+ - searchQuery (string): Fuzzy filter by display name, user name and email.
+ - statuses (array): Filter by user status(es).
+ - sortKey (string): Optional parameter to specify the field used to sort results. (default: username)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ """
+
+ kwargs.update(locals())
+
+ if "sortKey" in kwargs:
+ options = ["created_at", "updated_at", "username"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "search"],
+ "operation": "searchOrganizationUsers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/search"
+
+ body_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "userIds",
+ "idpIds",
+ "groupIds",
+ "accessTypes",
+ "searchQuery",
+ "statuses",
+ "sortKey",
+ "sortOrder",
+ ]
+ 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"searchOrganizationUsers: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersSummaryPanel(self, organizationId: str):
+ """
+ **Get the count of users and user groups for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-summary-panel
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "summaryPanel"],
+ "operation": "getOrganizationIamUsersSummaryPanel",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/summaryPanel"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/aio/api/wireless.py b/meraki/aio/api/wireless.py
index 380d1dc..87306a9 100644
--- a/meraki/aio/api/wireless.py
+++ b/meraki/aio/api/wireless.py
@@ -68,6 +68,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
Dashboard's automatically generated value.
- minor (integer): Desired minor value of the beacon. If the value is set to null it will reset to
Dashboard's automatically generated value.
+ - transmit (object): Transmit settings including power, interval, and advertised power.
"""
kwargs.update(locals())
@@ -83,6 +84,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
"uuid",
"major",
"minor",
+ "transmit",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -196,6 +198,23 @@ def updateDeviceWirelessElectronicShelfLabel(self, serial: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getDeviceWirelessHealthScores(self, serial: str):
+ """
+ **Fetch the health scores for a given AP on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-health-scores
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "healthScores"],
+ "operation": "getDeviceWirelessHealthScores",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getDeviceWirelessLatencyStats(self, serial: str, **kwargs):
"""
**Aggregated latency info for a given AP on this network**
@@ -248,6 +267,123 @@ def getDeviceWirelessLatencyStats(self, serial: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getDeviceWirelessRadioAfcPosition(self, serial: str):
+ """
+ **Return the position for a wireless device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-afc-position
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position"],
+ "operation": "getDeviceWirelessRadioAfcPosition",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/position"
+
+ return self._session.get(metadata, resource)
+
+ def updateDeviceWirelessRadioAfcPosition(self, serial: str, **kwargs):
+ """
+ **Update the position attributes for this device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-afc-position
+
+ - serial (string): Serial
+ - height (object): Height attributes
+ - gps (object): GPS attributes
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position"],
+ "operation": "updateDeviceWirelessRadioAfcPosition",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/position"
+
+ body_params = [
+ "height",
+ "gps",
+ ]
+ 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"updateDeviceWirelessRadioAfcPosition: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getDeviceWirelessRadioAfcPowerLimits(self, serial: str):
+ """
+ **Return the AFC power limits for a wireless device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-afc-power-limits
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "powerLimits"],
+ "operation": "getDeviceWirelessRadioAfcPowerLimits",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/powerLimits"
+
+ return self._session.get(metadata, resource)
+
+ def getDeviceWirelessRadioOverrides(self, serial: str):
+ """
+ **Return the radio overrides of a device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-overrides
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "overrides"],
+ "operation": "getDeviceWirelessRadioOverrides",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/overrides"
+
+ return self._session.get(metadata, resource)
+
+ def updateDeviceWirelessRadioOverrides(self, serial: str, **kwargs):
+ """
+ **Update 2.4 GHz, 5 GHz, and 6 GHz radio settings (channel, channel width, power, and enable/disable) that override RF profiles.**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-overrides
+
+ - serial (string): Serial
+ - rfProfile (object): This device's RF profile
+ - radios (array): Radio overrides.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "overrides"],
+ "operation": "updateDeviceWirelessRadioOverrides",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/overrides"
+
+ body_params = [
+ "rfProfile",
+ "radios",
+ ]
+ 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"updateDeviceWirelessRadioOverrides: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceWirelessRadioSettings(self, serial: str):
"""
**Return the manually configured radio settings overrides of a device, which take precedence over RF profiles.**
@@ -300,6 +436,23 @@ def updateDeviceWirelessRadioSettings(self, serial: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getDeviceWirelessRadioStatus(self, serial: str):
+ """
+ **Show the status of this device's radios**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-status
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "status"],
+ "operation": "getDeviceWirelessRadioStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/status"
+
+ return self._session.get(metadata, resource)
+
def getDeviceWirelessStatus(self, serial: str):
"""
**Return the SSID statuses of an access point**
@@ -655,6 +808,7 @@ def updateNetworkWirelessBluetoothSettings(self, networkId: str, **kwargs):
- majorMinorAssignmentMode (string): The way major and minor number should be assigned to nodes in the network. ('Unique', 'Non-unique')
- major (integer): The major number to be used in the beacon identifier. Only valid in 'Non-unique' mode.
- minor (integer): The minor number to be used in the beacon identifier. Only valid in 'Non-unique' mode.
+ - transmit (object): Transmit settings including power, interval, and advertised power.
"""
kwargs.update(locals())
@@ -679,6 +833,7 @@ def updateNetworkWirelessBluetoothSettings(self, networkId: str, **kwargs):
"majorMinorAssignmentMode",
"major",
"minor",
+ "transmit",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -848,6 +1003,23 @@ def getNetworkWirelessClientsConnectionStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientsHealthScores(self, networkId: str):
+ """
+ **Fetch the health scores for all clients on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-clients-health-scores
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "healthScores"],
+ "operation": "getNetworkWirelessClientsHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessClientsLatencyStats(self, networkId: str, **kwargs):
"""
**Aggregated latency info for this network, grouped by clients**
@@ -902,6 +1074,53 @@ def getNetworkWirelessClientsLatencyStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientsOnboardingHistory(self, networkId: str, **kwargs):
+ """
+ **Return counts of distinct wireless clients connecting to a network over time**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-clients-onboarding-history
+
+ - networkId (string): Network ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - resolution (integer): The time resolution in seconds for returned data. The valid resolutions are: 300. The default is 300.
+ - band (string): Filter results by band (either '2.4', '5' or '6'); this cannot be combined with the SSID filter.
+ - ssid (integer): Filter results by SSID number; this cannot be combined with the band filter.
+ """
+
+ kwargs.update(locals())
+
+ if "band" in kwargs:
+ options = ["2.4", "5", "6"]
+ assert kwargs["band"] in options, f'''"band" cannot be "{kwargs["band"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "onboardingHistory"],
+ "operation": "getNetworkWirelessClientsOnboardingHistory",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/onboardingHistory"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "resolution",
+ "band",
+ "ssid",
+ ]
+ 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"getNetworkWirelessClientsOnboardingHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getNetworkWirelessClientConnectionStats(self, networkId: str, clientId: str, **kwargs):
"""
**Aggregated connectivity info for a given client on this network**
@@ -1038,6 +1257,25 @@ def getNetworkWirelessClientConnectivityEvents(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getNetworkWirelessClientHealthScores(self, networkId: str, clientId: str):
+ """
+ **Fetch the health scores for a given client on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-client-health-scores
+
+ - networkId (string): Network ID
+ - clientId (string): Client ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "healthScores"],
+ "operation": "getNetworkWirelessClientHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/{clientId}/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessClientLatencyHistory(self, networkId: str, clientId: str, **kwargs):
"""
**Return the latency history for a client**
@@ -1133,6 +1371,53 @@ def getNetworkWirelessClientLatencyStats(self, networkId: str, clientId: str, **
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientRoamingHistory(self, networkId: str, clientId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get client roam events within the specified timespan.**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-client-roaming-history
+
+ - networkId (string): Network ID
+ - clientId (string): Client 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "roaming", "history"],
+ "operation": "getNetworkWirelessClientRoamingHistory",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/{clientId}/roaming/history"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getNetworkWirelessClientRoamingHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getNetworkWirelessConnectionStats(self, networkId: str, **kwargs):
"""
**Aggregated connectivity info for this network**
@@ -1284,6 +1569,23 @@ def getNetworkWirelessDevicesConnectionStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessDevicesHealthScores(self, networkId: str):
+ """
+ **Fetch the health scores of all APs on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-devices-health-scores
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "healthScores"],
+ "operation": "getNetworkWirelessDevicesHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/devices/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessDevicesLatencyStats(self, networkId: str, **kwargs):
"""
**Aggregated latency info for this network, grouped by node**
@@ -1811,6 +2113,41 @@ def updateNetworkWirelessLocationScanning(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkWirelessLocationWayfinding(self, networkId: str, **kwargs):
+ """
+ **Change client wayfinding settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-location-wayfinding
+
+ - networkId (string): Network ID
+ - enabled (boolean): Whether to enable client wayfinding on that network (only supported on Wireless networks).
+ - maintenanceWindow (object): Maintenance window during which optimization might take place to improve location accuracy.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "wayfinding"],
+ "operation": "updateNetworkWirelessLocationWayfinding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/location/wayfinding"
+
+ body_params = [
+ "enabled",
+ "maintenanceWindow",
+ ]
+ 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"updateNetworkWirelessLocationWayfinding: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkWirelessMeshStatuses(self, networkId: str, total_pages=1, direction="next", **kwargs):
"""
**List wireless mesh statuses for repeaters**
@@ -1848,32 +2185,26 @@ def getNetworkWirelessMeshStatuses(self, networkId: str, total_pages=1, directio
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateNetworkWirelessRadioRrm(self, networkId: str, **kwargs):
+ def updateNetworkWirelessOpportunisticPcap(self, networkId: str, **kwargs):
"""
- **Update the AutoRF settings for a wireless network**
- https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-rrm
+ **Update the Opportunistic Pcap settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-opportunistic-pcap
- networkId (string): Network ID
- - busyHour (object): Busy Hour settings
- - channel (object): Channel settings
- - fra (object): FRA settings
- - ai (object): AI settings
+ - enablement (object): Enablement settings
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "radio", "rrm"],
- "operation": "updateNetworkWirelessRadioRrm",
+ "tags": ["wireless", "configure", "opportunisticPcap"],
+ "operation": "updateNetworkWirelessOpportunisticPcap",
}
networkId = urllib.parse.quote(str(networkId), safe="")
- resource = f"/networks/{networkId}/wireless/radio/rrm"
+ resource = f"/networks/{networkId}/wireless/opportunisticPcap"
body_params = [
- "busyHour",
- "channel",
- "fra",
- "ai",
+ "enablement",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1881,18 +2212,94 @@ def updateNetworkWirelessRadioRrm(self, networkId: 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"updateNetworkWirelessRadioRrm: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"updateNetworkWirelessOpportunisticPcap: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.put(metadata, resource, payload)
- def getNetworkWirelessRfProfiles(self, networkId: str, **kwargs):
+ def updateNetworkWirelessRadioAutoRf(self, networkId: str, **kwargs):
"""
- **List RF profiles for this network**
- https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-rf-profiles
+ **Update the AutoRF settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-auto-rf
- networkId (string): Network ID
- - includeTemplateProfiles (boolean): If the network is bound to a template, this parameter controls whether or not the non-basic RF profiles defined on the template should be included in the response alongside the non-basic profiles defined on the bound network. Defaults to false.
- """
+ - busyHour (object): Busy Hour settings
+ - channel (object): Channel settings
+ - fra (object): FRA settings
+ - aiRrm (object): AI-RRM settings
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf"],
+ "operation": "updateNetworkWirelessRadioAutoRf",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/radio/autoRf"
+
+ body_params = [
+ "busyHour",
+ "channel",
+ "fra",
+ "aiRrm",
+ ]
+ 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"updateNetworkWirelessRadioAutoRf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def updateNetworkWirelessRadioRrm(self, networkId: str, **kwargs):
+ """
+ **Update the AutoRF settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-rrm
+
+ - networkId (string): Network ID
+ - busyHour (object): Busy Hour settings
+ - channel (object): Channel settings
+ - fra (object): FRA settings
+ - ai (object): AI settings
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "rrm"],
+ "operation": "updateNetworkWirelessRadioRrm",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/radio/rrm"
+
+ body_params = [
+ "busyHour",
+ "channel",
+ "fra",
+ "ai",
+ ]
+ 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"updateNetworkWirelessRadioRrm: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getNetworkWirelessRfProfiles(self, networkId: str, **kwargs):
+ """
+ **List RF profiles for this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-rf-profiles
+
+ - networkId (string): Network ID
+ - includeTemplateProfiles (boolean): If the network is bound to a template, this parameter controls whether or not the non-basic RF profiles defined on the template should be included in the response alongside the non-basic profiles defined on the bound network. Defaults to false.
+ """
kwargs.update(locals())
@@ -2252,6 +2659,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- number (string): Number
- name (string): The name of the SSID
- enabled (boolean): Whether or not the SSID is enabled
+ - localAuth (boolean): Extended local auth flag for Enterprise NAC
- authMode (string): The association control method for the SSID ('open', 'open-enhanced', 'psk', 'open-with-radius', 'open-enhanced-with-radius', 'open-with-nac', '8021x-meraki', '8021x-nac', '8021x-radius', '8021x-google', '8021x-entra', '8021x-localradius', 'ipsk-with-radius', 'ipsk-without-radius', 'ipsk-with-nac' or 'ipsk-with-radius-easy-psk')
- enterpriseAdminAccess (string): Whether or not an SSID is accessible by 'enterprise' administrators ('access disabled' or 'access enabled')
- ssidAdminAccessible (boolean): SSID Administrator access status
@@ -2283,6 +2691,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- radiusAccountingInterimInterval (integer): The interval (in seconds) in which accounting information is updated and sent to the RADIUS accounting server.
- radiusAttributeForGroupPolicies (string): Specify the RADIUS attribute used to look up group policies ('Filter-Id', 'Reply-Message', 'Airespace-ACL-Name' or 'Aruba-User-Role'). Access points must receive this attribute in the RADIUS Access-Accept message
- ipAssignmentMode (string): The client IP assignment mode ('NAT mode', 'Bridge mode', 'Layer 3 roaming', 'Ethernet over GRE', 'Layer 3 roaming with a concentrator', 'VPN' or 'Campus Gateway')
+ - campusGateway (object): Campus gateway settings
- useVlanTagging (boolean): Whether or not traffic should be directed to use specific VLANs. This param is only valid if the ipAssignmentMode is 'Bridge mode' or 'Layer 3 roaming'
- concentratorNetworkId (string): The concentrator to use when the ipAssignmentMode is 'Layer 3 roaming with a concentrator' or 'VPN'.
- secondaryConcentratorNetworkId (string): The secondary concentrator to use when the ipAssignmentMode is 'VPN'. If configured, the APs will switch to using this concentrator if the primary concentrator is unreachable. This param is optional. ('disabled' represents no secondary concentrator.)
@@ -2403,6 +2812,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
body_params = [
"name",
"enabled",
+ "localAuth",
"authMode",
"enterpriseAdminAccess",
"ssidAdminAccessible",
@@ -2434,6 +2844,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
"radiusAccountingInterimInterval",
"radiusAttributeForGroupPolicies",
"ipAssignmentMode",
+ "campusGateway",
"useVlanTagging",
"concentratorNetworkId",
"secondaryConcentratorNetworkId",
@@ -3015,6 +3426,152 @@ def updateNetworkWirelessSsidOpenRoaming(self, networkId: str, number: str, **kw
return self._session.put(metadata, resource, payload)
+ def updateNetworkWirelessSsidPoliciesClientExclusion(self, networkId: str, number: str, static: dict, **kwargs):
+ """
+ **Update the client exclusion status configuration for a given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - static (object): Static client exclusion status
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion"],
+ "operation": "updateNetworkWirelessSsidPoliciesClientExclusion",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion"
+
+ body_params = [
+ "static",
+ ]
+ 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"updateNetworkWirelessSsidPoliciesClientExclusion: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Set the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion-static-exclusions
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to set as static exclusion list
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions"],
+ "operation": "updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions"
+
+ body_params = [
+ "macs",
+ ]
+ 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"updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Add a list of MAC addresses to the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-add
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to add to static exclusion
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bulkAdd"],
+ "operation": "createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkAdd"
+
+ body_params = [
+ "macs",
+ ]
+ 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"createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Delete a list of MAC addresses from the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-remove
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to remove from static exclusion
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bulkRemove"],
+ "operation": "createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkRemove"
+
+ body_params = [
+ "macs",
+ ]
+ 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"createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getNetworkWirelessSsidSchedules(self, networkId: str, number: str):
"""
**List the outage schedule for the SSID**
@@ -3103,6 +3660,8 @@ 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.
+ - language (string): Language of 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.
@@ -3123,6 +3682,32 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
assert kwargs["splashTimeout"] in options, (
f'''"splashTimeout" cannot be "{kwargs["splashTimeout"]}", & must be set to one of: {options}'''
)
+ if "language" in kwargs:
+ options = [
+ "DA",
+ "DE",
+ "EL",
+ "EN",
+ "ES",
+ "FI",
+ "FR",
+ "GL",
+ "IT",
+ "JA",
+ "KO",
+ "NL",
+ "NO",
+ "PL",
+ "PT",
+ "RU",
+ "SK",
+ "SV",
+ "UK",
+ "ZH",
+ ]
+ assert kwargs["language"] in options, (
+ f'''"language" cannot be "{kwargs["language"]}", & must be set to one of: {options}'''
+ )
if "controllerDisconnectionBehavior" in kwargs:
options = ["default", "open", "restricted"]
assert kwargs["controllerDisconnectionBehavior"] in options, (
@@ -3144,6 +3729,8 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
"redirectUrl",
"useRedirectUrl",
"welcomeMessage",
+ "language",
+ "userConsent",
"themeId",
"splashLogo",
"splashImage",
@@ -3375,34 +3962,38 @@ def updateNetworkWirelessZigbee(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
- def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceConnectivityWirelessRfHealthByBand(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Returns the current Air Marshal rules for this organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-rules
+ **Show the by-device RF Health score overview information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-connectivity-wireless-rf-health-by-band
- 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
- - networkIds (array): (optional) The set of network IDs to include.
- - 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): Networks for which information should be gathered.
+ - 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 3600, 14400, 86400. The default is 3600. Interval is calculated if time params are provided.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "airMarshal", "rules"],
- "operation": "getOrganizationWirelessAirMarshalRules",
+ "tags": ["wireless", "configure", "connectivity", "rfHealth", "byBand"],
+ "operation": "getOrganizationAssuranceConnectivityWirelessRfHealthByBand",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/airMarshal/rules"
+ resource = f"/organizations/{organizationId}/assurance/connectivity/wireless/rfHealth/byBand"
query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
"networkIds",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -3419,23 +4010,26 @@ def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_page
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"getOrganizationWirelessAirMarshalRules: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceConnectivityWirelessRfHealthByBand: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessAirMarshalSettingsByNetwork(
+ def getOrganizationAssuranceImpactedDeviceWirelessByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Returns the current Air Marshal settings for this network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-settings-by-network
+ **Returns count of impacted wireless devices per network on a given organization and time range.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-impacted-device-wireless-by-network
- 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
- - networkIds (array): The network IDs to include in the result set.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - 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 2 hours and be less than or equal to 14 days. The default is 2 hours.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
"""
@@ -3443,14 +4037,17 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "airMarshal", "settings", "byNetwork"],
- "operation": "getOrganizationWirelessAirMarshalSettingsByNetwork",
+ "tags": ["wireless", "monitor", "impactedDevice", "byNetwork"],
+ "operation": "getOrganizationAssuranceImpactedDeviceWirelessByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/airMarshal/settings/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/impactedDevice/wireless/byNetwork"
query_params = [
- "networkIds",
+ "networkGroupIds",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
@@ -3458,7 +4055,7 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
+ "networkGroupIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3470,23 +4067,29 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
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"getOrganizationWirelessAirMarshalSettingsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceImpactedDeviceWirelessByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List access point client count at the moment in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-overview-by-device
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network
- 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
- - networkIds (array): Optional parameter to filter access points client counts by network ID. This filter uses multiple exact matches.
- - serials (array): Optional parameter to filter access points client counts by its serial numbers. This filter uses multiple exact matches.
- - campusGatewayClusterIds (array): Optional parameter to filter access points client counts by MCG cluster IDs. This filter uses multiple exact matches.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
"""
@@ -3494,16 +4097,20 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "clients", "overview", "byDevice"],
- "operation": "getOrganizationWirelessClientsOverviewByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/clients/overview/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork"
query_params = [
"networkIds",
"serials",
- "campusGatewayClusterIds",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
@@ -3513,7 +4120,8 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
array_params = [
"networkIds",
"serials",
- "campusGatewayClusterIds",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3525,57 +4133,61 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
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"getOrganizationWirelessClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationByDevice(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average channel utilization for all bands in a network, split by AP**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-device
+ **Summarizes wireless post connection capacity successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-band
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "byDevice"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byBand"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3587,57 +4199,61 @@ def getOrganizationWirelessDevicesChannelUtilizationByDevice(
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"getOrganizationWirelessDevicesChannelUtilizationByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average channel utilization across all bands for all networks in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-network
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "byNetwork"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationByNetwork",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClient"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3649,57 +4265,61 @@ def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
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"getOrganizationWirelessDevicesChannelUtilizationByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get a time-series of average channel utilization for all bands, segmented by device.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-device-by-interval
+ **Summarizes wireless post connection capacity successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client-os
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byDevice", "byInterval"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byDevice/byInterval"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClientOs"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3711,57 +4331,61 @@ def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
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"getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get a time-series of average channel utilization for all bands**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-network-by-interval
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client-type
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byNetwork", "byInterval"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byNetwork/byInterval"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClientType"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3773,44 +4397,61 @@ def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
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"getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses
+ **Summarizes wireless post connection capacity successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-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 100.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "ethernet", "statuses"],
- "operation": "getOrganizationWirelessDevicesEthernetStatuses",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/ethernet/statuses"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byDevice"
query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3822,59 +4463,63 @@ def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, to
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"getOrganizationWirelessDevicesEthernetStatuses: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Get average packet loss for the given timespan for all clients in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-client
+ **Time-series of wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-interval
- 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
- networkIds (array): Filter results by network.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - macs (array): Filter results by client mac address(es).
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byClient"],
- "operation": "getOrganizationWirelessDevicesPacketLossByClient",
+ "tags": ["wireless", "monitor", "experience", "channelAvailability", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byClient"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byInterval"
query_params = [
"networkIds",
- "ssids",
+ "serials",
+ "ssidNumbers",
"bands",
- "macs",
- "perPage",
- "startingAfter",
- "endingBefore",
"t0",
"t1",
"timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "ssids",
+ "serials",
+ "ssidNumbers",
"bands",
- "macs",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3886,58 +4531,60 @@ def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str,
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"getOrganizationWirelessDevicesPacketLossByClient: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Get average packet loss for the given timespan for all devices in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-device
+ **Summarizes wireless post connection capacity successes and failures by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-ssid
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byDevice"],
- "operation": "getOrganizationWirelessDevicesPacketLossByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/bySsid"
query_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
- "perPage",
- "startingAfter",
- "endingBefore",
"t0",
"t1",
"timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
]
for k, v in kwargs.items():
@@ -3950,60 +4597,70 @@ def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str,
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"getOrganizationWirelessDevicesPacketLossByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByNetwork(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average packet loss for the given timespan for all networks in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-network
+ **Provides insights into wireless capacity experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-insights-by-network
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
+ if "contributor" in kwargs:
+ options = ["Co-channel interference", "High traffic", "Non-wifi interference"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byNetwork"],
- "operation": "getOrganizationWirelessDevicesPacketLossByNetwork",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/insights/byNetwork"
query_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "contributor",
+ "subContributor",
"t0",
"t1",
"timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
]
for k, v in kwargs.items():
@@ -4016,53 +4673,143 @@ def getOrganizationWirelessDevicesPacketLossByNetwork(
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"getOrganizationWirelessDevicesPacketLossByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceClientsInsights(self, organizationId: str, **kwargs):
"""
- **Return a record of power mode changes for wireless devices in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-power-mode-history
+ **Returns the top wireless service-level insights for the specified time window, including each network and the impacted client count per metric.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-clients-insights
+
+ - 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 less than or equal to 14 days.
+ - limit (integer): Number of top 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", "clients", "insights"],
+ "operation": "getOrganizationAssuranceWirelessExperienceClientsInsights",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/clients/insights"
+
+ 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"getOrganizationAssuranceWirelessExperienceClientsInsights: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns time series data for impacted and active clients for organization wireless experience metrics.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-clients-overview-history-by-interval
+
+ - 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.
+ - resolution (integer): The time resolution in seconds for returned data. The valid resolutions are: 300, 600, 900, 1800, 3600, 86400. The default is 300.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "clients", "overview", "history", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/clients/overview/history/byInterval"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "resolution",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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 parameter to filter the result set by the included set of network IDs
- - serials (array): Optional parameter to filter device availabilities history by device serial numbers
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "power", "mode", "history"],
- "operation": "getOrganizationWirelessDevicesPowerModeHistory",
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/power/mode/history"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork"
query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
"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",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4074,133 +4821,5090 @@ def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, to
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"getOrganizationWirelessDevicesPowerModeHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceCoverageByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesProvisioningDeployments(
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List the zero touch deployments for wireless access points in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments
+ **Summarizes wireless coverage successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-band
- 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 20.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - search (string): Filter by MAC address, serial number, new device name, old device name, or model.
- - sortBy (string): Field used to sort results. Default is 'status'.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless coverage successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "coverage", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by SSID.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless coverage experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["Admin power restriction", "Insufficient AP density", "Sticky client", "Weak client signal"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns organization wireless experience metrics overview grouped by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-metrics-overview-history-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "metrics", "overview", "history", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/metrics/overview/history/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-band
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. Default is 10000.
+ - 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": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "successfulConnects", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-server
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byServer"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byServer"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless successful connects experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["assoc", "auth", "dhcp", "dns"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "subContributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless time to connect metrics by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-band
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless time to connect metrics by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. Default is 10000.
+ - 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": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless time to connect by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "timeToConnect", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-server
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byServer"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byServer"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless time to connect experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["assoc", "auth", "dhcp", "dns"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns the current Air Marshal rules for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-rules
+
+ - 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
+ - networkIds (array): (optional) The set of network IDs to include.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "airMarshal", "rules"],
+ "operation": "getOrganizationWirelessAirMarshalRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/airMarshal/rules"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationWirelessAirMarshalRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAirMarshalSettingsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns the current Air Marshal settings for this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-settings-by-network
+
+ - 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
+ - networkIds (array): The network IDs to include in the result set.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "airMarshal", "settings", "byNetwork"],
+ "operation": "getOrganizationWirelessAirMarshalSettingsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/airMarshal/settings/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationWirelessAirMarshalSettingsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAlertsLowPowerByDevice(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Gets all low power related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-alerts-low-power-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "alerts", "lowPower", "byDevice"],
+ "operation": "getOrganizationWirelessAlertsLowPowerByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/alerts/lowPower/byDevice"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessAlertsLowPowerByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessCertificatesOpenRoamingCertificateAuthority(self, organizationId: str):
+ """
+ **Query for details on the organization's OpenRoaming Certificate Authority certificate (CAs).**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-certificates-open-roaming-certificate-authority
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "certificates", "openRoaming", "certificateAuthority"],
+ "operation": "getOrganizationWirelessCertificatesOpenRoamingCertificateAuthority",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/certificates/openRoaming/certificateAuthority"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationWirelessClientsConnectionsAssociationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarize association outcomes per wireless client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-association-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "association", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsAssociationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/association/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsAssociationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarize authentication outcomes per wireless client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "authentication", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsAuthenticationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/authentication/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsDhcpByClient(self, organizationId: str, **kwargs):
+ """
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-dhcp-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "dhcp", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsDhcpByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/dhcp/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsDhcpByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns failed wireless client connections for this organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-failures-history-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
+ - connectionTimeSortOrder (string): (optional) Sort order of events by connection start time. (default desc)
+ - failureSteps (array): (optional) The step in the connection process that failed
+ - clientMac (string): (optional) The MAC address of the client with which the list of events will be filtered.
+ - serials (array): (optional) Filter devices by serial number
+ - timespan (integer): (optional) The timespan, in seconds, for the failed connections. The period will be from [timespan] seconds ago until now. The maximum allowed timespan is 1 month. Default: 86400 (24 hours)
+ - ssidNumber (integer): (optional) The SSID number to include
+ - networkIds (array): (optional) The set of network IDs to include.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.
+ - 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())
+
+ if "connectionTimeSortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["connectionTimeSortOrder"] in options, (
+ f'''"connectionTimeSortOrder" cannot be "{kwargs["connectionTimeSortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "ssidNumber" in kwargs:
+ options = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
+ assert kwargs["ssidNumber"] in options, (
+ f'''"ssidNumber" cannot be "{kwargs["ssidNumber"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "connections", "failures", "history", "byDevice"],
+ "operation": "getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/failures/history/byDevice"
+
+ query_params = [
+ "connectionTimeSortOrder",
+ "failureSteps",
+ "clientMac",
+ "serials",
+ "timespan",
+ "ssidNumber",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "failureSteps",
+ "serials",
+ "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"getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarize the number of wireless clients impacted by connection failures on network SSIDs, across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-impacted-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wireless", "monitor", "clients", "connections", "impacted", "byNetwork", "bySsid"],
+ "operation": "getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/impacted/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "networkGroupIds",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List access point client count at the moment in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-overview-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
+ - networkIds (array): Optional parameter to filter access points client counts by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter access points client counts by its serial numbers. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter access points client counts by MCG cluster IDs. This filter uses multiple exact matches.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "overview", "byDevice"],
+ "operation": "getOrganizationWirelessClientsOverviewByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/overview/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewayClusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewayClusterIds",
+ ]
+ 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"getOrganizationWirelessClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def byOrganizationWirelessClientsRfHealthOverviewNetwork(self, organizationId: str, **kwargs):
+ """
+ **Show the by-network client information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-clients-rf-health-overview-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - channels (array): Channel for which information should be gathered.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - tags (array): Access Point tags for which information should be gathered.
+ - models (array): Access Point models for which information should be gathered.
+ - rfProfiles (array): Rf Profiles for which information should be gathered.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ - retryOnEmpty (boolean): If true, the query will be retried with a longer timeframe if the results are empty.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "rfHealth", "overview"],
+ "operation": "byOrganizationWirelessClientsRfHealthOverviewNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/rfHealth/overview/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "gFloorplanId",
+ "tags",
+ "models",
+ "rfProfiles",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "retryOnEmpty",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ ]
+ 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"byOrganizationWirelessClientsRfHealthOverviewNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsStickyEvents(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get sticky client events within the specified timespan.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-sticky-events
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - clientIds (array): Filter results by client id.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "stickyEvents"],
+ "operation": "getOrganizationWirelessClientsStickyEvents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/stickyEvents"
+
+ query_params = [
+ "networkIds",
+ "clientIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clientIds",
+ ]
+ 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"getOrganizationWirelessClientsStickyEvents: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns client usage details for wireless networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-network
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "byNetwork"],
+ "operation": "getOrganizationWirelessClientsUsageByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns client usage details for wireless network SSIDs within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-network-by-ssid
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - ssidIds (array): Filter results by a list of SSID IDs.
+ - ssidNames (array): Filter results by a list of SSID names.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "byNetwork", "bySsid"],
+ "operation": "getOrganizationWirelessClientsUsageByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/byNetwork/bySsid"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "ssidIds",
+ "ssidNames",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "ssidIds",
+ "ssidNames",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageBySsid(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns client usage details for SSIDs within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-ssid
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - ssidNames (array): Filter results by a list of SSID names.
+ - networkIds (array): Limit the results to clients that belong to one of the provided networks.
+ - networkGroupIds (array): Limit the results to clients that belong to one of the provided network groups.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "bySsid"],
+ "operation": "getOrganizationWirelessClientsUsageBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/bySsid"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "ssidNames",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ssidNames",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesAccelerometerStatuses(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the most recent AP accelerometer status information for wireless devices that support it.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-accelerometer-statuses
+
+ - 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 100.
+ - 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "accelerometer", "statuses"],
+ "operation": "getOrganizationWirelessDevicesAccelerometerStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/accelerometer/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessDevicesAccelerometerStatuses: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average channel utilization for all bands in a network, split by AP**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average channel utilization across all bands for all networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get a time-series of average channel utilization for all bands, segmented by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-device-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byDevice", "byInterval"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byDevice/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get a time-series of average channel utilization for all bands**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesDataRateByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average uplink and downlink datarates for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-data-rate-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "dataRate", "byClient"],
+ "operation": "getOrganizationWirelessDevicesDataRateByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/dataRate/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesDataRateByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses
+
+ - 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 100.
+ - 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "ethernet", "statuses"],
+ "operation": "getOrganizationWirelessDevicesEthernetStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/ethernet/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessDevicesEthernetStatuses: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get latency summaries for all wireless devices in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-by-client
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ - macs (array): Filter results by client mac address(es).
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byClient"],
+ "operation": "getOrganizationWirelessDevicesLatencyByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byClient"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "bands",
+ "ssids",
+ "macs",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "ssids",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get latency summaries for all wireless devices in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesLatencyByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byDevice"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get per-network latency summaries for all wireless networks in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-by-network
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesLatencyByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessDevicesLiveToolsClientDisconnect(self, organizationId: str, clientId: str, **kwargs):
+ """
+ **Enqueue a job to disconnect a client from an AP**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-live-tools-client-disconnect
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "liveTools", "devices", "clients", "disconnect"],
+ "operation": "createOrganizationWirelessDevicesLiveToolsClientDisconnect",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/liveTools/clients/{clientId}/disconnect"
+
+ 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"createOrganizationWirelessDevicesLiveToolsClientDisconnect: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average packet loss for the given timespan for all clients in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byClient"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byClient"
+
+ query_params = [
+ "networkIds",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average packet loss for the given timespan for all devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPacketLossByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average packet loss for the given timespan for all networks in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a record of power mode changes for wireless devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-power-mode-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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 parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "power", "mode", "history"],
+ "operation": "getOrganizationWirelessDevicesPowerModeHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/power/mode/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesPowerModeHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesProvisioningDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the zero touch deployments for wireless access points in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments
+
+ - 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 20.
+ - 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.
+ - search (string): Filter by MAC address, serial number, new device name, old device name, or model.
+ - sortBy (string): Field used to sort results. Default is 'status'.
- sortOrder (string): Sort order. Default is 'asc'.
- deploymentType (string): Filter deployments by type.
"""
kwargs.update(locals())
- if "sortBy" in kwargs:
- options = ["afterAction", "createdAt", "deploymentId", "name", "status"]
- assert kwargs["sortBy"] in options, (
- f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
- )
- if "sortOrder" in kwargs:
- options = ["asc", "desc"]
- assert kwargs["sortOrder"] in options, (
- f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
- )
- if "deploymentType" in kwargs:
- options = ["deploy", "replace"]
- assert kwargs["deploymentType"] in options, (
- f'''"deploymentType" cannot be "{kwargs["deploymentType"]}", & must be set to one of: {options}'''
- )
+ if "sortBy" in kwargs:
+ options = ["afterAction", "createdAt", "deploymentId", "name", "status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "deploymentType" in kwargs:
+ options = ["deploy", "replace"]
+ assert kwargs["deploymentType"] in options, (
+ f'''"deploymentType" cannot be "{kwargs["deploymentType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "getOrganizationWirelessDevicesProvisioningDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "deploymentType",
+ ]
+ 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"getOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, items: list, **kwargs):
+ """
+ **Create a zero touch deployment for a wireless access point**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-provisioning-deployment
+
+ - organizationId (string): Organization ID
+ - items (array): List of zero touch deployments to create
+ - meta (object): Metadata relevant to the paginated dataset
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "createOrganizationWirelessDevicesProvisioningDeployment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ body_params = [
+ "items",
+ "meta",
+ ]
+ 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"createOrganizationWirelessDevicesProvisioningDeployment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationId: str, items: list, **kwargs):
+ """
+ **Update a zero touch deployment**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-provisioning-deployments
+
+ - organizationId (string): Organization ID
+ - items (array): List of zero touch deployments to create
+ - meta (object): Metadata relevant to the paginated dataset
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "updateOrganizationWirelessDevicesProvisioningDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ body_params = [
+ "items",
+ "meta",
+ ]
+ 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"updateOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns deployment IDs for the given new node serial numbers**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments-by-new-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 80.
+ - 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.
+ - serials (array): Array of new device serial numbers to query
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments", "byNewDevice"],
+ "operation": "getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/byNewDevice"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, deploymentId: str):
+ """
+ **Delete a zero touch deployment**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-devices-provisioning-deployment
+
+ - organizationId (string): Organization ID
+ - deploymentId (string): Deployment ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "deleteOrganizationWirelessDevicesProvisioningDeployment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ deploymentId = urllib.parse.quote(str(deploymentId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/{deploymentId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationWirelessDevicesProvisioningRecommendationsTags(self, organizationId: str, **kwargs):
+ """
+ **List the recommended device tags for zero touch deployments available for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-recommendations-tags
+
+ - organizationId (string): Organization ID
+ - networkIds (array): The list of networks to use as hints for device tags recommendations.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "recommendations", "tags"],
+ "operation": "getOrganizationWirelessDevicesProvisioningRecommendationsTags",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/recommendations/tags"
+
+ 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"getOrganizationWirelessDevicesProvisioningRecommendationsTags: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ """
+ **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
+ - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ """
+ **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
+ - status (string): The "status" to update the Certificate Authority to. Only valid option is "trusted".
+ - certificateAuthorityId (string): The ID of the Certificate Authority to update.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "updateOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ body_params = [
+ "status",
+ "certificateAuthorityId",
+ ]
+ 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"updateOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizationId: str):
+ """
+ **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
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "createOrganizationWirelessDevicesRadsecCertificatesAuthority",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ return self._session.post(metadata, resource)
+
+ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organizationId: str, **kwargs):
+ """
+ **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
+ - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ 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.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-radsec-certificates-authorities-crls-deltas
+
+ - organizationId (string): Organization ID
+ - certificateAuthorityIds (array): Parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls", "deltas"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls/deltas"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessDevicesSignalQualityByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byClient"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSignalQualityByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSignalQualityByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSystemCpuLoadHistory(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return the CPU Load history for a list of wireless devices in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-system-cpu-load-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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 parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "system", "cpu", "load", "history"],
+ "operation": "getOrganizationWirelessDevicesSystemCpuLoadHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/system/cpu/load/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesSystemCpuLoadHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesTelemetry(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the wireless device telemetry of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-telemetry
+
+ - 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 - 200. Default is 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 3 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 minutes 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 5 minutes and be less than or equal to 30 minutes. The default is 30 minutes.
+ - networkIds (array): Optional parameter to filter results by network.
+ - serials (array): Optional parameter to filter results by device serial.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "telemetry"],
+ "operation": "getOrganizationWirelessDevicesTelemetry",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/telemetry"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesTelemetry: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesWirelessControllersByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List of Catalyst access points information**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-wireless-controllers-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
+ - networkIds (array): Optional parameter to filter access points by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter access points by its cloud ID. This filter uses multiple exact matches.
+ - controllerSerials (array): Optional parameter to filter access points by its wireless LAN controller cloud ID. This filter uses multiple exact matches.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wireless", "monitor", "devices", "wirelessControllers", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesWirelessControllersByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/wirelessControllers/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "controllerSerials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "controllerSerials",
+ ]
+ 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"getOrganizationWirelessDevicesWirelessControllersByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-by-network
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter scanning settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "byNetwork"],
+ "operation": "getOrganizationWirelessLocationScanningByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationScanningByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-receivers
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter scanning API receivers by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "getOrganizationWirelessLocationScanningReceivers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationScanningReceivers: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessLocationScanningReceiver(
+ self, organizationId: str, network: dict, url: str, version: str, radio: dict, sharedSecret: str, **kwargs
+ ):
+ """
+ **Add new receiver for scanning API**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - network (object): Add scanning API receiver for network
+ - url (string): Receiver Url
+ - version (string): Scanning API Version
+ - radio (object): Add scanning API Radio
+ - sharedSecret (string): Secret Value for Receiver
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "createOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+
+ body_params = [
+ "network",
+ "url",
+ "version",
+ "radio",
+ "sharedSecret",
+ ]
+ 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"createOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str, **kwargs):
+ """
+ **Change scanning API receiver settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - receiverId (string): Receiver ID
+ - url (string): Receiver Url
+ - version (string): Scanning API Version
+ - radio (object): Add scanning API Radio
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "updateOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ receiverId = urllib.parse.quote(str(receiverId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+
+ body_params = [
+ "url",
+ "version",
+ "radio",
+ ]
+ 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"updateOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str):
+ """
+ **Delete a scanning API receiver**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - receiverId (string): Receiver ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "deleteOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ receiverId = urllib.parse.quote(str(receiverId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationWirelessLocationWayfindingByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return Client wayfinding settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-wayfinding-by-network
+
+ - 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 parameter to filter wayfinding settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "wayfinding", "byNetwork"],
+ "operation": "getOrganizationWirelessLocationWayfindingByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/wayfinding/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationWayfindingByNetwork: 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**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-mqtt-settings
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter mqtt settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "mqtt", "settings"],
+ "operation": "getOrganizationWirelessMqttSettings",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationWirelessMqttSettings(self, organizationId: str, network: dict, mqtt: dict, **kwargs):
+ """
+ **Add new broker config for wireless MQTT**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-mqtt-settings
+
+ - organizationId (string): Organization ID
+ - network (object): Add MQTT Settings for network
+ - mqtt (object): MQTT Settings for network
+ - ble (object): MQTT BLE Settings for network
+ - wifi (object): MQTT Wi-Fi Settings for network
+ """
+
+ kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "getOrganizationWirelessDevicesProvisioningDeployments",
+ "tags": ["wireless", "configure", "mqtt", "settings"],
+ "operation": "updateOrganizationWirelessMqttSettings",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+
+ body_params = [
+ "network",
+ "mqtt",
+ "ble",
+ "wifi",
+ ]
+ 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"updateOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def byOrganizationWirelessOpportunisticPcapLicenseNetwork(self, organizationId: str, **kwargs):
+ """
+ **Check the Opportunistic Pcap license status of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-opportunistic-pcap-license-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "opportunisticPcap", "license"],
+ "operation": "byOrganizationWirelessOpportunisticPcapLicenseNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/opportunisticPcap/license/byNetwork"
+
+ 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"byOrganizationWirelessOpportunisticPcapLicenseNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessRadioAfcPositionByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the AFC power limits of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-afc-position-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 parameter to filter device's AFC position by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter device's AFC position by device serial numbers. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position", "byDevice"],
+ "operation": "getOrganizationWirelessRadioAfcPositionByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/afc/position/byDevice"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
- "search",
- "sortBy",
- "sortOrder",
- "deploymentType",
+ "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
+ 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"getOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioAfcPositionByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, items: list, **kwargs):
+ def getOrganizationWirelessRadioAfcPowerLimitsByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Create a zero touch deployment for a wireless access point**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-provisioning-deployment
+ **List the AFC power limits of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-afc-power-limits-by-device
- organizationId (string): Organization ID
- - items (array): List of zero touch deployments to create
- - meta (object): Metadata relevant to the paginated dataset
+ - 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 parameter to filter device's AFC power limits by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter device's AFC power limits by device serial numbers. This filter uses multiple exact matches.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "createOrganizationWirelessDevicesProvisioningDeployment",
+ "tags": ["wireless", "configure", "radio", "afc", "powerLimits", "byDevice"],
+ "operation": "getOrganizationWirelessRadioAfcPowerLimitsByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/radio/afc/powerLimits/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"getOrganizationWirelessRadioAfcPowerLimitsByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessRadioAutoRfByNetwork(self, organizationId: str, **kwargs):
+ """
+ **List the AutoRF settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-auto-rf-by-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioAutoRfByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/byNetwork"
+
+ 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"getOrganizationWirelessRadioAutoRfByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessRadioAutoRfChannelsPlanningActivities(self, organizationId: str, **kwargs):
+ """
+ **List the channel planning activities of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-auto-rf-channels-planning-activities
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ - deviceSerials (array): Optional parameter to filter results by device serial.
+ - bands (array): Optional parameter to filter results by bands. Valid bands are 2.4, 5, and 6.
+ - channels (array): Optional parameter to filter results by channels.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - tags (array): Optional parameter to filter results by node tags.
+ - models (array): Optional parameter to filter results by access point models.
+ - rfProfiles (array): Optional parameter to filter results by RF Profiles.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf", "channels", "planning", "activities"],
+ "operation": "getOrganizationWirelessRadioAutoRfChannelsPlanningActivities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/planning/activities"
+
+ query_params = [
+ "networkIds",
+ "deviceSerials",
+ "bands",
+ "channels",
+ "serials",
+ "gFloorplanId",
+ "tags",
+ "models",
+ "rfProfiles",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
- body_params = [
- "items",
- "meta",
+ array_params = [
+ "networkIds",
+ "deviceSerials",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(
- f"createOrganizationWirelessDevicesProvisioningDeployment: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioAutoRfChannelsPlanningActivities: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationId: str, items: list, **kwargs):
+ def recalculateOrganizationWirelessRadioAutoRfChannels(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Update a zero touch deployment**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-provisioning-deployments
+ **Recalculates automatically assigned channels for every AP within specified the specified network(s)**
+ https://developer.cisco.com/meraki/api-v1/#!recalculate-organization-wireless-radio-auto-rf-channels
- organizationId (string): Organization ID
- - items (array): List of zero touch deployments to create
- - meta (object): Metadata relevant to the paginated dataset
+ - networkIds (array): A list of network ids (limit: 15).
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "updateOrganizationWirelessDevicesProvisioningDeployments",
+ "tags": ["wireless", "configure", "radio", "autoRf", "channels"],
+ "operation": "recalculateOrganizationWirelessRadioAutoRfChannels",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/recalculate"
body_params = [
- "items",
- "meta",
+ "networkIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4209,55 +9913,47 @@ def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationI
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"updateOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ f"recalculateOrganizationWirelessRadioAutoRfChannels: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def deleteOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, deploymentId: str):
- """
- **Delete a zero touch deployment**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-devices-provisioning-deployment
-
- - organizationId (string): Organization ID
- - deploymentId (string): Deployment ID
- """
-
- metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "deleteOrganizationWirelessDevicesProvisioningDeployment",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- deploymentId = urllib.parse.quote(str(deploymentId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/{deploymentId}"
-
- return self._session.delete(metadata, resource)
+ return self._session.post(metadata, resource, payload)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioOverridesByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **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
+ **Return a list of radio overrides**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-overrides-by-device
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - 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 - 100. Default is 100.
+ - 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): A list of network IDs. The returned radio overrides will be filtered to only include these networks.
+ - serials (array): A list of serial numbers. The returned radio overrides will be filtered to only include these serials.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ "tags": ["wireless", "configure", "radio", "overrides", "byDevice"],
+ "operation": "getOrganizationWirelessRadioOverridesByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+ resource = f"/organizations/{organizationId}/wireless/radio/overrides/byDevice"
query_params = [
- "certificateAuthorityIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4269,88 +9965,132 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizati
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"getOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioOverridesByDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ def byOrganizationWirelessRadioRfHealthNeighborsRssiDevice(self, organizationId: str, **kwargs):
"""
- **Update an organization's RADSEC device Certificate Authority (CA) state**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-radsec-certificates-authorities
+ **Show the by-device neighbor rssi information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-radio-rf-health-neighbors-rssi-device
- organizationId (string): Organization ID
- - status (string): The "status" to update the Certificate Authority to. Only valid option is "trusted".
- - certificateAuthorityId (string): The ID of the Certificate Authority to update.
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - channels (array): Channel for which information should be gathered.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - tags (array): Access Point tags for which information should be gathered.
+ - models (array): Access Point models for which information should be gathered.
+ - rfProfiles (array): Rf Profiles for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - minimumNeighborRssi (integer): Minimum Neighbor RSSI score for a neighbor entry to be retrieved.
+ - maximumNeighborRssi (integer): Maximum Neighbor RSSI score for a neighbor entry to be retrieved.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ - rfScoreInterval (integer): Size of the rf score interval in seconds.
+ - rfScoreRetryOnEmpty (boolean): If true, the query will be retried further back if no data is present in the latest rf score interval.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "updateOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ "tags": ["wireless", "configure", "radio", "rfHealth", "neighbors", "rssi"],
+ "operation": "byOrganizationWirelessRadioRfHealthNeighborsRssiDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+ resource = f"/organizations/{organizationId}/wireless/radio/rfHealth/neighbors/rssi/byDevice"
- body_params = [
- "status",
- "certificateAuthorityId",
+ query_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ "gFloorplanId",
+ "minimumNeighborRssi",
+ "maximumNeighborRssi",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "rfScoreInterval",
+ "rfScoreRetryOnEmpty",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ f"byOrganizationWirelessRadioRfHealthNeighborsRssiDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizationId: str):
- """
- **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
- """
-
- metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "createOrganizationWirelessDevicesRadsecCertificatesAuthority",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
-
- return self._session.post(metadata, resource)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval(self, organizationId: str, **kwargs):
"""
- **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
+ **Show the by-network RF Health score overview information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rf-health-overview-by-network-by-interval
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 182 days, 14 hours, 54 minutes, and 36 seconds from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 days, 10 hours, 29 minutes, and 6 seconds 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 30 days, 10 hours, 29 minutes, and 6 seconds. The default is 14 days. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 7200, 86400. The default is 7200. Interval is calculated if time params are provided.
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - minimumRfHealthScore (integer): Minimum RF Health score for a network to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for a network to be retrieved.
+ - minimumHighCciPercentage (integer): Minimum percentage of radios with high CCI for a network to be retrieved.
+ - maximumHighCciPercentage (integer): Maximum percentage of radios with high CCI for a network to be retrieved.
+ - minimumChannelChanges (integer): Minimum number of channel changes for a network to be retrieved.
+ - maximumChannelChanges (integer): Maximum number of channel changes for a network to be retrieved.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls",
+ "tags": ["wireless", "configure", "radio", "rfHealth", "overview", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls"
+ resource = f"/organizations/{organizationId}/wireless/radio/rfHealth/overview/byNetwork/byInterval"
query_params = [
- "certificateAuthorityIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "bands",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "minimumHighCciPercentage",
+ "maximumHighCciPercentage",
+ "minimumChannelChanges",
+ "maximumChannelChanges",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4362,36 +10102,52 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organi
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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **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
+ **List the AutoRF settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rrm-by-network
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - 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
+ - networkIds (array): Optional parameter to filter results by network.
+ - startingAfter (string): Retrieving items after this network ID
+ - endingBefore (string): Retrieving items before this network ID
+ - perPage (integer): Number of items per page
+ - sortOrder (string): The sort order of items
"""
kwargs.update(locals())
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls", "deltas"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas",
+ "tags": ["wireless", "configure", "radio", "rrm", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioRrmByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls/deltas"
+ resource = f"/organizations/{organizationId}/wireless/radio/rrm/byNetwork"
query_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "startingAfter",
+ "endingBefore",
+ "perPage",
+ "sortOrder",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4403,47 +10159,31 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas(self,
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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioRrmByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesSystemCpuLoadHistory(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessRadioStatusByNetwork(self, organizationId: str, **kwargs):
"""
- **Return the CPU Load history for a list of wireless devices in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-system-cpu-load-history
+ **Show the status of this organization's radios, categorized by network and device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-status-by-network
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
- - 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 parameter to filter the result set by the included set of network IDs
- - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ - networkIds (array): Networks for which radio status should be returned.
+ - serials (array): Serials for which radio status should be returned.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "system", "cpu", "load", "history"],
- "operation": "getOrganizationWirelessDevicesSystemCpuLoadHistory",
+ "tags": ["wireless", "configure", "radio", "status", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioStatusByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/system/cpu/load/history"
+ resource = f"/organizations/{organizationId}/wireless/radio/status/byNetwork"
query_params = [
- "t0",
- "t1",
- "timespan",
- "perPage",
- "startingAfter",
- "endingBefore",
"networkIds",
"serials",
]
@@ -4463,52 +10203,66 @@ def getOrganizationWirelessDevicesSystemCpuLoadHistory(
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"getOrganizationWirelessDevicesSystemCpuLoadHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioStatusByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesWirelessControllersByDevice(
+ def getOrganizationWirelessRfProfilesAssignmentsByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List of Catalyst access points information**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-wireless-controllers-by-device
+ **List the RF profiles of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-rf-profiles-assignments-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
- - networkIds (array): Optional parameter to filter access points by network ID. This filter uses multiple exact matches.
- - serials (array): Optional parameter to filter access points by its cloud ID. This filter uses multiple exact matches.
- - controllerSerials (array): Optional parameter to filter access points by its wireless LAN controller cloud ID. This filter uses multiple exact matches.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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 parameter to filter devices by network.
+ - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - name (string): Optional parameter to filter RF profiles by device name. All returned devices will have a name that contains the search term or is an exact match.
+ - mac (string): Optional parameter to filter RF profiles by device MAC address. All returned devices will have a MAC address that contains the search term or is an exact match.
+ - serial (string): Optional parameter to filter RF profiles by device serial number. All returned devices will have a serial number that contains the search term or is an exact match.
+ - model (string): Optional parameter to filter RF profiles by device model. All returned devices will have a model that contains the search term or is an exact match.
+ - macs (array): Optional parameter to filter RF profiles by one or more device MAC addresses. All returned devices will have a MAC address that is an exact match.
+ - serials (array): Optional parameter to filter RF profiles by one or more device serial numbers. All returned devices will have a serial number that is an exact match.
+ - models (array): Optional parameter to filter RF profiles by one or more device models. All returned devices will have a model that is an exact match.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "wirelessControllers", "byDevice"],
- "operation": "getOrganizationWirelessDevicesWirelessControllersByDevice",
+ "tags": ["wireless", "configure", "rfProfiles", "assignments", "byDevice"],
+ "operation": "getOrganizationWirelessRfProfilesAssignmentsByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/wirelessControllers/byDevice"
+ resource = f"/organizations/{organizationId}/wireless/rfProfiles/assignments/byDevice"
query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
"networkIds",
+ "productTypes",
+ "name",
+ "mac",
+ "serial",
+ "model",
+ "macs",
"serials",
- "controllerSerials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "models",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "productTypes",
+ "macs",
"serials",
- "controllerSerials",
+ "models",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4520,39 +10274,39 @@ def getOrganizationWirelessDevicesWirelessControllersByDevice(
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"getOrganizationWirelessDevicesWirelessControllersByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRfProfilesAssignmentsByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessRoamingByNetworkByInterval(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Return scanning API settings**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-by-network
+ **Get all wireless clients' roam events within the specified timespan grouped by network and time interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-roaming-by-network-by-interval
- 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 - 250. Default is 50.
- - 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 parameter to filter scanning settings by network ID.
+ - networkIds (array): Filter results by network.
+ - 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 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 1800, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, 32400, 36000, 39600, 43200, 86400, 604800. The default is 7200.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "byNetwork"],
- "operation": "getOrganizationWirelessLocationScanningByNetwork",
+ "tags": ["wireless", "monitor", "roaming", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessRoamingByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/roaming/byNetwork/byInterval"
query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
"networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -4569,44 +10323,49 @@ def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str,
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"getOrganizationWirelessLocationScanningByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRoamingByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Return scanning API receivers**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-receivers
+ **List the L2 isolation allow list MAC entry in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-firewall-isolation-allowlist-entries
- 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 - 250. Default is 50.
+ - 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 parameter to filter scanning API receivers by network ID.
+ - networkIds (array): networkIds array to filter out results
+ - ssids (array): ssids number array to filter out results
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "getOrganizationWirelessLocationScanningReceivers",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
+ "ssids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "ssids",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4618,41 +10377,39 @@ def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str,
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"getOrganizationWirelessLocationScanningReceivers: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessLocationScanningReceiver(
- self, organizationId: str, network: dict, url: str, version: str, radio: dict, sharedSecret: str, **kwargs
+ def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
+ self, organizationId: str, client: dict, ssid: dict, network: dict, **kwargs
):
"""
- **Add new receiver for scanning API**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-location-scanning-receiver
+ **Create isolation allow list MAC entry for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-firewall-isolation-allowlist-entry
- organizationId (string): Organization ID
- - network (object): Add scanning API receiver for network
- - url (string): Receiver Url
- - version (string): Scanning API Version
- - radio (object): Add scanning API Radio
- - sharedSecret (string): Secret Value for Receiver
+ - client (object): The client of allowlist
+ - ssid (object): The SSID that allowlist belongs to
+ - network (object): The Network that allowlist belongs to
+ - description (string): The description of mac address
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "createOrganizationWirelessLocationScanningReceiver",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
body_params = [
+ "description",
+ "client",
+ "ssid",
"network",
- "url",
- "version",
- "radio",
- "sharedSecret",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4661,37 +10418,54 @@ def createOrganizationWirelessLocationScanningReceiver(
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"createOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
- def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str, **kwargs):
+ def deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str):
"""
- **Change scanning API receiver settings**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-location-scanning-receiver
+ **Destroy isolation allow list MAC entry for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-firewall-isolation-allowlist-entry
- organizationId (string): Organization ID
- - receiverId (string): Receiver ID
- - url (string): Receiver Url
- - version (string): Scanning API Version
- - radio (object): Add scanning API Radio
+ - entryId (string): Entry ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ entryId = urllib.parse.quote(str(entryId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str, **kwargs):
+ """
+ **Update isolation allow list MAC entry info**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-firewall-isolation-allowlist-entry
+
+ - organizationId (string): Organization ID
+ - entryId (string): Entry ID
+ - description (string): The description of mac address
+ - client (object): The client of allowlist
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "updateOrganizationWirelessLocationScanningReceiver",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- receiverId = urllib.parse.quote(str(receiverId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+ entryId = urllib.parse.quote(str(entryId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
body_params = [
- "url",
- "version",
- "radio",
+ "description",
+ "client",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4700,58 +10474,41 @@ def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str
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"updateOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ f"updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
)
return self._session.put(metadata, resource, payload)
- def deleteOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str):
- """
- **Delete a scanning API receiver**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-location-scanning-receiver
-
- - organizationId (string): Organization ID
- - receiverId (string): Receiver ID
- """
-
- metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "deleteOrganizationWirelessLocationScanningReceiver",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- receiverId = urllib.parse.quote(str(receiverId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
-
- return self._session.delete(metadata, resource)
-
- def getOrganizationWirelessMqttSettings(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **Return MQTT Settings for networks**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-mqtt-settings
+ **Returns an array of objects, each containing SSID OpenRoaming configs for the corresponding network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-open-roaming-by-network
- 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 - 250. Default is 50.
+ - 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 parameter to filter mqtt settings by network ID.
+ - networkIds (array): Optional parameter to filter OpenRoaming configuration by Network Id.
+ - includeDisabledSsids (boolean): Optional parameter to include OpenRoaming configuration for disabled ssids.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "mqtt", "settings"],
- "operation": "getOrganizationWirelessMqttSettings",
+ "tags": ["wireless", "configure", "ssids", "openRoaming", "byNetwork"],
+ "operation": "getOrganizationWirelessSsidsOpenRoamingByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+ resource = f"/organizations/{organizationId}/wireless/ssids/openRoaming/byNetwork"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
+ "includeDisabledSsids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -4767,123 +10524,108 @@ def getOrganizationWirelessMqttSettings(self, organizationId: str, total_pages=1
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"getOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationWirelessSsidsOpenRoamingByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateOrganizationWirelessMqttSettings(self, organizationId: str, network: dict, mqtt: dict, **kwargs):
+ def getOrganizationWirelessSsidsPoliciesClientExclusionBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Add new broker config for wireless MQTT**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-mqtt-settings
+ **Returns an array of objects, each containing client exclusion enablement statuses for one SSID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-policies-client-exclusion-by-ssid
- organizationId (string): Organization ID
- - network (object): Add MQTT Settings for network
- - mqtt (object): MQTT Settings for network
- - ble (object): MQTT BLE Settings for network
- - wifi (object): MQTT Wi-Fi Settings for network
+ - 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 - 100000. 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 parameter to filter by Network ID.
+ - includeDisabledSsids (boolean): Optional parameter to include disabled SSID's.
+ - ssidNumbers (array): Optional parameter to filter by SSID numbers.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "mqtt", "settings"],
- "operation": "updateOrganizationWirelessMqttSettings",
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "bySsid"],
+ "operation": "getOrganizationWirelessSsidsPoliciesClientExclusionBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+ resource = f"/organizations/{organizationId}/wireless/ssids/policies/clientExclusion/bySsid"
- body_params = [
- "network",
- "mqtt",
- "ble",
- "wifi",
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "includeDisabledSsids",
+ "ssidNumbers",
]
- 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"updateOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}"
- )
-
- return self._session.put(metadata, resource, payload)
-
- def recalculateOrganizationWirelessRadioAutoRfChannels(self, organizationId: str, networkIds: list, **kwargs):
- """
- **Recalculates automatically assigned channels for every AP within specified the specified network(s)**
- https://developer.cisco.com/meraki/api-v1/#!recalculate-organization-wireless-radio-auto-rf-channels
-
- - organizationId (string): Organization ID
- - networkIds (array): A list of network ids (limit: 15).
- """
-
- kwargs = locals()
-
- metadata = {
- "tags": ["wireless", "configure", "radio", "autoRf", "channels"],
- "operation": "recalculateOrganizationWirelessRadioAutoRfChannels",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/recalculate"
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
- body_params = [
+ array_params = [
"networkIds",
+ "ssidNumbers",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(
- f"recalculateOrganizationWirelessRadioAutoRfChannels: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsPoliciesClientExclusionBySsid: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
- """
- **List the AutoRF settings of an organization by network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rrm-by-network
+ def getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns an array of objects, each containing a list of MAC's excluded from a given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-policies-client-exclusion-static-exclusions-by-ssid
- 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
- - networkIds (array): Optional parameter to filter results by network.
- - startingAfter (string): Retrieving items after this network ID
- - endingBefore (string): Retrieving items before this network ID
- - perPage (integer): Number of items per page
- - sortOrder (string): The sort order of items
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100000. 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 parameter to filter Network ID.
+ - includeDisabledSsids (boolean): Optional parameter to include disabled SSID's.
+ - ssidNumbers (array): Optional parameter to filter by SSID numbers.
"""
kwargs.update(locals())
- if "sortOrder" in kwargs:
- options = ["ascending", "descending"]
- assert kwargs["sortOrder"] in options, (
- f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
- )
-
metadata = {
- "tags": ["wireless", "configure", "radio", "rrm", "byNetwork"],
- "operation": "getOrganizationWirelessRadioRrmByNetwork",
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bySsid"],
+ "operation": "getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/radio/rrm/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/ssids/policies/clientExclusion/static/exclusions/bySsid"
query_params = [
- "networkIds",
+ "perPage",
"startingAfter",
"endingBefore",
- "perPage",
- "sortOrder",
+ "networkIds",
+ "includeDisabledSsids",
+ "ssidNumbers",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "ssidNumbers",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4895,66 +10637,61 @@ def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pa
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"getOrganizationWirelessRadioRrmByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessRfProfilesAssignmentsByDevice(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessSsidsProfiles(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **List the RF profiles of an organization by device**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-rf-profiles-assignments-by-device
+ **Returns the SSID profiles for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles
- 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
+ - name (string): (Optional) Filter results by name. Case insensitive substring match.
+ - sortBy (string): Column to sort results by. Default is `name`.
+ - sortOrder (string): Direction to sort results by. Default is `asc`.
+ - profileIds (array): (Optional) Filter results by a list of SSID profile IDs.
- 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 parameter to filter devices by network.
- - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
- - name (string): Optional parameter to filter RF profiles by device name. All returned devices will have a name that contains the search term or is an exact match.
- - mac (string): Optional parameter to filter RF profiles by device MAC address. All returned devices will have a MAC address that contains the search term or is an exact match.
- - serial (string): Optional parameter to filter RF profiles by device serial number. All returned devices will have a serial number that contains the search term or is an exact match.
- - model (string): Optional parameter to filter RF profiles by device model. All returned devices will have a model that contains the search term or is an exact match.
- - macs (array): Optional parameter to filter RF profiles by one or more device MAC addresses. All returned devices will have a MAC address that is an exact match.
- - serials (array): Optional parameter to filter RF profiles by one or more device serial numbers. All returned devices will have a serial number that is an exact match.
- - models (array): Optional parameter to filter RF profiles by one or more device models. All returned devices will have a model that is an exact match.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "rfProfiles", "assignments", "byDevice"],
- "operation": "getOrganizationWirelessRfProfilesAssignmentsByDevice",
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "getOrganizationWirelessSsidsProfiles",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/rfProfiles/assignments/byDevice"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles"
query_params = [
+ "name",
+ "sortBy",
+ "sortOrder",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "productTypes",
- "name",
- "mac",
- "serial",
- "model",
- "macs",
- "serials",
- "models",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
- "productTypes",
- "macs",
- "serials",
- "models",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4964,51 +10701,87 @@ def getOrganizationWirelessRfProfilesAssignmentsByDevice(
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"getOrganizationWirelessSsidsProfiles: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessSsidsProfile(self, organizationId: str, name: str, ssid: dict, **kwargs):
+ """
+ **Create a new SSID profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ - precedence (object): Precedence configuration for the SSID profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "createOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles"
+
+ body_params = [
+ "name",
+ "precedence",
+ "ssid",
+ ]
+ 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"getOrganizationWirelessRfProfilesAssignmentsByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsProfile: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.post(metadata, resource, payload)
- def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessSsidsProfilesAssignments(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **List the L2 isolation allow list MAC entry in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-firewall-isolation-allowlist-entries
+ **List the SSID profile assignments in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-assignments
- 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
+ - networkIds (array): The network IDs to include in the result set.
+ - ssidIds (array): The SSID IDs to include in the result set.
+ - profileIds (array): The SSID profile IDs to include in the result set.
- 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): networkIds array to filter out results
- - ssids (array): ssids number array to filter out results
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "getOrganizationWirelessSsidsProfilesAssignments",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
query_params = [
+ "networkIds",
+ "ssidIds",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "ssids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "ssids",
+ "ssidIds",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -5020,37 +10793,33 @@ def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
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"getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesAssignments: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
- self, organizationId: str, client: dict, ssid: dict, network: dict, **kwargs
- ):
+ def createOrganizationWirelessSsidsProfilesAssignment(self, organizationId: str, profile: dict, ssid: dict, **kwargs):
"""
- **Create isolation allow list MAC entry for this organization**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **Assigns an SSID profile to an SSID in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profiles-assignment
- organizationId (string): Organization ID
- - client (object): The client of allowlist
- - ssid (object): The SSID that allowlist belongs to
- - network (object): The Network that allowlist belongs to
- - description (string): The description of mac address
+ - profile (object): SSID profile to assign
+ - ssid (object): SSID to assign the SSID profile to
+ - network (object): Network containing the SSID (required if SSID number is used)
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "createOrganizationWirelessSsidsProfilesAssignment",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
body_params = [
- "description",
- "client",
+ "profile",
"ssid",
"network",
]
@@ -5061,102 +10830,161 @@ def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
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"createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsProfilesAssignment: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
- def deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str):
+ def deleteOrganizationWirelessSsidsProfilesAssignments(self, organizationId: str, ssid: dict, **kwargs):
"""
- **Destroy isolation allow list MAC entry for this organization**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **Unassigns the SSID profile assigned to an SSID**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profiles-assignments
- organizationId (string): Organization ID
- - entryId (string): Entry ID
+ - ssid (object): SSID to delete the SSID profile assignment of
+ - network (object): Network containing the SSID (required if SSID number is used)
"""
+ kwargs.update(locals())
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "deleteOrganizationWirelessSsidsProfilesAssignments",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- entryId = urllib.parse.quote(str(entryId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
return self._session.delete(metadata, resource)
- def updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str, **kwargs):
+ def getOrganizationWirelessSsidsProfilesAssignmentsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Update isolation allow list MAC entry info**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **List the SSID profile assignments in an organization, grouped by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-assignments-by-network
- organizationId (string): Organization ID
- - entryId (string): Entry ID
- - description (string): The description of mac address
- - client (object): The client of allowlist
+ - 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
+ - networkIds (array): The network IDs to include in the result set.
+ - profileIds (array): The SSID profile IDs to include in the result set.
+ - networkGroupIds (array): The network group IDs to include in the result set.
+ - includeAllNetworks (boolean): When set to true, include all networks in the organization, even those without any SSID profile assignments. Defaults to false.
+ - excludeProfileIds (array): The SSID profile IDs to exclude from the result set.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: network)
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ - search (string): Optional parameter to search on network name or network group name.
+ - 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.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["group", "network"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments", "byNetwork"],
+ "operation": "getOrganizationWirelessSsidsProfilesAssignmentsByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- entryId = urllib.parse.quote(str(entryId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments/byNetwork"
- body_params = [
- "description",
- "client",
+ query_params = [
+ "networkIds",
+ "profileIds",
+ "networkGroupIds",
+ "includeAllNetworks",
+ "excludeProfileIds",
+ "sortBy",
+ "sortOrder",
+ "search",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "profileIds",
+ "networkGroupIds",
+ "excludeProfileIds",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesAssignmentsByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsProfilesOverviews(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **Returns an array of objects, each containing SSID OpenRoaming configs for the corresponding network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-open-roaming-by-network
+ **Returns the SSID profiles' overview information for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-overviews
- 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
+ - name (string): (Optional) Filter results by name. Case insensitive substring match.
+ - sortBy (string): Column to sort results by. Default is `name`.
+ - sortOrder (string): Direction to sort results by. Default is `asc`.
+ - profileIds (array): (Optional) Filter results by a list of SSID profile IDs.
- 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 parameter to filter OpenRoaming configuration by Network Id.
- - includeDisabledSsids (boolean): Optional parameter to include OpenRoaming configuration for disabled ssids.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "openRoaming", "byNetwork"],
- "operation": "getOrganizationWirelessSsidsOpenRoamingByNetwork",
+ "tags": ["wireless", "configure", "ssids", "profiles", "overviews"],
+ "operation": "getOrganizationWirelessSsidsProfilesOverviews",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/openRoaming/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/overviews"
query_params = [
+ "name",
+ "sortBy",
+ "sortOrder",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "includeDisabledSsids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -5168,11 +10996,67 @@ def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str,
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"getOrganizationWirelessSsidsOpenRoamingByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesOverviews: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def updateOrganizationWirelessSsidsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update this SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "updateOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ body_params = [
+ "name",
+ "ssid",
+ ]
+ 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"updateOrganizationWirelessSsidsProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWirelessSsidsProfile(self, organizationId: str, id: str):
+ """
+ **Delete an SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "deleteOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationWirelessSsidsStatusesByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List status information of all BSSIDs in your organization**
diff --git a/meraki/aio/api/wirelessController.py b/meraki/aio/api/wirelessController.py
index ee7a75b..e4cb0e4 100644
--- a/meraki/aio/api/wirelessController.py
+++ b/meraki/aio/api/wirelessController.py
@@ -177,6 +177,59 @@ def getOrganizationWirelessControllerConnections(self, organizationId: str, tota
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationWirelessControllerConnectionsUnassigned(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List of unassigned Catalyst access points and summary information**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-controller-connections-unassigned
+
+ - 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
+ - controllerSerials (array): Optional parameter to filter access points by wireless LAN controller cloud ID. This filter uses multiple exact matches.
+ - supported (boolean): Optional parameter to filter access points based on if they are supported for dashboard monitoring. Values can be true/false, if not provided then all unassigned APs will be returned
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wirelessController", "configure", "connections", "unassigned"],
+ "operation": "getOrganizationWirelessControllerConnectionsUnassigned",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wirelessController/connections/unassigned"
+
+ query_params = [
+ "controllerSerials",
+ "supported",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "controllerSerials",
+ ]
+ 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"getOrganizationWirelessControllerConnectionsUnassigned: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationWirelessControllerDevicesInterfacesL2ByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
@@ -861,3 +914,36 @@ def getOrganizationWirelessControllerOverviewByDevice(
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def generateOrganizationWirelessControllerRegulatoryDomainPackage(self, organizationId: str, **kwargs):
+ """
+ **Generate the regulatory domain package**
+ https://developer.cisco.com/meraki/api-v1/#!generate-organization-wireless-controller-regulatory-domain-package
+
+ - organizationId (string): Organization ID
+ - networkIds (array): A list of network IDs to filter by
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wirelessController", "configure", "regulatoryDomain", "package"],
+ "operation": "generateOrganizationWirelessControllerRegulatoryDomainPackage",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wirelessController/regulatoryDomain/package/generate"
+
+ body_params = [
+ "networkIds",
+ ]
+ 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"generateOrganizationWirelessControllerRegulatoryDomainPackage: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
diff --git a/meraki/api/administered.py b/meraki/api/administered.py
index 5f1be09..4362086 100644
--- a/meraki/api/administered.py
+++ b/meraki/api/administered.py
@@ -67,3 +67,36 @@ def revokeAdministeredIdentitiesMeApiKeys(self, suffix: str):
resource = f"/administered/identities/me/api/keys/{suffix}/revoke"
return self._session.post(metadata, resource)
+
+ def getAdministeredSearchLive(self, query: str, organizationId: str, networkId: str, **kwargs):
+ """
+ **List the appropriate results for a given global search utilizing live_search_react**
+ https://developer.cisco.com/meraki/api-v1/#!get-administered-search-live
+
+ - query (string): Search keywords
+ - organizationId (string): Id of Organization you want to search with
+ - networkId (string): Id of NodeGroup you want to seach with
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["administered", "configure", "search", "live"],
+ "operation": "getAdministeredSearchLive",
+ }
+ resource = "/administered/search/live"
+
+ query_params = [
+ "query",
+ "organizationId",
+ "networkId",
+ ]
+ 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"getAdministeredSearchLive: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
diff --git a/meraki/api/appliance.py b/meraki/api/appliance.py
index 88d35b2..24b56d6 100644
--- a/meraki/api/appliance.py
+++ b/meraki/api/appliance.py
@@ -23,6 +23,112 @@ def getDeviceApplianceDhcpSubnets(self, serial: str):
return self._session.get(metadata, resource)
+ def createDeviceApplianceInterfacesPortsUpdate(self, serial: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-appliance-interfaces-ports-update
+
+ - serial (string): Serial
+ - interface (object): The interface tuple used to identify the port
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "ports", "update"],
+ "operation": "createDeviceApplianceInterfacesPortsUpdate",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/update"
+
+ body_params = [
+ "interface",
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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"createDeviceApplianceInterfacesPortsUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateDeviceApplianceInterfacesPort(self, serial: str, number: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-appliance-interfaces-port
+
+ - serial (string): Serial
+ - number (string): Number
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "ports"],
+ "operation": "updateDeviceApplianceInterfacesPort",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/{number}"
+
+ body_params = [
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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"updateDeviceApplianceInterfacesPort: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceAppliancePerformance(self, serial: str, **kwargs):
"""
**Return the performance score for a single MX**
@@ -1038,6 +1144,93 @@ def updateNetworkApplianceFirewallSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def createNetworkApplianceInterfacesL3(self, networkId: str, ipv4: dict, **kwargs):
+ """
+ **Create wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - ipv4 (object): IPv4 configuration
+ - port (object): Port configuration
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "createNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ 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"createNetworkApplianceInterfacesL3: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str, **kwargs):
+ """
+ **Update wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ - port (object): Port configuration
+ - ipv4 (object): IPv4 configuration
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "updateNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ interfaceId = urllib.parse.quote(str(interfaceId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ 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"updateNetworkApplianceInterfacesL3: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str):
+ """
+ **Delete wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "interfaces", "l3"],
+ "operation": "deleteNetworkApplianceInterfacesL3",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ interfaceId = urllib.parse.quote(str(interfaceId), safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ return self._session.delete(metadata, resource)
+
def getNetworkAppliancePorts(self, networkId: str):
"""
**List per-port VLAN settings for all ports of a secure router or security appliance.**
@@ -1087,6 +1280,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
- vlan (integer): Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode.
- allowedVlans (string): Comma-delimited list of VLAN IDs (e.g. '2,15') for all devices. Secure Routers also support VLAN ranges (e.g. '2-10,15'). Use 'all' to permit all VLANs on the port.
- accessPolicy (string): The name of the policy. Only applicable to Access ports. Valid values are: 'open', '8021x-radius', 'mac-radius', 'hybris-radius' for MX64 or Z3 or any MX supporting the per port authentication feature. Otherwise, 'open' is the only valid value and 'open' is the default value if the field is missing.
+ - peerSgtCapable (boolean): If true, Peer SGT is enabled for traffic through this port. Applicable to trunk port only, not access port.
+ - adaptivePolicyGroupId (string): Adaptive policy group ID that all traffic originating from this port is assigned to.
"""
kwargs.update(locals())
@@ -1106,6 +1301,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
"vlan",
"allowedVlans",
"accessPolicy",
+ "peerSgtCapable",
+ "adaptivePolicyGroupId",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1674,6 +1871,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
- applianceIp (string): The appliance IP address of the single LAN
- ipv6 (object): IPv6 configuration on the VLAN
- mandatoryDhcp (object): Mandatory DHCP will enforce that clients connecting to this LAN 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
+ - vrf (object): VRF configuration on the Single LAN
"""
kwargs.update(locals())
@@ -1690,6 +1888,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
"applianceIp",
"ipv6",
"mandatoryDhcp",
+ "vrf",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2301,6 +2500,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
- networkId (string): Network ID
- custom (array): Custom VPN exclusion rules. Pass an empty array to clear existing rules.
- majorApplications (array): Major Application based VPN exclusion rules. Pass an empty array to clear existing rules.
+ - applications (array): NBAR Application based VPN exclusion rules. Available for networks on >=19.2 firmware
"""
kwargs.update(locals())
@@ -2315,6 +2515,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
body_params = [
"custom",
"majorApplications",
+ "applications",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2378,6 +2579,186 @@ def disconnectNetworkApplianceUmbrellaAccount(self, networkId: str):
return self._session.post(metadata, resource)
+ def disableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Disable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!disable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "disableNetworkApplianceUmbrellaProtection",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/disableProtection"
+
+ return self._session.delete(metadata, resource)
+
+ def enableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Enable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!enable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "enableNetworkApplianceUmbrellaProtection",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/enableProtection"
+
+ return self._session.post(metadata, resource)
+
+ def excludeNetworkApplianceUmbrellaDomains(self, networkId: str, domains: list, **kwargs):
+ """
+ **Specify one or more domain names to be excluded from being routed to Cisco Umbrella.**
+ https://developer.cisco.com/meraki/api-v1/#!exclude-network-appliance-umbrella-domains
+
+ - networkId (string): Network ID
+ - domains (array): Array of domain names
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "excludeNetworkApplianceUmbrellaDomains",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/excludeDomains"
+
+ body_params = [
+ "domains",
+ ]
+ 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"excludeNetworkApplianceUmbrellaDomains: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def policiesNetworkApplianceUmbrella(self, networkId: str, policyIds: list, **kwargs):
+ """
+ **Update umbrella policies applied to MX network.**
+ https://developer.cisco.com/meraki/api-v1/#!policies-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - policyIds (array): Array of umbrella policy IDs
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "policiesNetworkApplianceUmbrella",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies"
+
+ body_params = [
+ "policyIds",
+ ]
+ 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"policiesNetworkApplianceUmbrella: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def addNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str, **kwargs):
+ """
+ **Add one umbrella policy to your network.**
+ https://developer.cisco.com/meraki/api-v1/#!add-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies"],
+ "operation": "addNetworkApplianceUmbrellaPolicies",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/add"
+
+ body_params = [
+ "policyId",
+ ]
+ 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"addNetworkApplianceUmbrellaPolicies: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def removeNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str):
+ """
+ **Remove one umbrella policy from your network.**
+ https://developer.cisco.com/meraki/api-v1/#!remove-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies"],
+ "operation": "removeNetworkApplianceUmbrellaPolicies",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/remove"
+
+ return self._session.delete(metadata, resource)
+
+ def protectionNetworkApplianceUmbrella(self, networkId: str, enable: bool, **kwargs):
+ """
+ **Enable or disable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!protection-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - enable (boolean): Enable or disable umbrella protection
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella"],
+ "operation": "protectionNetworkApplianceUmbrella",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/protection"
+
+ body_params = [
+ "enable",
+ ]
+ 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"protectionNetworkApplianceUmbrella: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def updateNetworkApplianceUplinksNat(self, networkId: str, uplinks: list, **kwargs):
"""
**Update uplink NAT settings of the specified network**
@@ -2488,6 +2869,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
- dhcpBootNextServer (string): DHCP boot option to direct boot clients to the server to load the boot file from
- dhcpBootFilename (string): DHCP boot option for boot filename
- 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.
- 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.
"""
@@ -2535,6 +2917,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
"dhcpBootNextServer",
"dhcpBootFilename",
"dhcpOptions",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -2642,6 +3025,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
- mask (integer): Mask used for the subnet of all bound to the template networks. Applicable only for template network.
- ipv6 (object): IPv6 configuration on the VLAN
- 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.
- 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.
"""
@@ -2693,6 +3077,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
"mask",
"ipv6",
"mandatoryDhcp",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -2807,6 +3192,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
- mode (string): The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'
- hubs (array): The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required.
- subnets (array): The list of subnets and their VPN presence.
+ - peerSgtCapable (boolean): Whether or not Peer SGT is enabled for traffic to this VPN peer.
- subnet (object): Configuration of subnet features
- hostTranslations (array): The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2
"""
@@ -2828,6 +3214,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
"mode",
"hubs",
"subnets",
+ "peerSgtCapable",
"subnet",
"hostTranslations",
]
@@ -2916,17 +3303,18 @@ def swapNetworkApplianceWarmSpare(self, networkId: str):
return self._session.post(metadata, resource)
- def getOrganizationApplianceDevicesRedundancyByNetwork(
+ def getOrganizationApplianceDevicesInterfacesL3ByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Return MX warm spare settings**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-redundancy-by-network
+ **Listing of L3 Interface Configurations across networks for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-interfaces-l-3-by-network
- 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 5 - 1000. Default is 50.
+ - networkIds (array): Optional Network IDs to filter results
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
- 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.
"""
@@ -2934,21 +3322,115 @@ def getOrganizationApplianceDevicesRedundancyByNetwork(
kwargs.update(locals())
metadata = {
- "tags": ["appliance", "configure", "devices", "redundancy", "byNetwork"],
- "operation": "getOrganizationApplianceDevicesRedundancyByNetwork",
+ "tags": ["appliance", "configure", "devices", "interfaces", "l3", "byNetwork"],
+ "operation": "getOrganizationApplianceDevicesInterfacesL3ByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/appliance/devices/redundancy/byNetwork"
+ resource = f"/organizations/{organizationId}/appliance/devices/interfaces/l3/byNetwork"
query_params = [
+ "networkIds",
"perPage",
"startingAfter",
"endingBefore",
]
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
+ 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"getOrganizationApplianceDevicesInterfacesL3ByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationApplianceDevicesInterfacesPortsByDevice(self, organizationId: str, **kwargs):
+ """
+ **Returns port configurations for appliances in a given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-interfaces-ports-by-device
+
+ - organizationId (string): Organization ID
+ - serials (array): Parameter to filter the results by device serials
+ - numbers (array): Parameter to filter the results by specific ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "devices", "interfaces", "ports", "byDevice"],
+ "operation": "getOrganizationApplianceDevicesInterfacesPortsByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/interfaces/ports/byDevice"
+
+ query_params = [
+ "serials",
+ "numbers",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "numbers",
+ ]
+ 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"getOrganizationApplianceDevicesInterfacesPortsByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceDevicesRedundancyByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return MX warm spare settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-redundancy-by-network
+
+ - 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 5 - 1000. Default is 50.
+ - 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": ["appliance", "configure", "devices", "redundancy", "byNetwork"],
+ "operation": "getOrganizationApplianceDevicesRedundancyByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/redundancy/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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(
@@ -2957,6 +3439,68 @@ def getOrganizationApplianceDevicesRedundancyByNetwork(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationApplianceDevicesSystemUtilizationByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return the appliance utilization history for devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-devices-system-utilization-by-interval
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 2 hours.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 1200. The default is 1200.
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device utilization history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "devices", "system", "utilization", "byInterval"],
+ "operation": "getOrganizationApplianceDevicesSystemUtilizationByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/devices/system/utilization/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationApplianceDevicesSystemUtilizationByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationApplianceDnsLocalProfiles(self, organizationId: str, **kwargs):
"""
**Fetch the local DNS profiles used in the organization**
@@ -3682,6 +4226,55 @@ def updateOrganizationApplianceRoutingVrfsSettings(self, organizationId: str, en
return self._session.put(metadata, resource, payload)
+ def getOrganizationApplianceSdwanInternetPolicies(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the SDWAN internet traffic preferences for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-sdwan-internet-policies
+
+ - 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 - 200. Default is 50.
+ - 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.
+ - wanTrafficUplinkPreferences (array): policies with respective traffic filters for an MX network
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "sdwan", "internetPolicies"],
+ "operation": "getOrganizationApplianceSdwanInternetPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/sdwan/internetPolicies"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "wanTrafficUplinkPreferences",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "wanTrafficUplinkPreferences",
+ ]
+ 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"getOrganizationApplianceSdwanInternetPolicies: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List the security events for an organization**
@@ -3836,6 +4429,58 @@ def getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationApplianceUmbrellaPoliciesByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List Umbrella policy IDs applied to MX networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-umbrella-policies-by-network
+
+ - 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
+ - organizationId (string): Organization identifier
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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): Filter results to only the given network IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "configure", "umbrella", "policies", "byNetwork"],
+ "operation": "getOrganizationApplianceUmbrellaPoliciesByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/umbrella/policies/byNetwork"
+
+ query_params = [
+ "organizationId",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationApplianceUmbrellaPoliciesByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
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**
@@ -4021,6 +4666,233 @@ def getOrganizationApplianceUplinksUsageByNetwork(self, organizationId: str, **k
return self._session.get(metadata, resource, params)
+ def getOrganizationApplianceVlans(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the VLANs for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vlans
+
+ - 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 100.
+ - 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": ["appliance", "configure", "vlans"],
+ "operation": "getOrganizationApplianceVlans",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vlans"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationApplianceVlans: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationApplianceVpnConnectivityVpnPeersByNetwork(self, organizationId: str, **kwargs):
+ """
+ **Summarizes by-device vpn peers for the organization in the given interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-connectivity-vpn-peers-by-network
+
+ - 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 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 3600, 14400, 86400. The default is 3600. Interval is calculated if time params are provided.
+ - networkIds (array): Filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "connectivity", "vpnPeers", "byNetwork"],
+ "operation": "getOrganizationApplianceVpnConnectivityVpnPeersByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/connectivity/vpnPeers/byNetwork"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationApplianceVpnConnectivityVpnPeersByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Get authentication for all clients in organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "authentication", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/authentication/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient(self, organizationId: str, **kwargs):
+ """
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-ip-assignment-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "ipAssignment", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/ipAssignment/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientIpAssignmentByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient(self, organizationId: str, **kwargs):
+ """
+ **Get tunnel creation events for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-remote-access-secure-client-tunnel-creation-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["appliance", "monitor", "vpn", "remoteAccess", "secureClient", "tunnelCreation", "byClient"],
+ "operation": "getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/appliance/vpn/remoteAccess/secureClient/tunnelCreation/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApplianceVpnRemoteAccessSecureClientTunnelCreationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: str):
"""
**Get the list of available IPsec SLA policies for an organization**
diff --git a/meraki/api/batch/appliance.py b/meraki/api/batch/appliance.py
index 3e5585e..dc941fb 100644
--- a/meraki/api/batch/appliance.py
+++ b/meraki/api/batch/appliance.py
@@ -5,6 +5,98 @@ class ActionBatchAppliance(object):
def __init__(self):
super(ActionBatchAppliance, self).__init__()
+ def createDeviceApplianceInterfacesPortsUpdate(self, serial: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-appliance-interfaces-ports-update
+
+ - serial (string): Serial
+ - interface (object): The interface tuple used to identify the port
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/update"
+
+ body_params = [
+ "interface",
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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 updateDeviceApplianceInterfacesPort(self, serial: str, number: str, **kwargs):
+ """
+ **Update configurations for an appliance's specified port**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-appliance-interfaces-port
+
+ - serial (string): Serial
+ - number (string): Number
+ - enabled (boolean): Indicates whether the port is enabled
+ - personality (object): Describes the port's configurability
+ - uplink (object): The port's settings when in WAN mode
+ - downlink (object): The port's VLAN settings when in LAN mode
+ - speed (string): Link speed for the port, in Mbps
+ - duplex (string): Duplex configuration for the port
+ """
+
+ kwargs.update(locals())
+
+ if "speed" in kwargs:
+ options = ["10", "100", "1000", "10000", "2500", "25000", "5000", "auto"]
+ assert kwargs["speed"] in options, f'''"speed" cannot be "{kwargs["speed"]}", & must be set to one of: {options}'''
+ if "duplex" in kwargs:
+ options = ["auto", "full", "half"]
+ assert kwargs["duplex"] in options, (
+ f'''"duplex" cannot be "{kwargs["duplex"]}", & must be set to one of: {options}'''
+ )
+
+ serial = urllib.parse.quote(serial, safe="")
+ number = urllib.parse.quote(number, safe="")
+ resource = f"/devices/{serial}/appliance/interfaces/ports/{number}"
+
+ body_params = [
+ "enabled",
+ "personality",
+ "uplink",
+ "downlink",
+ "speed",
+ "duplex",
+ ]
+ 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 updateDeviceApplianceRadioSettings(self, serial: str, **kwargs):
"""
**Update the radio settings of an appliance**
@@ -203,6 +295,81 @@ def updateNetworkApplianceFirewallMulticastForwarding(self, networkId: str, rule
}
return action
+ def createNetworkApplianceInterfacesL3(self, networkId: str, ipv4: dict, **kwargs):
+ """
+ **Create wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - ipv4 (object): IPv4 configuration
+ - port (object): Port configuration
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str, **kwargs):
+ """
+ **Update wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ - port (object): Port configuration
+ - ipv4 (object): IPv4 configuration
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ interfaceId = urllib.parse.quote(interfaceId, safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ body_params = [
+ "port",
+ "ipv4",
+ ]
+ 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 deleteNetworkApplianceInterfacesL3(self, networkId: str, interfaceId: str):
+ """
+ **Delete wired L3 interface configuration**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-appliance-interfaces-l-3
+
+ - networkId (string): Network ID
+ - interfaceId (string): Interface ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ interfaceId = urllib.parse.quote(interfaceId, safe="")
+ resource = f"/networks/{networkId}/appliance/interfaces/l3/{interfaceId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
"""
**Update the per-port VLAN settings for a single secure router or security appliance port.**
@@ -216,6 +383,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
- vlan (integer): Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode.
- allowedVlans (string): Comma-delimited list of VLAN IDs (e.g. '2,15') for all devices. Secure Routers also support VLAN ranges (e.g. '2-10,15'). Use 'all' to permit all VLANs on the port.
- accessPolicy (string): The name of the policy. Only applicable to Access ports. Valid values are: 'open', '8021x-radius', 'mac-radius', 'hybris-radius' for MX64 or Z3 or any MX supporting the per port authentication feature. Otherwise, 'open' is the only valid value and 'open' is the default value if the field is missing.
+ - peerSgtCapable (boolean): If true, Peer SGT is enabled for traffic through this port. Applicable to trunk port only, not access port.
+ - adaptivePolicyGroupId (string): Adaptive policy group ID that all traffic originating from this port is assigned to.
"""
kwargs.update(locals())
@@ -231,6 +400,8 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs):
"vlan",
"allowedVlans",
"accessPolicy",
+ "peerSgtCapable",
+ "adaptivePolicyGroupId",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
@@ -477,6 +648,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
- applianceIp (string): The appliance IP address of the single LAN
- ipv6 (object): IPv6 configuration on the VLAN
- mandatoryDhcp (object): Mandatory DHCP will enforce that clients connecting to this LAN 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
+ - vrf (object): VRF configuration on the Single LAN
"""
kwargs.update(locals())
@@ -489,6 +661,7 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs):
"applianceIp",
"ipv6",
"mandatoryDhcp",
+ "vrf",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
@@ -744,6 +917,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
- networkId (string): Network ID
- custom (array): Custom VPN exclusion rules. Pass an empty array to clear existing rules.
- majorApplications (array): Major Application based VPN exclusion rules. Pass an empty array to clear existing rules.
+ - applications (array): NBAR Application based VPN exclusion rules. Available for networks on >=19.2 firmware
"""
kwargs.update(locals())
@@ -754,6 +928,7 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw
body_params = [
"custom",
"majorApplications",
+ "applications",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
@@ -805,6 +980,160 @@ def disconnectNetworkApplianceUmbrellaAccount(self, networkId: str):
}
return action
+ def disableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Disable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!disable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/disableProtection"
+
+ action = {
+ "resource": resource,
+ "operation": "action",
+ }
+ return action
+
+ def enableNetworkApplianceUmbrellaProtection(self, networkId: str):
+ """
+ **Enable umbrella protection for an MX network**
+ https://developer.cisco.com/meraki/api-v1/#!enable-network-appliance-umbrella-protection
+
+ - networkId (string): Network ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/enableProtection"
+
+ action = {
+ "resource": resource,
+ "operation": "action",
+ }
+ return action
+
+ def excludeNetworkApplianceUmbrellaDomains(self, networkId: str, domains: list, **kwargs):
+ """
+ **Specify one or more domain names to be excluded from being routed to Cisco Umbrella.**
+ https://developer.cisco.com/meraki/api-v1/#!exclude-network-appliance-umbrella-domains
+
+ - networkId (string): Network ID
+ - domains (array): Array of domain names
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/excludeDomains"
+
+ body_params = [
+ "domains",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "action",
+ "body": payload,
+ }
+ return action
+
+ def policiesNetworkApplianceUmbrella(self, networkId: str, policyIds: list, **kwargs):
+ """
+ **Update umbrella policies applied to MX network.**
+ https://developer.cisco.com/meraki/api-v1/#!policies-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - policyIds (array): Array of umbrella policy IDs
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies"
+
+ body_params = [
+ "policyIds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "action",
+ "body": payload,
+ }
+ return action
+
+ def addNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str, **kwargs):
+ """
+ **Add one umbrella policy to your network.**
+ https://developer.cisco.com/meraki/api-v1/#!add-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/add"
+
+ body_params = [
+ "policyId",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "policies_add",
+ "body": payload,
+ }
+ return action
+
+ def removeNetworkApplianceUmbrellaPolicies(self, networkId: str, policyId: str):
+ """
+ **Remove one umbrella policy from your network.**
+ https://developer.cisco.com/meraki/api-v1/#!remove-network-appliance-umbrella-policies
+
+ - networkId (string): Network ID
+ - policyId (string): Umbrella policy ID
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/policies/remove"
+
+ action = {
+ "resource": resource,
+ "operation": "policies_remove",
+ }
+ return action
+
+ def protectionNetworkApplianceUmbrella(self, networkId: str, enable: bool, **kwargs):
+ """
+ **Enable or disable umbrella protection for an MX network. When disabling, the umbrella property will be omitted from the response.**
+ https://developer.cisco.com/meraki/api-v1/#!protection-network-appliance-umbrella
+
+ - networkId (string): Network ID
+ - enable (boolean): Enable or disable umbrella protection
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/appliance/umbrella/protection"
+
+ body_params = [
+ "enable",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "action",
+ "body": payload,
+ }
+ return action
+
def updateNetworkApplianceUplinksNat(self, networkId: str, uplinks: list, **kwargs):
"""
**Update uplink NAT settings of the specified network**
@@ -853,6 +1182,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
- dhcpBootNextServer (string): DHCP boot option to direct boot clients to the server to load the boot file from
- dhcpBootFilename (string): DHCP boot option for boot filename
- 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.
- 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.
"""
@@ -896,6 +1226,7 @@ def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwarg
"dhcpBootNextServer",
"dhcpBootFilename",
"dhcpOptions",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -959,6 +1290,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
- mask (integer): Mask used for the subnet of all bound to the template networks. Applicable only for template network.
- ipv6 (object): IPv6 configuration on the VLAN
- 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.
- 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.
"""
@@ -1006,6 +1338,7 @@ def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs):
"mask",
"ipv6",
"mandatoryDhcp",
+ "adaptivePolicyGroupId",
"vrf",
"uplinks",
]
@@ -1078,6 +1411,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
- mode (string): The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'
- hubs (array): The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required.
- subnets (array): The list of subnets and their VPN presence.
+ - peerSgtCapable (boolean): Whether or not Peer SGT is enabled for traffic to this VPN peer.
- subnet (object): Configuration of subnet features
- hostTranslations (array): The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2
"""
@@ -1095,6 +1429,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw
"mode",
"hubs",
"subnets",
+ "peerSgtCapable",
"subnet",
"hostTranslations",
]
diff --git a/meraki/api/batch/camera.py b/meraki/api/batch/camera.py
index 9a2e7b2..6f2993c 100644
--- a/meraki/api/batch/camera.py
+++ b/meraki/api/batch/camera.py
@@ -167,3 +167,82 @@ def updateDeviceCameraWirelessProfiles(self, serial: str, ids: dict, **kwargs):
"body": payload,
}
return action
+
+ def createNetworkCameraVideoWall(self, networkId: str, name: str, tiles: list, **kwargs):
+ """
+ **Create a new video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateNetworkCameraVideoWall(self, networkId: str, id: str, name: str, tiles: list, **kwargs):
+ """
+ **Update the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ 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 deleteNetworkCameraVideoWall(self, networkId: str, id: str):
+ """
+ **Delete the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
diff --git a/meraki/api/batch/campusGateway.py b/meraki/api/batch/campusGateway.py
index c2a6b8e..b1b5482 100644
--- a/meraki/api/batch/campusGateway.py
+++ b/meraki/api/batch/campusGateway.py
@@ -82,3 +82,76 @@ def updateNetworkCampusGatewayCluster(self, networkId: str, clusterId: str, **kw
"body": payload,
}
return action
+
+ def deleteNetworkCampusGatewayCluster(self, networkId: str, clusterId: str):
+ """
+ **Delete a cluster**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-campus-gateway-cluster
+
+ - networkId (string): Network ID
+ - clusterId (string): Cluster ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ clusterId = urllib.parse.quote(clusterId, safe="")
+ resource = f"/networks/{networkId}/campusGateway/clusters/{clusterId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def provisionOrganizationCampusGatewayClusters(
+ self,
+ organizationId: str,
+ clusterId: str,
+ network: dict,
+ name: str,
+ uplinks: list,
+ tunnels: list,
+ nameservers: dict,
+ portChannels: list,
+ **kwargs,
+ ):
+ """
+ **Provisions a cluster,adds campus gateways to it and associate/dissociate failover targets.**
+ https://developer.cisco.com/meraki/api-v1/#!provision-organization-campus-gateway-clusters
+
+ - organizationId (string): Organization ID
+ - clusterId (string): ID of the cluster to be provisioned
+ - network (object): Network to be provisioned
+ - name (string): Name of the new cluster
+ - uplinks (array): Uplink interface settings of the cluster
+ - tunnels (array): Tunnel interface settings of the cluster: Reuse uplink or specify tunnel interface
+ - nameservers (object): Nameservers of the cluster
+ - portChannels (array): Port channel settings of the cluster
+ - devices (array): Devices to be added to the cluster
+ - failover (object): Failover targets for the cluster
+ - notes (string): Notes about cluster with max size of 511 characters allowed
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/provision"
+
+ body_params = [
+ "clusterId",
+ "network",
+ "name",
+ "uplinks",
+ "tunnels",
+ "nameservers",
+ "portChannels",
+ "devices",
+ "failover",
+ "notes",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "provision",
+ "body": payload,
+ }
+ return action
diff --git a/meraki/api/batch/devices.py b/meraki/api/batch/devices.py
index edc67a6..e444d87 100644
--- a/meraki/api/batch/devices.py
+++ b/meraki/api/batch/devices.py
@@ -107,6 +107,60 @@ def createDeviceCellularUplinksBandsMasksUpdate(self, serial: str, slot: str, ty
}
return action
+ def updateDeviceCliConfigFavorite(self, serial: str, configId: str, favorite: bool, **kwargs):
+ """
+ **Favorite or unfavorite a configuration for an IOS-XE device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-cli-config-favorite
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - favorite (boolean): Whether the config should be favorited
+ """
+
+ kwargs = locals()
+
+ serial = urllib.parse.quote(serial, safe="")
+ configId = urllib.parse.quote(configId, safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}"
+
+ body_params = [
+ "favorite",
+ ]
+ 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 createDeviceConfigRestore(self, serial: str, configId: str, **kwargs):
+ """
+ **Create a restore request for a specific config history record**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-config-restore
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - scheduledFor (string): Requested ISO 8601 UTC timestamp for when the restore should be scheduled
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ configId = urllib.parse.quote(configId, safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}/restores"
+
+ body_params = [
+ "scheduledFor",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "restore",
+ "body": payload,
+ }
+ return action
+
def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs):
"""
**Enqueue a job to blink LEDs on a device. This endpoint has a rate limit of one request every 10 seconds.**
@@ -134,6 +188,134 @@ def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs):
}
return action
+ def createDeviceLiveToolsPortStatus(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to retrieve port status for a device. This endpoint has a sustained rate limit of one request every five seconds per device, with an allowed burst of five requests.**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-port-status
+
+ - serial (string): Serial
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/liveTools/portStatus"
+
+ body_params = [
+ "callback",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "status",
+ "body": payload,
+ }
+ return action
+
+ def createDeviceLiveToolsReboot(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to reboot a device. This endpoint has a rate limit of one request every 60 seconds.**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-reboot
+
+ - serial (string): Serial
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/liveTools/reboot"
+
+ body_params = [
+ "callback",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "device",
+ "body": payload,
+ }
+ return action
+
+ def createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table lookup request for the device. Only Cisco routers are supported. Any combination of search filters can be applied.**
+ 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}'''
+
+ serial = urllib.parse.quote(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}
+ action = {
+ "resource": resource,
+ "operation": "lookup",
+ "body": payload,
+ }
+ return action
+
+ def createDeviceLiveToolsRoutingTableSummary(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table summary request for the device. Only Cisco routers are supported.**
+ 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())
+
+ serial = urllib.parse.quote(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}
+ action = {
+ "resource": resource,
+ "operation": "summary",
+ "body": payload,
+ }
+ return action
+
def createDeviceLiveToolsThroughputTest(self, serial: str, **kwargs):
"""
**Enqueue a job to test a device throughput, the test will run for 10 secs to test throughput. This endpoint has a rate limit of one request every five seconds per device.**
diff --git a/meraki/api/batch/insight.py b/meraki/api/batch/insight.py
index 7e850f1..c2057ff 100644
--- a/meraki/api/batch/insight.py
+++ b/meraki/api/batch/insight.py
@@ -5,6 +5,83 @@ class ActionBatchInsight(object):
def __init__(self):
super(ActionBatchInsight, self).__init__()
+ def createOrganizationInsightApplication(self, organizationId: str, counterSetRuleId: int, **kwargs):
+ """
+ **Add an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - counterSetRuleId (integer): The id of the counter set rule
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/insight/applications"
+
+ body_params = [
+ "counterSetRuleId",
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationInsightApplication(self, organizationId: str, applicationId: str, **kwargs):
+ """
+ **Update an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ applicationId = urllib.parse.quote(applicationId, safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ body_params = [
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ 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 deleteOrganizationInsightApplication(self, organizationId: str, applicationId: str):
+ """
+ **Delete an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ applicationId = urllib.parse.quote(applicationId, safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def createOrganizationInsightMonitoredMediaServer(self, organizationId: str, name: str, address: str, **kwargs):
"""
**Add a media server to be monitored for this organization. Only valid for organizations with Meraki Insight.**
@@ -83,3 +160,78 @@ def deleteOrganizationInsightMonitoredMediaServer(self, organizationId: str, mon
"operation": "destroy",
}
return action
+
+ def createOrganizationInsightWebApp(self, organizationId: str, name: str, hostname: str, **kwargs):
+ """
+ **Add a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str, **kwargs):
+ """
+ **Update a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ customCounterSetRuleId = urllib.parse.quote(customCounterSetRuleId, safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ 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 deleteOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str):
+ """
+ **Delete a custom web application by counter set rule id.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ customCounterSetRuleId = urllib.parse.quote(customCounterSetRuleId, safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
diff --git a/meraki/api/batch/nac.py b/meraki/api/batch/nac.py
new file mode 100644
index 0000000..7a6720b
--- /dev/null
+++ b/meraki/api/batch/nac.py
@@ -0,0 +1,316 @@
+import urllib
+
+
+class ActionBatchNac(object):
+ def __init__(self):
+ super(ActionBatchNac, self).__init__()
+
+ def createOrganizationNacCertificatesAuthoritiesCrl(
+ self, organizationId: str, caId: str, content: str, isDelta: bool, **kwargs
+ ):
+ """
+ **Create a new CRL (either base or delta) for an existing CA**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - caId (string): ID of the CRL issuer
+ - content (string): CRL content in PEM format
+ - isDelta (boolean): Whether it's a delta CRL or not
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls"
+
+ body_params = [
+ "caId",
+ "content",
+ "isDelta",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationNacCertificatesAuthoritiesCrl(self, organizationId: str, crlId: str):
+ """
+ **Deletes a whole CRL, including all its deltas (in case of base CRL removal)**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - crlId (string): Crl ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ crlId = urllib.parse.quote(crlId, safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls/{crlId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationNacCertificatesImport(self, organizationId: str, contents: str, **kwargs):
+ """
+ **Import certificate for this organization or validate without persisting**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-import
+
+ - organizationId (string): Organization ID
+ - contents (string): Certificate content in valid PEM format
+ - dryRun (boolean): If true, validates the certificate without persisting it
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/import"
+
+ body_params = [
+ "contents",
+ "dryRun",
+ "profile",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationNacCertificate(self, organizationId: str, certificateId: str, profile: dict, **kwargs):
+ """
+ **Update certificate configuration by certificateId for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ certificateId = urllib.parse.quote(certificateId, safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/{certificateId}"
+
+ body_params = [
+ "profile",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "action",
+ "body": payload,
+ }
+ return action
+
+ def bulkOrganizationNacClientsDelete(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Delete existing client(s) for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-nac-clients-delete
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of ids for specific client retrieval
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkDelete"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationNacClientsBulkEdit(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Bulk Update of existing clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-edit
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of clients ids to apply the bulk edit operation on.
+ - description (string): User provided description to be applied on the list of clients provided
+ - groups (object): Client group information to be applied on the list of clients provided
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkEdit"
+
+ body_params = [
+ "clientIds",
+ "description",
+ "groups",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "edit",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationNacClientsBulkUpload(
+ self, organizationId: str, contents: str, updateClients: bool, createClientGroups: bool, **kwargs
+ ):
+ """
+ **Bulk upload of clients, client groups and their associations for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-upload
+
+ - organizationId (string): Organization ID
+ - contents (string): CSV file content in Base64 encoded string format
+ - updateClients (boolean): The updateClients indicates whether existing clients must be updated with new data from the CSV
+ - createClientGroups (boolean): The createClientGroups indicates whether new client groups must be created or not
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkUpload"
+
+ body_params = [
+ "contents",
+ "updateClients",
+ "createClientGroups",
+ ]
+ 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 createOrganizationNacClientsGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (array): List of client members associated with the group
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationNacClientsGroup(self, organizationId: str, groupId: str, **kwargs):
+ """
+ **Update an existing client group for the organization with bulk member operations**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (object): Bulk member operations with addList/removeList arrays
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ 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 deleteOrganizationNacClientsGroup(self, organizationId: str, groupId: str):
+ """
+ **Delete an existing client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def updateOrganizationNacClient(self, organizationId: str, clientId: str, mac: str, **kwargs):
+ """
+ **Update an existing client for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-client
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - mac (string): The MAC address of the client
+ - type (string): Type describes if the network client belongs to an individual user or corporate
+ - owner (string): The username of the owner of the client
+ - description (string): User provided description for the client
+ - uuid (string): Universally unique identifier of the client
+ - userDetails (array): List of users of this network client
+ - oui (object): Organizationally unique identifier assigned to a vendor of the client
+ - groups (object): Client group membership changes
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["BYOD", "corporate"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ clientId = urllib.parse.quote(clientId, safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/{clientId}"
+
+ body_params = [
+ "type",
+ "owner",
+ "mac",
+ "description",
+ "uuid",
+ "userDetails",
+ "oui",
+ "groups",
+ ]
+ 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
diff --git a/meraki/api/batch/networks.py b/meraki/api/batch/networks.py
index 5fd9dc9..cc7f323 100644
--- a/meraki/api/batch/networks.py
+++ b/meraki/api/batch/networks.py
@@ -203,6 +203,31 @@ def removeNetworkDevices(self, networkId: str, serial: str, **kwargs):
}
return action
+ def updateNetworkDevicesSyslogServers(self, networkId: str, servers: list, **kwargs):
+ """
+ **Updates the syslog servers configuration for a network.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-devices-syslog-servers
+
+ - networkId (string): Network ID
+ - servers (array): A list of the syslog servers for this network; suggested maximum array size is 10
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/devices/syslog/servers"
+
+ body_params = [
+ "servers",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "servers",
+ "body": payload,
+ }
+ return action
+
def updateNetworkFirmwareUpgrades(self, networkId: str, **kwargs):
"""
**Update firmware upgrade information for a network**
@@ -467,6 +492,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
- topLeftCorner (object): The longitude and latitude of the top left corner of your floor plan.
- topRightCorner (object): The longitude and latitude of the top right corner of your floor plan.
- floorNumber (number): The floor number of the floors within the building
+ - buildingId (string): The ID of the building that this floor belongs to.
- imageContents (string): The file contents (a base 64 encoded string) of your new image. Supported formats are PNG, GIF, and JPG. Note that all images are saved as PNG files, regardless of the format they are uploaded in. If you upload a new image, and you do NOT specify any new geolocation fields ('center, 'topLeftCorner', etc), the floor plan will be recentered with no rotation in order to maintain the aspect ratio of your new image.
"""
@@ -484,6 +510,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
"topLeftCorner",
"topRightCorner",
"floorNumber",
+ "buildingId",
"imageContents",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -633,6 +660,58 @@ def deleteNetworkGroupPolicy(self, networkId: str, groupPolicyId: str, **kwargs)
}
return action
+ def updateNetworkLocationScanning(self, networkId: str, **kwargs):
+ """
+ **Change scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning
+
+ - networkId (string): Network ID
+ - analyticsEnabled (boolean): Collect location and scanning analytics
+ - scanningApiEnabled (boolean): Enable push API for scanning events, analytics must be enabled
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/locationScanning"
+
+ body_params = [
+ "analyticsEnabled",
+ "scanningApiEnabled",
+ ]
+ 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 updateNetworkLocationScanningHttpServers(self, networkId: str, endpoints: list, **kwargs):
+ """
+ **Set the list of scanning API receivers. Old receivers will be removed**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning-http-servers
+
+ - networkId (string): Network ID
+ - endpoints (array): A set of http server configurations
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/locationScanning/httpServers"
+
+ body_params = [
+ "endpoints",
+ ]
+ 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 createNetworkMerakiAuthUser(self, networkId: str, email: str, authorizations: list, **kwargs):
"""
**Authorize a user configured with Meraki Authentication for a network (currently supports 802.1X, splash guest, and client VPN users, and currently, organizations have a 50,000 user cap)**
@@ -828,6 +907,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
- remoteStatusPageEnabled (boolean): Enables / disables access to the device status page (http://[device's LAN IP]). Optional. Can only be set if localStatusPageEnabled is set to true
- localStatusPage (object): A hash of Local Status page(s)' authentication options applied to the Network.
- securePort (object): A hash of SecureConnect options applied to the Network.
+ - fips (object): A hash of FIPS options applied to the Network
- namedVlans (object): A hash of Named VLANs options applied to the Network.
"""
@@ -841,6 +921,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
"remoteStatusPageEnabled",
"localStatusPage",
"securePort",
+ "fips",
"namedVlans",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -851,6 +932,116 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
}
return action
+ def createNetworkSitesBuilding(self, networkId: str, name: str, **kwargs):
+ """
+ **Create a new building**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-sites-building
+
+ - networkId (string): Network ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/sites/buildings"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def deleteNetworkSitesBuilding(self, networkId: str, buildingId: str):
+ """
+ **Delete a building**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ buildingId = urllib.parse.quote(buildingId, safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def updateNetworkSitesBuilding(self, networkId: str, buildingId: str, **kwargs):
+ """
+ **Update a building**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ buildingId = urllib.parse.quote(buildingId, safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ 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 updateNetworkSnmpTraps(self, networkId: str, **kwargs):
+ """
+ **Update the SNMP trap configuration for the specified network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-snmp-traps
+
+ - networkId (string): Network ID
+ - mode (string): SNMP trap protocol version
+ - receiver (object): Stores the port and address
+ - v2 (object): V2 mode
+ - v3 (object): V3 mode
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["disabled", "v1/v2c", "v3"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/snmp/traps"
+
+ body_params = [
+ "mode",
+ "receiver",
+ "v2",
+ "v3",
+ ]
+ 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 splitNetwork(self, networkId: str):
"""
**Split a combined network into individual networks for each type of device**
@@ -903,15 +1094,17 @@ def createNetworkVlanProfile(self, networkId: str, name: str, vlanNames: list, v
- vlanNames (array): An array of named VLANs
- vlanGroups (array): An array of VLAN groups
- iname (string): IName of the profile
+ - allowedVlans (string): The VLANs allowed on the VLAN profile. Only applicable to trunk ports. The given range must be inclusive of all named VLANs.
"""
- kwargs = locals()
+ kwargs.update(locals())
networkId = urllib.parse.quote(networkId, safe="")
resource = f"/networks/{networkId}/vlanProfiles"
body_params = [
"name",
+ "allowedVlans",
"vlanNames",
"vlanGroups",
"iname",
diff --git a/meraki/api/batch/organizations.py b/meraki/api/batch/organizations.py
index 4b8adf6..cfe628f 100644
--- a/meraki/api/batch/organizations.py
+++ b/meraki/api/batch/organizations.py
@@ -420,6 +420,89 @@ def deleteOrganizationAlertsProfile(self, organizationId: str, alertConfigId: st
}
return action
+ def createOrganizationAuthRadiusServer(self, organizationId: str, address: str, secret: str, **kwargs):
+ """
+ **Add an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - address (string): The IP address or FQDN of the RADIUS server
+ - secret (string): Shared secret of the RADIUS server
+ - name (string): The name of the RADIUS server
+ - modes (array): Available server modes
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationAuthRadiusServer(self, organizationId: str, serverId: str, **kwargs):
+ """
+ **Update an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ - name (string): The name of the RADIUS server
+ - address (string): The IP address or FQDN of the RADIUS server
+ - modes (array): Available server modes
+ - secret (string): Shared secret of the RADIUS server
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ serverId = urllib.parse.quote(serverId, safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ 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 deleteOrganizationAuthRadiusServer(self, organizationId: str, serverId: str):
+ """
+ **Delete an organization-wide RADIUS server from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ serverId = urllib.parse.quote(serverId, safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def createOrganizationBrandingPolicy(self, organizationId: str, name: str, **kwargs):
"""
**Add a new branding policy to an organization**
@@ -541,6 +624,41 @@ def deleteOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId
}
return action
+ def importOrganizationCertificates(self, organizationId: str, managedBy: str, contents: str, description: str, **kwargs):
+ """
+ **Import certificate for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!import-organization-certificates
+
+ - organizationId (string): Organization ID
+ - managedBy (string): Certificate managed by type [system_manager, mr, encrypted_syslog]
+ - contents (string): Certificate content in valid PEM format
+ - description (string): Certificate description
+ """
+
+ kwargs = locals()
+
+ if "managedBy" in kwargs:
+ options = ["encrypted_syslog", "mr", "system_manager"]
+ assert kwargs["managedBy"] in options, (
+ f'''"managedBy" cannot be "{kwargs["managedBy"]}", & must be set to one of: {options}'''
+ )
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/certificates/import"
+
+ body_params = [
+ "managedBy",
+ "contents",
+ "description",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
def createOrganizationConfigTemplate(self, organizationId: str, name: str, **kwargs):
"""
**Create a new configuration template**
@@ -860,6 +978,26 @@ def createOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, de
}
return action
+ def bulkOrganizationDevicesPacketCaptureSchedulesDelete(self, organizationId: str, scheduleIds: list, **kwargs):
+ """
+ **Delete packet capture schedules**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-packet-capture-schedules-delete
+
+ - organizationId (string): Organization ID
+ - scheduleIds (array): Delete the packet capture schedules of the specified schedule ids
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCapture/schedules/bulkDelete"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def reorderOrganizationDevicesPacketCaptureSchedules(self, organizationId: str, order: list, **kwargs):
"""
**Bulk update priorities of pcap schedules**
@@ -945,6 +1083,66 @@ def deleteOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, sc
}
return action
+ def tasksOrganizationDevicesPacketCapture(self, organizationId: str, packetId: str, task: str, **kwargs):
+ """
+ **Enqueues a task for a specific packet capture. This endpoint has a sustained rate limit of one request every 60 seconds.**
+ https://developer.cisco.com/meraki/api-v1/#!tasks-organization-devices-packet-capture
+
+ - organizationId (string): Organization ID
+ - packetId (string): Packet ID
+ - task (string): Type of task to enqueue. It can be one of: ["analysis", "reasoning", "summary", "highlights", "title", "flow"]
+ - networkId (string): Parameter to validate authorization by network access
+ """
+
+ kwargs.update(locals())
+
+ if "task" in kwargs:
+ options = ["analysis", "flow", "highlights", "reasoning", "summary", "title"]
+ assert kwargs["task"] in options, f'''"task" cannot be "{kwargs["task"]}", & must be set to one of: {options}'''
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ packetId = urllib.parse.quote(packetId, safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCaptures/{packetId}/tasks"
+
+ body_params = [
+ "networkId",
+ "task",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "enqueue_task",
+ "body": payload,
+ }
+ return action
+
+ def bulkOrganizationDevicesPlacementPositionsUpdate(self, organizationId: str, serials: list, **kwargs):
+ """
+ **Bulk update the attributes related to positions for provided devices**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-placement-positions-update
+
+ - organizationId (string): Organization ID
+ - serials (array): List of device serials on a floor plan to update
+ - height (object): Height of the devices on the floor plan
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/devices/placement/positions/bulkUpdate"
+
+ body_params = [
+ "serials",
+ "height",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "bulk_update",
+ "body": payload,
+ }
+ return action
+
def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str, **kwargs):
"""
**Update an early access feature opt-in for an organization**
@@ -972,6 +1170,137 @@ def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInI
}
return action
+ def updateOrganizationExtensionsSdwanmanagerInterconnect(
+ self, organizationId: str, interconnectId: str, name: str, status: str, **kwargs
+ ):
+ """
+ **Update name and status of an Interconnect**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-sdwanmanager-interconnect
+
+ - organizationId (string): Organization ID
+ - interconnectId (string): Interconnect ID
+ - name (string): Interconnect name
+ - status (string): Interconnect status
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ interconnectId = urllib.parse.quote(interconnectId, safe="")
+ resource = f"/organizations/{organizationId}/extensions/sdwanmanager/interconnects/{interconnectId}"
+
+ body_params = [
+ "name",
+ "status",
+ ]
+ 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 createOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, enabled: bool, networkId: str, **kwargs):
+ """
+ **Add a ThousandEyes agent for this network. Only valid for networks with access to Meraki Insight. Organization must have a ThousandEyes account connected to perform this action.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
+ - networkId (string): Network that will have the ThousandEyes agent installed on.
+ - tests (array): An array of tests to be created
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks"
+
+ body_params = [
+ "enabled",
+ "networkId",
+ "tests",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str, enabled: bool, **kwargs):
+ """
+ **Update a ThousandEyes agent from this network. Only valid for networks with access to Meraki Insight. Organization must have a ThousandEyes account connected to perform this action.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
+
+ body_params = [
+ "enabled",
+ ]
+ 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 deleteOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str):
+ """
+ **Delete a ThousandEyes agent from this network. Only valid for networks with access to Meraki Insight. Organization must have a ThousandEyes account connected to perform this action.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationExtensionsThousandEyesTest(self, organizationId: str, **kwargs):
+ """
+ **Create a ThousandEyes test based on a provided test template. Only valid for networks with access to Meraki Insight. Organization must have a ThousandEyes account connected to perform this action.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-test
+
+ - organizationId (string): Organization ID
+ - tests (array): An array of tests to be created
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/tests"
+
+ body_params = [
+ "tests",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
def disableOrganizationIntegrationsXdrNetworks(self, organizationId: str, networks: list, **kwargs):
"""
**Disable XDR on networks**
@@ -1253,6 +1582,7 @@ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes
- timeZone (string): The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article.
- copyFromNetworkId (string): The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly.
- notes (string): Add any notes or additional information about this network here.
+ - details (array): An array of details
"""
kwargs.update(locals())
@@ -1267,6 +1597,7 @@ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes
"timeZone",
"copyFromNetworkId",
"notes",
+ "details",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
@@ -1305,6 +1636,131 @@ def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds
}
return action
+ def createOrganizationNetworksGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a network group**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the network group
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/networks/groups"
+
+ body_params = [
+ "name",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationNetworksGroup(self, organizationId: str, groupId: str, name: str, **kwargs):
+ """
+ **Update a network group**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The new name of the network group
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ body_params = [
+ "name",
+ ]
+ 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 deleteOrganizationNetworksGroup(self, organizationId: str, groupId: str):
+ """
+ **Delete a network group**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def bulkOrganizationNetworksGroupAssign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
+ """
+ **Add networks to a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-assign
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to add to the network group
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkAssign"
+
+ body_params = [
+ "networkIds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "bulk_assign",
+ "body": payload,
+ }
+ return action
+
+ def bulkOrganizationNetworksGroupUnassign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
+ """
+ **Remove networks from a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-unassign
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to remove from the network group
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ groupId = urllib.parse.quote(groupId, safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkUnassign"
+
+ body_params = [
+ "networkIds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "bulk_unassign",
+ "body": payload,
+ }
+ return action
+
def createOrganizationPoliciesGlobalFirewallRuleset(self, organizationId: str, name: str, **kwargs):
"""
**Create an Organization-Wide Policy Firewall Ruleset**
@@ -1885,6 +2341,89 @@ def deleteOrganizationPolicyObject(self, organizationId: str, policyObjectId: st
}
return action
+ def createOrganizationRoutingVrf(self, organizationId: str, name: str, **kwargs):
+ """
+ **Add an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationRoutingVrf(self, organizationId: str, vrfId: str, **kwargs):
+ """
+ **Update an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ vrfId = urllib.parse.quote(vrfId, safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ 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 deleteOrganizationRoutingVrf(self, organizationId: str, vrfId: str):
+ """
+ **Delete a VRF (Virtual Routing and Forwarding) from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ vrfId = urllib.parse.quote(vrfId, safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def createOrganizationSamlIdp(self, organizationId: str, x509certSha1Fingerprint: str, **kwargs):
"""
**Create a SAML IdP for your organization.**
@@ -2081,6 +2620,33 @@ def detachOrganizationSaseSites(self, organizationId: str, **kwargs):
}
return action
+ def enrollOrganizationSaseSites(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Access. For an organization, a maximum of 2500 sites can be enrolled if they are in spoke mode or a maximum of 10 sites can be enrolled in hub mode.**
+ https://developer.cisco.com/meraki/api-v1/#!enroll-organization-sase-sites
+
+ - organizationId (string): Organization ID
+ - items (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/sase/sites/enroll"
+
+ body_params = [
+ "items",
+ "callback",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
def updateOrganizationSaseSite(self, organizationId: str, siteId: str, **kwargs):
"""
**Update the configuration for a site. Currently, only supports updating default route enablement.**
@@ -2202,3 +2768,94 @@ def createOrganizationSplashThemeAsset(self, organizationId: str, themeIdentifie
"body": payload,
}
return action
+
+ def createOrganizationWebhooksPayloadTemplate(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the new template
+ - body (string): The liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str):
+ """
+ **Destroy a webhook payload template for an organization. Does not work for included templates ('wpt_00001', 'wpt_00002', 'wpt_00003', 'wpt_00004', 'wpt_00005', 'wpt_00006', 'wpt_00007' or 'wpt_00008')**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ payloadTemplateId = urllib.parse.quote(payloadTemplateId, safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def updateOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str, **kwargs):
+ """
+ **Update a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ - name (string): The name of the template
+ - body (string): The liquid template used for the body of the webhook message.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ payloadTemplateId = urllib.parse.quote(payloadTemplateId, safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ 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
diff --git a/meraki/api/batch/secureConnect.py b/meraki/api/batch/secureConnect.py
new file mode 100644
index 0000000..aa0b6f8
--- /dev/null
+++ b/meraki/api/batch/secureConnect.py
@@ -0,0 +1,224 @@
+import urllib
+
+
+class ActionBatchSecureConnect(object):
+ def __init__(self):
+ super(ActionBatchSecureConnect, self).__init__()
+
+ def createOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Adds a new private resource group to an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str, name: str, **kwargs):
+ """
+ **Updates a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ 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 deleteOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Adds a new private resource to the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for a resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, id: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Updates a specific private resource.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization.Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ 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 deleteOrganizationSecureConnectPrivateResource(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource. If this is the last resource in a resource group you must remove it from that resource group before deleting.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationSecureConnectSite(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Connect. For an organization, a maximum of 4000 sites can be enrolled if they are in spoke mode or a maximum of 10 sites can be enrolled in hub mode.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-site
+
+ - organizationId (string): Organization ID
+ - enrollments (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ body_params = [
+ "enrollments",
+ "callback",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSecureConnectSites(self, organizationId: str, **kwargs):
+ """
+ **Detach given sites from Secure Connect**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-sites
+
+ - organizationId (string): Organization ID
+ - sites (array): List of site IDs to detach
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
diff --git a/meraki/api/batch/sensor.py b/meraki/api/batch/sensor.py
index 777ea1c..63e5f43 100644
--- a/meraki/api/batch/sensor.py
+++ b/meraki/api/batch/sensor.py
@@ -12,9 +12,10 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
- serial (string): Serial
- operation (string): Operation to run on the sensor. 'enableDownstreamPower', 'disableDownstreamPower', and 'cycleDownstreamPower' turn power on/off to the device that is connected downstream of an MT40 power monitor. 'refreshData' causes an MT15 or MT40 device to upload its latest readings so that they are immediately available in the Dashboard API.
+ - arguments (array): Additional options to provide to commands run on the sensor, each with a corresponding 'name' and 'value'.
"""
- kwargs = locals()
+ kwargs.update(locals())
if "operation" in kwargs:
options = ["cycleDownstreamPower", "disableDownstreamPower", "enableDownstreamPower", "refreshData"]
@@ -26,6 +27,7 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
resource = f"/devices/{serial}/sensor/commands"
body_params = [
+ "arguments",
"operation",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
diff --git a/meraki/api/batch/sm.py b/meraki/api/batch/sm.py
index fab4bc9..784dd96 100644
--- a/meraki/api/batch/sm.py
+++ b/meraki/api/batch/sm.py
@@ -111,6 +111,108 @@ def deleteOrganizationSmAdminsRole(self, organizationId: str, roleId: str):
}
return action
+ def createOrganizationSmAppleCloudEnrollmentSyncJob(self, organizationId: str, **kwargs):
+ """
+ **Enqueue a sync job for an ADE account**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-apple-cloud-enrollment-sync-job
+
+ - organizationId (string): Organization ID
+ - adeAccountId (string): ADE Account ID
+ - fullSync (boolean): Whether or not job is full sync (defaults to full sync)
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/sm/apple/cloudEnrollment/syncJobs"
+
+ body_params = [
+ "adeAccountId",
+ "fullSync",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationSmBulkEnrollmentToken(self, organizationId: str, networkId: str, expiresAt: str, **kwargs):
+ """
+ **Create a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str, **kwargs):
+ """
+ **Update a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ tokenId = urllib.parse.quote(tokenId, safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ 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 deleteOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str):
+ """
+ **Delete a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ tokenId = urllib.parse.quote(tokenId, safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def updateOrganizationSmSentryPoliciesAssignments(self, organizationId: str, items: list, **kwargs):
"""
**Update an Organizations Sentry Policies using the provided list. Sentry Policies are ordered in descending order of priority (i.e. highest priority at the bottom, this is opposite the Dashboard UI). Policies not present in the request will be deleted.**
diff --git a/meraki/api/batch/support.py b/meraki/api/batch/support.py
new file mode 100644
index 0000000..e884c29
--- /dev/null
+++ b/meraki/api/batch/support.py
@@ -0,0 +1,3 @@
+class ActionBatchSupport(object):
+ def __init__(self):
+ super(ActionBatchSupport, self).__init__()
diff --git a/meraki/api/batch/switch.py b/meraki/api/batch/switch.py
index c469c7b..c35d14c 100644
--- a/meraki/api/batch/switch.py
+++ b/meraki/api/batch/switch.py
@@ -30,6 +30,40 @@ def cycleDeviceSwitchPorts(self, serial: str, ports: list, **kwargs):
}
return action
+ def updateDeviceSwitchPortsMirror(self, serial: str, source: dict, destination: dict, **kwargs):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-switch-ports-mirror
+
+ - serial (string): The switch identifier
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/switch/ports/mirror"
+
+ body_params = [
+ "serial",
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "mirrors/update",
+ "body": payload,
+ }
+ return action
+
def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
"""
**Update a switch port**
@@ -45,6 +79,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
- vlan (integer): The VLAN of the switch 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 port. Only applicable to access ports.
- allowedVlans (string): The VLANs allowed on the switch port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -101,6 +136,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -146,6 +182,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -176,6 +218,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -204,6 +252,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -231,6 +285,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -928,6 +988,97 @@ def updateNetworkSwitchPortSchedule(self, networkId: str, portScheduleId: str, *
}
return action
+ def createNetworkSwitchPortsProfile(self, networkId: str, **kwargs):
+ """
+ **Create a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "profiles/create",
+ "body": payload,
+ }
+ return action
+
+ def updateNetworkSwitchPortsProfile(self, networkId: str, id: str, **kwargs):
+ """
+ **Update a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "profiles/update",
+ "body": payload,
+ }
+ return action
+
+ def deleteNetworkSwitchPortsProfile(self, networkId: str, id: str):
+ """
+ **Delete a port profile from a network**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "profiles/destroy",
+ }
+ return action
+
def createNetworkSwitchQosRule(self, networkId: str, vlan: int, **kwargs):
"""
**Add a quality of service rule**
@@ -1245,6 +1396,105 @@ def updateNetworkSwitchSettings(self, networkId: str, **kwargs):
}
return action
+ def updateNetworkSwitchSpanningTree(self, networkId: str, **kwargs):
+ """
+ **Updates Spanning Tree configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-spanning-tree
+
+ - networkId (string): Network ID
+ - enabled (boolean): Network-level spanning Tree enable
+ - mode (string): Catalyst Spanning Tree Protocol mode (mst, rpvst+)
+ - priorities (array): Spanning tree priority for switches/stacks or switch templates. An empty array will clear the priority settings.
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["mst", "rpvst+"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/switch/spanningTree"
+
+ body_params = [
+ "enabled",
+ "mode",
+ "priorities",
+ ]
+ 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 updateNetworkSwitchStack(self, networkId: str, switchStackId: str, **kwargs):
+ """
+ **Update a switch stack**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - name (string): The name of the stack
+ - members (array): The list of switches that should be in the stack
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ switchStackId = urllib.parse.quote(switchStackId, safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}"
+
+ body_params = [
+ "name",
+ "members",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "stacks/actions/update",
+ "body": payload,
+ }
+ return action
+
+ def updateNetworkSwitchStackPortsMirror(
+ self, networkId: str, switchStackId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update switch port mirrors for switch stacks**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-ports-mirror
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - source (object): Source port details
+ - destination (object): Destination port Details
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ switchStackId = urllib.parse.quote(switchStackId, safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}/ports/mirror"
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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 createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId: str, name: str, **kwargs):
"""
**Create a layer 3 interface for a switch stack**
@@ -1261,6 +1511,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -1292,6 +1548,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -1321,6 +1583,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -1349,6 +1617,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -1613,6 +1887,47 @@ def updateNetworkSwitchStp(self, networkId: str, **kwargs):
}
return action
+ def updateOrganizationConfigTemplateSwitchProfilePortsMirror(
+ self, organizationId: str, configTemplateId: str, profileId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-config-template-switch-profile-ports-mirror
+
+ - organizationId (string): Organization ID
+ - configTemplateId (string): Config template ID
+ - profileId (string): Profile ID
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ configTemplateId = urllib.parse.quote(configTemplateId, safe="")
+ profileId = urllib.parse.quote(profileId, safe="")
+ resource = (
+ f"/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles/{profileId}/ports/mirror"
+ )
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "mirrors/update",
+ "body": payload,
+ }
+ return action
+
def updateOrganizationConfigTemplateSwitchProfilePort(
self, organizationId: str, configTemplateId: str, profileId: str, portId: str, **kwargs
):
@@ -1632,6 +1947,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- 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.
- allowedVlans (string): The VLANs allowed on the switch template port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch template port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch template port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -1690,6 +2006,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -1718,6 +2035,33 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
}
return action
+ def cloneOrganizationSwitchProfilesToTemplateNetwork(self, organizationId: str, **kwargs):
+ """
+ **Clone existing switch templates into a destination template network.**
+ https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-profiles-to-template-network
+
+ - organizationId (string): Organization ID
+ - profileIds (array): Switch profile IDs to clone
+ - templateNodeGroupId (string): Destination template network ID
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/cloneProfilesToTemplateNetwork"
+
+ body_params = [
+ "profileIds",
+ "templateNodeGroupId",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "cloneProfilesToTemplateNetwork",
+ "body": payload,
+ }
+ return action
+
def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str, targetSerials: list, **kwargs):
"""
**Clone port-level and some switch-level configuration settings from a source switch to one or more target switches. Cloned settings include: Aggregation Groups, Power Settings, Multicast Settings, MTU Configuration, STP Bridge priority, Port Mirroring**
@@ -1744,3 +2088,762 @@ def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str,
"body": payload,
}
return action
+
+ def createOrganizationSwitchPortsProfile(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "profiles/create",
+ "body": payload,
+ }
+ return action
+
+ def batchOrganizationSwitchPortsProfilesAssignmentsAssign(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch assign or unassign port profiles to switch ports**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-assignments-assign
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignment operations (max 100)
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/batchAssign"
+
+ body_params = [
+ "items",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "batch_assign",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile automation for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "automations/actions/update",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile automation in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "automations/actions/update",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str):
+ """
+ **Delete an automation port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "automations/actions/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchPortsProfilesNetworksAssignment(
+ self, organizationId: str, type: str, profile: dict, network: dict, **kwargs
+ ):
+ """
+ **Create Network and Smart Ports Profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - type (string): Type of association
+ - profile (object): Smart Port Profile object
+ - network (object): Network object
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments"
+
+ body_params = [
+ "type",
+ "profile",
+ "network",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "profiles/create",
+ "body": payload,
+ }
+ return action
+
+ def batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch Create Network and Smart Ports Profile associations for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-networks-assignments-create
+
+ - organizationId (string): Organization ID
+ - items (array): Array of network and profile associations
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/batchCreate"
+
+ body_params = [
+ "items",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "batch_create",
+ "body": payload,
+ }
+ return action
+
+ def bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete(self, organizationId: str, items: list, **kwargs):
+ """
+ **Bulk delete Network and Smart Port Profile associations**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-switch-ports-profiles-networks-assignments-delete
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignments to delete
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/bulkDelete"
+
+ body_params = [
+ "items",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "bulk_destroy",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchPortsProfilesNetworksAssignment(self, organizationId: str, assignmentId: str):
+ """
+ **Delete Network and Smart Port profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - assignmentId (string): Assignment ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ assignmentId = urllib.parse.quote(assignmentId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/{assignmentId}"
+
+ action = {
+ "resource": resource,
+ "operation": "profiles/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, network: dict, **kwargs):
+ """
+ **Create a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ 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 deleteOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str):
+ """
+ **Deletes a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def updateOrganizationSwitchPortsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "profiles/update",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchPortsProfile(self, organizationId: str, id: str):
+ """
+ **Delete a port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "profiles/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, number: int, **kwargs):
+ """
+ **Create an autonomous system. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "systems/create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str, **kwargs):
+ """
+ **Update an autonomous system. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ autonomousSystemId = urllib.parse.quote(autonomousSystemId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "systems/update",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str):
+ """
+ **Delete an autonomous system from an organization. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ autonomousSystemId = urllib.parse.quote(autonomousSystemId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ action = {
+ "resource": resource,
+ "operation": "systems/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy(
+ self, organizationId: str, filterList: dict, network: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a filter list, in addition to its associated rules. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-filter-lists-deploy
+
+ - organizationId (string): Organization ID
+ - filterList (object): Information regarding the filter list
+ - network (object): Information regarding the network the filter list belongs to
+ - rules (array): Information regarding the filter list rules
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/deploy"
+
+ body_params = [
+ "filterList",
+ "network",
+ "rules",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "deploy",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchRoutingBgpFiltersFilterList(self, organizationId: str, listId: str):
+ """
+ **Delete a filter list. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-filter-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ listId = urllib.parse.quote(listId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/{listId}"
+
+ action = {
+ "resource": resource,
+ "operation": "lists/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy(
+ self, organizationId: str, network: dict, prefixList: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a prefix list, in addition to its associated rules. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-prefix-lists-deploy
+
+ - organizationId (string): Organization ID
+ - network (object): Information regarding the network the prefix list belongs to
+ - prefixList (object): Information regarding the prefix list
+ - rules (array): Information regarding the prefix list rules
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/deploy"
+
+ body_params = [
+ "network",
+ "prefixList",
+ "rules",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "deploy",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchRoutingBgpFiltersPrefixList(self, organizationId: str, listId: str):
+ """
+ **Delete a prefix list. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-prefix-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ listId = urllib.parse.quote(listId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/{listId}"
+
+ action = {
+ "resource": resource,
+ "operation": "lists/destroy",
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpPeersGroupsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ network: dict,
+ peerGroup: dict,
+ peerGroupAddressFamilyBindingProfile: dict,
+ peerGroupProfile: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a peer group, in addition to an associated peer group profile, peer group address family binding, peer group address family binding profile and routing policies associated with the peer group. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-groups-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family the peer group address family binding belongs to
+ - network (object): Information regarding the network the peer group profile belongs to
+ - peerGroup (object): Information regarding the peer group
+ - peerGroupAddressFamilyBindingProfile (object): Information regarding the peer group address family binding profile
+ - peerGroupProfile (object): Information regarding the peer group profile
+ - policies (array): Information regarding the routing policies
+ - router (object): Information regarding the router this peer group belongs to
+ - peerGroupAddressFamilyBinding (object): Information regarding the peer group address family binding. Only required when updating.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/deploy"
+
+ body_params = [
+ "addressFamily",
+ "network",
+ "peerGroup",
+ "peerGroupAddressFamilyBinding",
+ "peerGroupAddressFamilyBindingProfile",
+ "peerGroupProfile",
+ "policies",
+ "router",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "deploy",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpPeersNeighborsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ neighbor: dict,
+ neighborAddressFamilyBinding: dict,
+ peerGroup: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a neighor, in addition to an associated neighbor address family binding and routing policies associated with the neighbor. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-neighbors-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family this binding is bound to
+ - neighbor (object): Information regarding the BPG neighbor
+ - neighborAddressFamilyBinding (object): Information regarding the neighbor address family binding
+ - peerGroup (object): Information regarding the peer group this neighbor belongs to
+ - policies (array): Information regarding the routing policies related to the neighbor
+ - router (object): Information regarding the router this neighbor peers with
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors/deploy"
+
+ body_params = [
+ "addressFamily",
+ "neighbor",
+ "neighborAddressFamilyBinding",
+ "peerGroup",
+ "policies",
+ "router",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "deploy",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpRoutersDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ addressFamilyPrefixes: list,
+ addressFamilyProfile: dict,
+ autonomousSystem: dict,
+ router: dict,
+ switch: dict,
+ **kwargs,
+ ):
+ """
+ **Create a BGP router, in addition to an associated address family, address family prefixes, and address family profile. This is helpful for the initial deployment of a BGP router.. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - addressFamilyPrefixes (array): The list of network prefixes to which the address family applies
+ - addressFamilyProfile (object): Information regarding the profile applied to the address family
+ - autonomousSystem (object): Information regarding the router's autonomous system
+ - router (object): Information regarding the BPG router
+ - switch (object): The router's switch node. When the router is part of a switch stack, this is the switch stack's active node
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "addressFamilyPrefixes",
+ "addressFamilyProfile",
+ "autonomousSystem",
+ "router",
+ "switch",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "deploy",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationSwitchRoutingBgpRoutersPeersDeploy(
+ self, organizationId: str, addressFamily: dict, peerGroups: list, router: dict, **kwargs
+ ):
+ """
+ **Create and update listen ranges, update peers' enabled flag, and delete peer groups for a BGP router. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-peers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - peerGroups (array): Information regarding the peer group peers for a router's peer group
+ - router (object): Information regarding the BPG router
+ """
+
+ kwargs = locals()
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/peers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "peerGroups",
+ "router",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "peers_deploy",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationSwitchRoutingBgpRouter(self, organizationId: str, routerId: str):
+ """
+ **Delete a router from an organization. Border Gateway Protocol requires IOS XE 17.18 or higher**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-router
+
+ - organizationId (string): Organization ID
+ - routerId (string): Router ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ routerId = urllib.parse.quote(routerId, safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/{routerId}"
+
+ action = {
+ "resource": resource,
+ "operation": "ms/actions/bgp/routers/destroy",
+ }
+ return action
diff --git a/meraki/api/batch/users.py b/meraki/api/batch/users.py
new file mode 100644
index 0000000..b8dfbfd
--- /dev/null
+++ b/meraki/api/batch/users.py
@@ -0,0 +1,359 @@
+import urllib
+
+
+class ActionBatchUsers(object):
+ def __init__(self):
+ super(ActionBatchUsers, self).__init__()
+
+ def createOrganizationIamUsersAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Authorize a Meraki end user for an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - idpUserId (string): Meraki end user's ID
+ - startsAt (string): Start time of the desired access for the authorization. Defaults to now.
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "email",
+ "idpUserId",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationIamUsersAuthorizations(self, organizationId: str, **kwargs):
+ """
+ **Update a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-authorizations
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ - email (string): Meraki end user's email
+ - authZone (object): Auth zone
+ - startsAt (string): Start time of the desired access for the authorization
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "authorizationId",
+ "email",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ 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 revokeOrganizationIamUsersAuthorizationsAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Revoke a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!revoke-organization-iam-users-authorizations-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - authorizationId (string): Authorization ID
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/authorization/revoke"
+
+ body_params = [
+ "email",
+ "authorizationId",
+ "authZone",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "revoke",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationIamUsersAuthorization(self, organizationId: str, authorizationId: str):
+ """
+ **Delete an authorization for a Meraki end user.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ authorizationId = urllib.parse.quote(authorizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/{authorizationId}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationIamUsersIdp(self, organizationId: str, name: str, type: str, idpConfig: dict, **kwargs):
+ """
+ **Create an identity provider for an organization. Only Entra ID(Azure AD) is supported at this time.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the identity provider
+ - type (string): Type of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ - description (string): Optional. Description of the identity provider
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider.
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["Azure AD"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps"
+
+ body_params = [
+ "name",
+ "type",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationIamUsersIdpsTestConnectivity(self, organizationId: str, **kwargs):
+ """
+ **Test connectivity to an Entra ID identity provider.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-test-connectivity
+
+ - organizationId (string): Organization ID
+ - idpId (string): Id of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/testConnectivity"
+
+ body_params = [
+ "idpId",
+ "idpConfig",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "test_connectivity",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationIamUsersIdpsUser(self, organizationId: str, **kwargs):
+ """
+ **Create a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationIamUsersIdpsUser(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ 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 deleteOrganizationIamUsersIdpsUser(self, organizationId: str, id: str):
+ """
+ **Delete a Meraki end user**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def createOrganizationIamUsersIdpSync(self, organizationId: str, idpId: str, **kwargs):
+ """
+ **Trigger an IdP sync for an identity provider. Only Entra ID(Azure AD) is supported at this time.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp-sync
+
+ - organizationId (string): Organization ID
+ - idpId (string): Idp ID
+ - emails (array): List of emails to sync
+ - force (boolean): Force a complete sync of all users and groups
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ idpId = urllib.parse.quote(idpId, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{idpId}/sync"
+
+ body_params = [
+ "emails",
+ "force",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def updateOrganizationIamUsersIdp(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update an identity provider. Only Entra ID(Azure AD) is supported at this time.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the identity provider
+ - description (string): Description of the identity provider
+ - idpConfig (object): Identity provider configuration. You can update individual attributes
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider. Set to 'null' for on-demand user and group provisioning.
+ """
+
+ kwargs.update(locals())
+
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ 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 deleteOrganizationIamUsersIdp(self, organizationId: str, id: str):
+ """
+ **Delete a identity provider from an organization. Only Entra ID(Azure AD) is supported at this time.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
diff --git a/meraki/api/batch/wireless.py b/meraki/api/batch/wireless.py
index f2983d2..f529ffa 100644
--- a/meraki/api/batch/wireless.py
+++ b/meraki/api/batch/wireless.py
@@ -42,6 +42,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
Dashboard's automatically generated value.
- minor (integer): Desired minor value of the beacon. If the value is set to null it will reset to
Dashboard's automatically generated value.
+ - transmit (object): Transmit settings including power, interval, and advertised power.
"""
kwargs.update(locals())
@@ -53,6 +54,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
"uuid",
"major",
"minor",
+ "transmit",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
action = {
@@ -89,6 +91,60 @@ def updateDeviceWirelessElectronicShelfLabel(self, serial: str, **kwargs):
}
return action
+ def updateDeviceWirelessRadioAfcPosition(self, serial: str, **kwargs):
+ """
+ **Update the position attributes for this device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-afc-position
+
+ - serial (string): Serial
+ - height (object): Height attributes
+ - gps (object): GPS attributes
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/position"
+
+ body_params = [
+ "height",
+ "gps",
+ ]
+ 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 updateDeviceWirelessRadioOverrides(self, serial: str, **kwargs):
+ """
+ **Update 2.4 GHz, 5 GHz, and 6 GHz radio settings (channel, channel width, power, and enable/disable) that override RF profiles.**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-overrides
+
+ - serial (string): Serial
+ - rfProfile (object): This device's RF profile
+ - radios (array): Radio overrides.
+ """
+
+ kwargs.update(locals())
+
+ serial = urllib.parse.quote(serial, safe="")
+ resource = f"/devices/{serial}/wireless/radio/overrides"
+
+ body_params = [
+ "rfProfile",
+ "radios",
+ ]
+ 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 updateDeviceWirelessRadioSettings(self, serial: str, **kwargs):
"""
**Update 2.4 GHz and 5 GHz radio settings (channel, channel width, power) that override RF profiles. For 6 GHz support or radio enable/disable, use updateDeviceWirelessRadioOverrides instead.**
@@ -481,6 +537,89 @@ def updateNetworkWirelessLocationScanning(self, networkId: str, **kwargs):
}
return action
+ def updateNetworkWirelessLocationWayfinding(self, networkId: str, **kwargs):
+ """
+ **Change client wayfinding settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-location-wayfinding
+
+ - networkId (string): Network ID
+ - enabled (boolean): Whether to enable client wayfinding on that network (only supported on Wireless networks).
+ - maintenanceWindow (object): Maintenance window during which optimization might take place to improve location accuracy.
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/wireless/location/wayfinding"
+
+ body_params = [
+ "enabled",
+ "maintenanceWindow",
+ ]
+ 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 updateNetworkWirelessOpportunisticPcap(self, networkId: str, **kwargs):
+ """
+ **Update the Opportunistic Pcap settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-opportunistic-pcap
+
+ - networkId (string): Network ID
+ - enablement (object): Enablement settings
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/wireless/opportunisticPcap"
+
+ body_params = [
+ "enablement",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "factory",
+ "body": payload,
+ }
+ return action
+
+ def updateNetworkWirelessRadioAutoRf(self, networkId: str, **kwargs):
+ """
+ **Update the AutoRF settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-auto-rf
+
+ - networkId (string): Network ID
+ - busyHour (object): Busy Hour settings
+ - channel (object): Channel settings
+ - fra (object): FRA settings
+ - aiRrm (object): AI-RRM settings
+ """
+
+ kwargs.update(locals())
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ resource = f"/networks/{networkId}/wireless/radio/autoRf"
+
+ body_params = [
+ "busyHour",
+ "channel",
+ "fra",
+ "aiRrm",
+ ]
+ 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 updateNetworkWirelessRadioRrm(self, networkId: str, **kwargs):
"""
**Update the AutoRF settings for a wireless network**
@@ -703,6 +842,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- number (string): Number
- name (string): The name of the SSID
- enabled (boolean): Whether or not the SSID is enabled
+ - localAuth (boolean): Extended local auth flag for Enterprise NAC
- authMode (string): The association control method for the SSID ('open', 'open-enhanced', 'psk', 'open-with-radius', 'open-enhanced-with-radius', 'open-with-nac', '8021x-meraki', '8021x-nac', '8021x-radius', '8021x-google', '8021x-entra', '8021x-localradius', 'ipsk-with-radius', 'ipsk-without-radius', 'ipsk-with-nac' or 'ipsk-with-radius-easy-psk')
- enterpriseAdminAccess (string): Whether or not an SSID is accessible by 'enterprise' administrators ('access disabled' or 'access enabled')
- ssidAdminAccessible (boolean): SSID Administrator access status
@@ -734,6 +874,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- radiusAccountingInterimInterval (integer): The interval (in seconds) in which accounting information is updated and sent to the RADIUS accounting server.
- radiusAttributeForGroupPolicies (string): Specify the RADIUS attribute used to look up group policies ('Filter-Id', 'Reply-Message', 'Airespace-ACL-Name' or 'Aruba-User-Role'). Access points must receive this attribute in the RADIUS Access-Accept message
- ipAssignmentMode (string): The client IP assignment mode ('NAT mode', 'Bridge mode', 'Layer 3 roaming', 'Ethernet over GRE', 'Layer 3 roaming with a concentrator', 'VPN' or 'Campus Gateway')
+ - campusGateway (object): Campus gateway settings
- useVlanTagging (boolean): Whether or not traffic should be directed to use specific VLANs. This param is only valid if the ipAssignmentMode is 'Bridge mode' or 'Layer 3 roaming'
- concentratorNetworkId (string): The concentrator to use when the ipAssignmentMode is 'Layer 3 roaming with a concentrator' or 'VPN'.
- secondaryConcentratorNetworkId (string): The secondary concentrator to use when the ipAssignmentMode is 'VPN'. If configured, the APs will switch to using this concentrator if the primary concentrator is unreachable. This param is optional. ('disabled' represents no secondary concentrator.)
@@ -850,6 +991,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
body_params = [
"name",
"enabled",
+ "localAuth",
"authMode",
"enterpriseAdminAccess",
"ssidAdminAccessible",
@@ -881,6 +1023,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
"radiusAccountingInterimInterval",
"radiusAttributeForGroupPolicies",
"ipAssignmentMode",
+ "campusGateway",
"useVlanTagging",
"concentratorNetworkId",
"secondaryConcentratorNetworkId",
@@ -1244,6 +1387,115 @@ def updateNetworkWirelessSsidOpenRoaming(self, networkId: str, number: str, **kw
}
return action
+ def updateNetworkWirelessSsidPoliciesClientExclusion(self, networkId: str, number: str, static: dict, **kwargs):
+ """
+ **Update the client exclusion status configuration for a given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - static (object): Static client exclusion status
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ number = urllib.parse.quote(number, safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion"
+
+ body_params = [
+ "static",
+ ]
+ 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 updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Set the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion-static-exclusions
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to set as static exclusion list
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ number = urllib.parse.quote(number, safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions"
+
+ body_params = [
+ "macs",
+ ]
+ 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 createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Add a list of MAC addresses to the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-add
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to add to static exclusion
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ number = urllib.parse.quote(number, safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkAdd"
+
+ body_params = [
+ "macs",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Delete a list of MAC addresses from the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-remove
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to remove from static exclusion
+ """
+
+ kwargs = locals()
+
+ networkId = urllib.parse.quote(networkId, safe="")
+ number = urllib.parse.quote(number, safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkRemove"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def updateNetworkWirelessSsidSchedules(self, networkId: str, number: str, **kwargs):
"""
**Update the outage schedule for the SSID**
@@ -1288,6 +1540,8 @@ 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.
+ - language (string): Language of 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.
@@ -1308,6 +1562,32 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
assert kwargs["splashTimeout"] in options, (
f'''"splashTimeout" cannot be "{kwargs["splashTimeout"]}", & must be set to one of: {options}'''
)
+ if "language" in kwargs:
+ options = [
+ "DA",
+ "DE",
+ "EL",
+ "EN",
+ "ES",
+ "FI",
+ "FR",
+ "GL",
+ "IT",
+ "JA",
+ "KO",
+ "NL",
+ "NO",
+ "PL",
+ "PT",
+ "RU",
+ "SK",
+ "SV",
+ "UK",
+ "ZH",
+ ]
+ assert kwargs["language"] in options, (
+ f'''"language" cannot be "{kwargs["language"]}", & must be set to one of: {options}'''
+ )
if "controllerDisconnectionBehavior" in kwargs:
options = ["default", "open", "restricted"]
assert kwargs["controllerDisconnectionBehavior"] in options, (
@@ -1325,6 +1605,8 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
"redirectUrl",
"useRedirectUrl",
"welcomeMessage",
+ "language",
+ "userConsent",
"themeId",
"splashLogo",
"splashImage",
@@ -1441,6 +1723,33 @@ def updateNetworkWirelessZigbee(self, networkId: str, **kwargs):
}
return action
+ def createOrganizationWirelessDevicesLiveToolsClientDisconnect(self, organizationId: str, clientId: str, **kwargs):
+ """
+ **Enqueue a job to disconnect a client from an AP. This endpoint has a sustained rate limit of one request every five seconds per device, with an allowed burst of five requests.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-live-tools-client-disconnect
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ clientId = urllib.parse.quote(clientId, safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/liveTools/clients/{clientId}/disconnect"
+
+ body_params = [
+ "callback",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "disconnect",
+ "body": payload,
+ }
+ return action
+
def createOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, items: list, **kwargs):
"""
**Create a zero touch deployment for a wireless access point**
@@ -1736,6 +2045,133 @@ def updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organiz
}
return action
+ def createOrganizationWirelessSsidsProfile(self, organizationId: str, name: str, ssid: dict, **kwargs):
+ """
+ **Create a new SSID profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ - precedence (object): Precedence configuration for the SSID profile
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles"
+
+ body_params = [
+ "name",
+ "precedence",
+ "ssid",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def createOrganizationWirelessSsidsProfilesAssignment(self, organizationId: str, profile: dict, ssid: dict, **kwargs):
+ """
+ **Assigns an SSID profile to an SSID in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profiles-assignment
+
+ - organizationId (string): Organization ID
+ - profile (object): SSID profile to assign
+ - ssid (object): SSID to assign the SSID profile to
+ - network (object): Network containing the SSID (required if SSID number is used)
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
+
+ body_params = [
+ "profile",
+ "ssid",
+ "network",
+ ]
+ payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ action = {
+ "resource": resource,
+ "operation": "create",
+ "body": payload,
+ }
+ return action
+
+ def deleteOrganizationWirelessSsidsProfilesAssignments(self, organizationId: str, ssid: dict, **kwargs):
+ """
+ **Unassigns the SSID profile assigned to an SSID**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profiles-assignments
+
+ - organizationId (string): Organization ID
+ - ssid (object): SSID to delete the SSID profile assignment of
+ - network (object): Network containing the SSID (required if SSID number is used)
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
+ def updateOrganizationWirelessSsidsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update this SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ """
+
+ kwargs.update(locals())
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ body_params = [
+ "name",
+ "ssid",
+ ]
+ 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 deleteOrganizationWirelessSsidsProfile(self, organizationId: str, id: str):
+ """
+ **Delete an SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ organizationId = urllib.parse.quote(organizationId, safe="")
+ id = urllib.parse.quote(id, safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ action = {
+ "resource": resource,
+ "operation": "destroy",
+ }
+ return action
+
def updateOrganizationWirelessZigbeeDevice(self, organizationId: str, id: str, enrolled: bool, **kwargs):
"""
**Endpoint to update zigbee gateways**
diff --git a/meraki/api/camera.py b/meraki/api/camera.py
index 2f83425..7d98331 100644
--- a/meraki/api/camera.py
+++ b/meraki/api/camera.py
@@ -739,6 +739,97 @@ def getNetworkCameraSchedules(self, networkId: str):
return self._session.get(metadata, resource)
+ def createNetworkCameraVideoWall(self, networkId: str, name: str, tiles: list, **kwargs):
+ """
+ **Create a new video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "createNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ 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"createNetworkCameraVideoWall: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkCameraVideoWall(self, networkId: str, id: str, name: str, tiles: list, **kwargs):
+ """
+ **Update the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the video wall.
+ - tiles (array): The tiles that should appear on the video wall.
+ - index (integer): The order that this wall should appear on the video wall list.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "updateNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ body_params = [
+ "name",
+ "index",
+ "tiles",
+ ]
+ 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"updateNetworkCameraVideoWall: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkCameraVideoWall(self, networkId: str, id: str):
+ """
+ **Delete the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-camera-video-wall
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "deleteNetworkCameraVideoWall",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/camera/videoWalls/{id}"
+
+ return self._session.delete(metadata, resource)
+
def createNetworkCameraWirelessProfile(self, networkId: str, name: str, ssid: dict, **kwargs):
"""
**Creates a new camera wireless profile for this network.**
@@ -1091,6 +1182,45 @@ def getOrganizationCameraDetectionsHistoryByBoundaryByInterval(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationCameraDevicesConfigurations(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Lists all the capabilities of cameras in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-devices-configurations
+
+ - 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 - 100. Default is 20.
+ - 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": ["camera", "configure", "devices", "configurations"],
+ "operation": "getOrganizationCameraDevicesConfigurations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/camera/devices/configurations"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationCameraDevicesConfigurations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwargs):
"""
**Fetch onboarding status of cameras**
@@ -1336,3 +1466,104 @@ def updateOrganizationCameraRole(self, organizationId: str, roleId: str, **kwarg
self._session._logger.warning(f"updateOrganizationCameraRole: ignoring unrecognized kwargs: {invalid}")
return self._session.put(metadata, resource, payload)
+
+ def getOrganizationCameraVideoWalls(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a list of video walls.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-walls
+
+ - 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 10 - 250. Default is 50.
+ - 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): A list of network ids to filter video walls on
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "getOrganizationCameraVideoWalls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationCameraVideoWalls: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCameraVideoWall(self, organizationId: str, id: str):
+ """
+ **Return the specified video wall.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-wall
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls"],
+ "operation": "getOrganizationCameraVideoWall",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationCameraVideoWallVideoLink(self, organizationId: str, id: str, **kwargs):
+ """
+ **Returns video wall link to the specified video wall id**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-video-wall-video-link
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - timestamp (string): [optional] The video link will start at this time. The timestamp should be a string in ISO8601 format. If no timestamp is specified, we will assume current time.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["camera", "configure", "videoWalls", "videoLink"],
+ "operation": "getOrganizationCameraVideoWallVideoLink",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/camera/videoWalls/{id}/videoLink"
+
+ query_params = [
+ "timestamp",
+ ]
+ 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"getOrganizationCameraVideoWallVideoLink: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
diff --git a/meraki/api/campusGateway.py b/meraki/api/campusGateway.py
index c563618..46ac13e 100644
--- a/meraki/api/campusGateway.py
+++ b/meraki/api/campusGateway.py
@@ -96,6 +96,96 @@ def updateNetworkCampusGatewayCluster(self, networkId: str, clusterId: str, **kw
return self._session.put(metadata, resource, payload)
+ def deleteNetworkCampusGatewayCluster(self, networkId: str, clusterId: str):
+ """
+ **Delete a cluster**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-campus-gateway-cluster
+
+ - networkId (string): Network ID
+ - clusterId (string): Cluster ID
+ """
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters"],
+ "operation": "deleteNetworkCampusGatewayCluster",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clusterId = urllib.parse.quote(str(clusterId), safe="")
+ resource = f"/networks/{networkId}/campusGateway/clusters/{clusterId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationCampusGatewayClientsUsageByNetworkByCluster(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns client usage details for campus gateway clusters within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clients-usage-by-network-by-cluster
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Limit the results to clients that belong to one of the provided network groups.
+ - clusterIds (array): Filter results by a list of cluster IDs.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "monitor", "clients", "usage", "byNetwork", "byCluster"],
+ "operation": "getOrganizationCampusGatewayClientsUsageByNetworkByCluster",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clients/usage/byNetwork/byCluster"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "clusterIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClientsUsageByNetworkByCluster: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Get the details of campus gateway clusters**
@@ -143,6 +233,464 @@ def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationCampusGatewayClustersFailoverTargets(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the details of a Failover Targets for a Campus Gateway cluster**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-failover-targets
+
+ - 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
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - clusterIds (array): Optional parameter to filter clusters. This filter uses multiple exact matches.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["campusGateway", "configure", "clusters", "failover", "targets"],
+ "operation": "getOrganizationCampusGatewayClustersFailoverTargets",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/failover/targets"
+
+ query_params = [
+ "networkIds",
+ "clusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClustersFailoverTargets: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayClustersFailoverTargetsByCluster(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get available backup cluster targets for campus gateway failover configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-failover-targets-by-cluster
+
+ - 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
+ - networkIds (array): Networks for which backup cluster targets should be gathered.
+ - clusterIds (array): Cluster IDs to filter backup cluster targets.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["campusGateway", "configure", "clusters", "failover", "targets", "byCluster"],
+ "operation": "getOrganizationCampusGatewayClustersFailoverTargetsByCluster",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/failover/targets/byCluster"
+
+ query_params = [
+ "networkIds",
+ "clusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clusterIds",
+ ]
+ 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"getOrganizationCampusGatewayClustersFailoverTargetsByCluster: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayClustersNetworksOverviews(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List networks tunneling through Campus Gateway clusters with their AP, ssids and client counts**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-networks-overviews
+
+ - 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
+ - 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.
+ - 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'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clients", "clusterId", "connections", "name", "networkId", "siteName", "ssids"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters", "networks", "overviews"],
+ "operation": "getOrganizationCampusGatewayClustersNetworksOverviews",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/networks/overviews"
+
+ query_params = [
+ "clusterIds",
+ "siteIds",
+ "networkIds",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clusterIds",
+ "siteIds",
+ "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"getOrganizationCampusGatewayClustersNetworksOverviews: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def provisionOrganizationCampusGatewayClusters(
+ self,
+ organizationId: str,
+ clusterId: str,
+ network: dict,
+ name: str,
+ uplinks: list,
+ tunnels: list,
+ nameservers: dict,
+ portChannels: list,
+ **kwargs,
+ ):
+ """
+ **Provisions a cluster,adds campus gateways to it and associate/dissociate failover targets.**
+ https://developer.cisco.com/meraki/api-v1/#!provision-organization-campus-gateway-clusters
+
+ - organizationId (string): Organization ID
+ - clusterId (string): ID of the cluster to be provisioned
+ - network (object): Network to be provisioned
+ - name (string): Name of the new cluster
+ - uplinks (array): Uplink interface settings of the cluster
+ - tunnels (array): Tunnel interface settings of the cluster: Reuse uplink or specify tunnel interface
+ - nameservers (object): Nameservers of the cluster
+ - portChannels (array): Port channel settings of the cluster
+ - devices (array): Devices to be added to the cluster
+ - failover (object): Failover targets for the cluster
+ - notes (string): Notes about cluster with max size of 511 characters allowed
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters"],
+ "operation": "provisionOrganizationCampusGatewayClusters",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/provision"
+
+ body_params = [
+ "clusterId",
+ "network",
+ "name",
+ "uplinks",
+ "tunnels",
+ "nameservers",
+ "portChannels",
+ "devices",
+ "failover",
+ "notes",
+ ]
+ 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"provisionOrganizationCampusGatewayClusters: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationCampusGatewayClustersSsids(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List SSIDs tunneling through Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters-ssids
+
+ - 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
+ - clusterIds (array): Optional parameter to filter by MCG cluster IDs. This filter uses multiple exact matches.
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - search (string): Optional parameter to filter SSIDs by name. This filter uses case-insensitive starts with string matching.
+ - sortBy (string): Optional parameter to sort results. Default is 'networkId'.
+ - sortOrder (string): Optional parameter to specify sort direction. Default is 'asc'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clusterId", "name", "networkId", "ssidId"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "clusters", "ssids"],
+ "operation": "getOrganizationCampusGatewayClustersSsids",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/clusters/ssids"
+
+ query_params = [
+ "clusterIds",
+ "networkIds",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clusterIds",
+ "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"getOrganizationCampusGatewayClustersSsids: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayConnections(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the details of APs tunneling through the Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-connections
+
+ - 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
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connections(APs) by its own serials. This filter uses multiple exact matches.
+ - campusGatewaySerials (array): Optional parameter to filter connections(APs) by MCG serials. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter connections(APs) by MCG cluster IDs. This filter uses multiple exact matches.
+ - campusGatewayTunnelStatuses (array): Optional parameter to filter connections(APs) by tunnel statuses. This filter uses multiple exact matches.
+ - search (string): Optional parameter to filter connections(APs) on AP name, serial, MAC address, network name, or interface IP address. This filter uses partial string matching (ILIKE).
+ - models (array): Optional parameter to filter connections(APs) by device model names. This filter uses multiple exact matches.
+ - dataEncryptionStatuses (array): Optional parameter to filter connections(APs) by data encryption status. This filter uses multiple exact matches.
+ - sortBy (string): Optional parameter to sort results. Available options: name, serial, status, interfaces, clients, dataEncryption, networkName. Default is 'serial'.
+ - sortOrder (string): Optional parameter to specify sort direction. Default is 'asc'.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["clients", "dataEncryption", "interfaces", "name", "networkName", "serial", "status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "connections"],
+ "operation": "getOrganizationCampusGatewayConnections",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/connections"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "search",
+ "models",
+ "dataEncryptionStatuses",
+ "sortBy",
+ "sortOrder",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ 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"getOrganizationCampusGatewayConnections: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationCampusGatewayConnectionsOverview(self, organizationId: str, **kwargs):
+ """
+ **List the count of connections(APs) with tunneling status up and down through the Campus Gateway clusters**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-connections-overview
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter networks. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connections(APs) by its own serials. This filter uses multiple exact matches.
+ - campusGatewaySerials (array): Optional parameter to filter connections(APs) by Campus Gateway serials. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter connections(APs) by Campus Gateway cluster IDs. This filter uses multiple exact matches.
+ - campusGatewayTunnelStatuses (array): Optional parameter to filter connections(APs) by tunnel statuses. This filter uses multiple exact matches.
+ - search (string): Optional setting that lets you filter access points (APs) by name, serial number, MAC address, network name, or interface IP address. The filter matches partial text, not just exact values (uses ILIKE matching).
+ - models (array): Optional parameter to filter connections(APs) by device model names. This filter uses multiple exact matches.
+ - dataEncryptionStatuses (array): Optional parameter to filter connections(APs) by data encryption status. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["campusGateway", "configure", "connections", "overview"],
+ "operation": "getOrganizationCampusGatewayConnectionsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/campusGateway/connections/overview"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "search",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewaySerials",
+ "campusGatewayClusterIds",
+ "campusGatewayTunnelStatuses",
+ "models",
+ "dataEncryptionStatuses",
+ ]
+ 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"getOrganizationCampusGatewayConnectionsOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
diff --git a/meraki/api/devices.py b/meraki/api/devices.py
index ab404ce..b3e059c 100644
--- a/meraki/api/devices.py
+++ b/meraki/api/devices.py
@@ -232,6 +232,72 @@ def createDeviceCellularUplinksBandsMasksUpdate(self, serial: str, slot: str, ty
return self._session.post(metadata, resource, payload)
+ def updateDeviceCliConfigFavorite(self, serial: str, configId: str, favorite: bool, **kwargs):
+ """
+ **Favorite or unfavorite a configuration for an IOS-XE device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-cli-config-favorite
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - favorite (boolean): Whether the config should be favorited
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["devices", "configure", "cli", "configs"],
+ "operation": "updateDeviceCliConfigFavorite",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ configId = urllib.parse.quote(str(configId), safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}"
+
+ body_params = [
+ "favorite",
+ ]
+ 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"updateDeviceCliConfigFavorite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def createDeviceConfigRestore(self, serial: str, configId: str, **kwargs):
+ """
+ **Create a restore request for a specific config history record**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-config-restore
+
+ - serial (string): Serial
+ - configId (string): Config ID
+ - scheduledFor (string): Requested ISO 8601 UTC timestamp for when the restore should be scheduled
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["devices", "configure", "cli", "configs"],
+ "operation": "createDeviceConfigRestore",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ configId = urllib.parse.quote(str(configId), safe="")
+ resource = f"/devices/{serial}/cli/configs/{configId}/restores"
+
+ body_params = [
+ "scheduledFor",
+ ]
+ 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"createDeviceConfigRestore: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
def getDeviceClients(self, serial: str, **kwargs):
"""
**List the clients of a device, up to a maximum of a month ago**
@@ -265,6 +331,56 @@ def getDeviceClients(self, serial: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def createDeviceLiveToolsAclHitCount(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform an ACL hit count for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-acl-hit-count
+
+ - 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", "aclHitCount"],
+ "operation": "createDeviceLiveToolsAclHitCount",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/aclHitCount"
+
+ 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"createDeviceLiveToolsAclHitCount: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsAclHitCount(self, serial: str, id: str):
+ """
+ **Return an ACL hit count live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-acl-hit-count
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "aclHitCount"],
+ "operation": "getDeviceLiveToolsAclHitCount",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/aclHitCount/{id}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsArpTable(self, serial: str, **kwargs):
"""
**Enqueue a job to perform a ARP table request for the device**
@@ -367,6 +483,75 @@ def getDeviceLiveToolsCableTest(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def getDeviceLiveToolsClientsDisconnect(self, serial: str, id: str):
+ """
+ **Return a client disconnect job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-clients-disconnect
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "clients", "disconnect"],
+ "operation": "getDeviceLiveToolsClientsDisconnect",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/clients/disconnect/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsDhcpLease(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a DHCP leases request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-dhcp-lease
+
+ - 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", "dhcpLeases"],
+ "operation": "createDeviceLiveToolsDhcpLease",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/dhcpLeases"
+
+ 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"createDeviceLiveToolsDhcpLease: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsDhcpLease(self, serial: str, dhcpLeasesId: str):
+ """
+ **Return a DHCP leases live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-dhcp-lease
+
+ - serial (string): Serial
+ - dhcpLeasesId (string): Dhcp leases ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "dhcpLeases"],
+ "operation": "getDeviceLiveToolsDhcpLease",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ dhcpLeasesId = urllib.parse.quote(str(dhcpLeasesId), safe="")
+ resource = f"/devices/{serial}/liveTools/dhcpLeases/{dhcpLeasesId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs):
"""
**Enqueue a job to blink LEDs on a device**
@@ -521,6 +706,56 @@ def getDeviceLiveToolsMulticastRouting(self, serial: str, multicastRoutingId: st
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsOspfNeighbor(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a OSPF neighbors request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-ospf-neighbor
+
+ - 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", "ospfNeighbors"],
+ "operation": "createDeviceLiveToolsOspfNeighbor",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/ospfNeighbors"
+
+ 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"createDeviceLiveToolsOspfNeighbor: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsOspfNeighbor(self, serial: str, ospfNeighborsId: str):
+ """
+ **Return an OSPF neighbors live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-ospf-neighbor
+
+ - serial (string): Serial
+ - ospfNeighborsId (string): Ospf neighbors ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "ospfNeighbors"],
+ "operation": "getDeviceLiveToolsOspfNeighbor",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ ospfNeighborsId = urllib.parse.quote(str(ospfNeighborsId), safe="")
+ resource = f"/devices/{serial}/liveTools/ospfNeighbors/{ospfNeighborsId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsPing(self, serial: str, target: str, **kwargs):
"""
**Enqueue a job to ping a target host from the device**
@@ -627,6 +862,56 @@ def getDeviceLiveToolsPingDevice(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsPortStatus(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-port-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", "portStatus"],
+ "operation": "createDeviceLiveToolsPortStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/portStatus"
+
+ 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"createDeviceLiveToolsPortStatus: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsPortStatus(self, serial: str, portStatusId: str):
+ """
+ **Return a port status live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-port-status
+
+ - serial (string): Serial
+ - portStatusId (string): Port status ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "portStatus"],
+ "operation": "getDeviceLiveToolsPortStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ portStatusId = urllib.parse.quote(str(portStatusId), safe="")
+ resource = f"/devices/{serial}/liveTools/portStatus/{portStatusId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsPortsCycle(self, serial: str, ports: list, **kwargs):
"""
**Enqueue a job to perform a cycle port for the device on the specified ports**
@@ -679,6 +964,294 @@ def getDeviceLiveToolsPortsCycle(self, serial: str, id: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsReboot(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to reboot a device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-reboot
+
+ - 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", "reboot"],
+ "operation": "createDeviceLiveToolsReboot",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/reboot"
+
+ 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"createDeviceLiveToolsReboot: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsReboot(self, serial: str, rebootId: str):
+ """
+ **Return a reboot job**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-reboot
+
+ - serial (string): Serial
+ - rebootId (string): Reboot ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "reboot"],
+ "operation": "getDeviceLiveToolsReboot",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ rebootId = urllib.parse.quote(str(rebootId), safe="")
+ resource = f"/devices/{serial}/liveTools/reboot/{rebootId}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsRoutingTable(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-routing-table
+
+ - 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"],
+ "operation": "createDeviceLiveToolsRoutingTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/routingTable"
+
+ 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"createDeviceLiveToolsRoutingTable: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createDeviceLiveToolsRoutingTableLookup(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a routing table lookup request for the 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.**
+ 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 job to perform a routing table summary request for the 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 a routing table live tool 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 getDeviceLiveToolsRoutingTable(self, serial: str, id: str):
+ """
+ **Return an routing table live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-routing-table
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "routingTable"],
+ "operation": "getDeviceLiveToolsRoutingTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/routingTable/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsSpeedTest(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to execute a speed test from a device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-speed-test
+
+ - serial (string): Serial
+ - interface (string): Optional filter for a specific WAN interface. Valid interfaces are wan1, wan2, wan3, wan4. Default will return wan1.
+ """
+
+ kwargs.update(locals())
+
+ if "interface" in kwargs:
+ options = ["wan1", "wan2", "wan3", "wan4"]
+ assert kwargs["interface"] in options, (
+ f'''"interface" cannot be "{kwargs["interface"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["devices", "liveTools", "speedTest"],
+ "operation": "createDeviceLiveToolsSpeedTest",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/speedTest"
+
+ body_params = [
+ "interface",
+ ]
+ 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"createDeviceLiveToolsSpeedTest: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsSpeedTest(self, serial: str, id: str):
+ """
+ **Returns a speed test result in megabits per second**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-speed-test
+
+ - serial (string): Serial
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "speedTest"],
+ "operation": "getDeviceLiveToolsSpeedTest",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/devices/{serial}/liveTools/speedTest/{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**
@@ -729,6 +1302,110 @@ def getDeviceLiveToolsThroughputTest(self, serial: str, throughputTestId: str):
return self._session.get(metadata, resource)
+ def createDeviceLiveToolsTraceRoute(self, serial: str, target: str, sourceInterface: str, **kwargs):
+ """
+ **Enqueue a job to run trace route in the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-trace-route
+
+ - serial (string): Serial
+ - target (string): Destination Host name or address
+ - sourceInterface (string): Source Interface IP address
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["devices", "liveTools", "traceRoute"],
+ "operation": "createDeviceLiveToolsTraceRoute",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/traceRoute"
+
+ body_params = [
+ "target",
+ "sourceInterface",
+ "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"createDeviceLiveToolsTraceRoute: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsTraceRoute(self, serial: str, traceRouteId: str):
+ """
+ **Return a trace route job**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-trace-route
+
+ - serial (string): Serial
+ - traceRouteId (string): Trace route ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "traceRoute"],
+ "operation": "getDeviceLiveToolsTraceRoute",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ traceRouteId = urllib.parse.quote(str(traceRouteId), safe="")
+ resource = f"/devices/{serial}/liveTools/traceRoute/{traceRouteId}"
+
+ return self._session.get(metadata, resource)
+
+ def createDeviceLiveToolsVrrpTable(self, serial: str, **kwargs):
+ """
+ **Enqueue a job to perform a VRRP table request for the device**
+ https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-vrrp-table
+
+ - 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", "vrrpTable"],
+ "operation": "createDeviceLiveToolsVrrpTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/liveTools/vrrpTable"
+
+ 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"createDeviceLiveToolsVrrpTable: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getDeviceLiveToolsVrrpTable(self, serial: str, vrrpTableId: str):
+ """
+ **Return an VRRP table live tool job.**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-vrrp-table
+
+ - serial (string): Serial
+ - vrrpTableId (string): Vrrp table ID
+ """
+
+ metadata = {
+ "tags": ["devices", "liveTools", "vrrpTable"],
+ "operation": "getDeviceLiveToolsVrrpTable",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ vrrpTableId = urllib.parse.quote(str(vrrpTableId), safe="")
+ resource = f"/devices/{serial}/liveTools/vrrpTable/{vrrpTableId}"
+
+ return self._session.get(metadata, resource)
+
def createDeviceLiveToolsWakeOnLan(self, serial: str, vlanId: int, mac: str, **kwargs):
"""
**Enqueue a job to send a Wake-on-LAN packet from the device**
diff --git a/meraki/api/insight.py b/meraki/api/insight.py
index 79b0283..08b7cb4 100644
--- a/meraki/api/insight.py
+++ b/meraki/api/insight.py
@@ -64,6 +64,95 @@ def getOrganizationInsightApplications(self, organizationId: str):
return self._session.get(metadata, resource)
+ def createOrganizationInsightApplication(self, organizationId: str, counterSetRuleId: int, **kwargs):
+ """
+ **Add an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - counterSetRuleId (integer): The id of the counter set rule
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "createOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications"
+
+ body_params = [
+ "counterSetRuleId",
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ 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"createOrganizationInsightApplication: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationInsightApplication(self, organizationId: str, applicationId: str, **kwargs):
+ """
+ **Update an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ - enableSmartThresholds (boolean): Enable Smart Thresholds
+ - thresholds (object): Thresholds defined by a user for each application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "updateOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ applicationId = urllib.parse.quote(str(applicationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ body_params = [
+ "enableSmartThresholds",
+ "thresholds",
+ ]
+ 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"updateOrganizationInsightApplication: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationInsightApplication(self, organizationId: str, applicationId: str):
+ """
+ **Delete an Insight tracked application**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-application
+
+ - organizationId (string): Organization ID
+ - applicationId (string): Application ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "applications"],
+ "operation": "deleteOrganizationInsightApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ applicationId = urllib.parse.quote(str(applicationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/applications/{applicationId}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationInsightMonitoredMediaServers(self, organizationId: str):
"""
**List the monitored media servers for this organization**
@@ -194,3 +283,154 @@ def deleteOrganizationInsightMonitoredMediaServer(self, organizationId: str, mon
resource = f"/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}"
return self._session.delete(metadata, resource)
+
+ def getOrganizationInsightSpeedTestResults(self, organizationId: str, serials: list, **kwargs):
+ """
+ **List the speed tests for the given devices under this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-insight-speed-test-results
+
+ - organizationId (string): Organization ID
+ - serials (array): A list of serial numbers. The returned results will be filtered to only include these serials.
+ - timespan (integer): Amount of seconds ago to query for results. Only include timespan OR both t0 & t1.
+ - t0 (integer): Start time to query for results in epoch seconds. Only include timespan OR both t0 & t1.
+ - t1 (integer): End time to query for results in epoch seconds. Only include timespan OR both t0 & t1.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "speedTestResults"],
+ "operation": "getOrganizationInsightSpeedTestResults",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/speedTestResults"
+
+ query_params = [
+ "serials",
+ "timespan",
+ "t0",
+ "t1",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationInsightSpeedTestResults: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationInsightWebApps(self, organizationId: str):
+ """
+ **Lists all default web applications rules with counter set rule ids**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-insight-web-apps
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "getOrganizationInsightWebApps",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationInsightWebApp(self, organizationId: str, name: str, hostname: str, **kwargs):
+ """
+ **Add a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "createOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ 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"createOrganizationInsightWebApp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str, **kwargs):
+ """
+ **Update a custom web application for Insight to be able to track**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ - name (string): The name of the Web Application
+ - hostname (string): The hostname of Web Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "updateOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ customCounterSetRuleId = urllib.parse.quote(str(customCounterSetRuleId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ body_params = [
+ "name",
+ "hostname",
+ ]
+ 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"updateOrganizationInsightWebApp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationInsightWebApp(self, organizationId: str, customCounterSetRuleId: str):
+ """
+ **Delete a custom web application by counter set rule id.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-insight-web-app
+
+ - organizationId (string): Organization ID
+ - customCounterSetRuleId (string): Custom counter set rule ID
+ """
+
+ metadata = {
+ "tags": ["insight", "configure", "webApps"],
+ "operation": "deleteOrganizationInsightWebApp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ customCounterSetRuleId = urllib.parse.quote(str(customCounterSetRuleId), safe="")
+ resource = f"/organizations/{organizationId}/insight/webApps/{customCounterSetRuleId}"
+
+ return self._session.delete(metadata, resource)
diff --git a/meraki/api/licensing.py b/meraki/api/licensing.py
index df89824..5911aa6 100644
--- a/meraki/api/licensing.py
+++ b/meraki/api/licensing.py
@@ -45,6 +45,39 @@ def getAdministeredLicensingSubscriptionEntitlements(self, **kwargs):
return self._session.get(metadata, resource, params)
+ def batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate(self, **kwargs):
+ """
+ **Batch change networks to their desired feature tier for specified product types**
+ https://developer.cisco.com/meraki/api-v1/#!batch-administered-licensing-subscription-networks-feature-tiers-update
+
+ - items (array): List of networks and corresponding product types to update. Maximum 500 networks
+ - isAtomic (boolean): Flag to determine if the operation should act atomically
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["licensing", "configure", "subscription", "featureTiers"],
+ "operation": "batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate",
+ }
+ resource = "/administered/licensing/subscription/networks/featureTiers/batchUpdate"
+
+ body_params = [
+ "items",
+ "isAtomic",
+ ]
+ 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"batchAdministeredLicensingSubscriptionNetworksFeatureTiersUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getAdministeredLicensingSubscriptionSubscriptions(
self, organizationIds: list, total_pages=1, direction="next", **kwargs
):
diff --git a/meraki/api/nac.py b/meraki/api/nac.py
new file mode 100644
index 0000000..067cc48
--- /dev/null
+++ b/meraki/api/nac.py
@@ -0,0 +1,1151 @@
+import urllib
+
+
+class Nac(object):
+ def __init__(self, session):
+ super(Nac, self).__init__()
+ self._session = session
+
+ def getOrganizationNacAuthorizationPolicies(self, organizationId: str, **kwargs):
+ """
+ **Get all nac authorization policies for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-authorization-policies
+
+ - organizationId (string): Organization ID
+ - policyIds (array): List of ids for specific authorization policies retrieval
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies"],
+ "operation": "getOrganizationNacAuthorizationPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies"
+
+ query_params = [
+ "policyIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "policyIds",
+ ]
+ 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"getOrganizationNacAuthorizationPolicies: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def createOrganizationNacAuthorizationPolicyRule(
+ self, organizationId: str, policyId: str, name: str, rank: int, authorizationProfile: dict, **kwargs
+ ):
+ """
+ **Create a rule in an authorization policy set of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - name (string): Name of Authorization rule
+ - rank (integer): Rank of Authorization rule
+ - authorizationProfile (object): Authorization profile associated with the rule
+ - enabled (boolean): Enabled status of authorization rule. Default is False.
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ - condition (object): Condition of Authorization rule.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "createOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules"
+
+ body_params = [
+ "name",
+ "rank",
+ "enabled",
+ "sourcePolicyVersion",
+ "authorizationProfile",
+ "condition",
+ ]
+ 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"createOrganizationNacAuthorizationPolicyRule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationNacAuthorizationPolicyRule(
+ self, organizationId: str, policyId: str, ruleId: str, name: str, rank: int, authorizationProfile: dict, **kwargs
+ ):
+ """
+ **Update an existing rule of an authorization policy set within an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - ruleId (string): Rule ID
+ - name (string): Name of Authorization rule
+ - rank (integer): Rank of Authorization rule
+ - authorizationProfile (object): Authorization profile associated with the rule
+ - enabled (boolean): Enabled status of authorization rule. Default is False.
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ - condition (object): Condition of Authorization rule.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "updateOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ ruleId = urllib.parse.quote(str(ruleId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules/{ruleId}"
+
+ body_params = [
+ "name",
+ "rank",
+ "enabled",
+ "sourcePolicyVersion",
+ "authorizationProfile",
+ "condition",
+ ]
+ 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"updateOrganizationNacAuthorizationPolicyRule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationNacAuthorizationPolicyRule(self, organizationId: str, policyId: str, ruleId: str, **kwargs):
+ """
+ **Delete a rule in an authorization policy set of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-authorization-policy-rule
+
+ - organizationId (string): Organization ID
+ - policyId (string): Policy ID
+ - ruleId (string): Rule ID
+ - sourcePolicyVersion (string): Source policy version of the policy set containing this rule
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "authorization", "policies", "rules"],
+ "operation": "deleteOrganizationNacAuthorizationPolicyRule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ policyId = urllib.parse.quote(str(policyId), safe="")
+ ruleId = urllib.parse.quote(str(ruleId), safe="")
+ resource = f"/organizations/{organizationId}/nac/authorization/policies/{policyId}/rules/{ruleId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationNacCertificates(self, organizationId: str, **kwargs):
+ """
+ **Gets all certificates for an organization and can filter by certificate status, expiry date and last used date**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates
+
+ - organizationId (string): Organization ID
+ - status (string): Status Parameter for GetAll request
+ - expiry (boolean): Boolean indicating whether to filter by expiry in one month
+ - lastUsed (boolean): Boolean indicating whether to filter by last used in over one month
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["Disabled", "Enabled"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates"],
+ "operation": "getOrganizationNacCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates"
+
+ query_params = [
+ "status",
+ "expiry",
+ "lastUsed",
+ ]
+ 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"getOrganizationNacCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacCertificatesAuthoritiesCrls(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all the organization's CRL.It's possible to filter results by CRL issuers (CA) or CRL's ID - see caIds and crlIds query parameters.This endpoint could be used for 'show' action when you specify a single CRL ID in crlIds parameter**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-authorities-crls
+
+ - 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 - 20. Default is 5.
+ - 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.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: caId)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ - crlIds (array): A list of CRL ids. The returned CRLs will be filtered to only include these ids
+ - caIds (array): When ca Ids are provided, only CRLs associated to the given CA will be returned. Otherwise, all the CRLs created for an organization will be returned.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["caId", "createdAt", "lastUpdatedAt"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "getOrganizationNacCertificatesAuthoritiesCrls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ "crlIds",
+ "caIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "crlIds",
+ "caIds",
+ ]
+ 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"getOrganizationNacCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacCertificatesAuthoritiesCrl(
+ self, organizationId: str, caId: str, content: str, isDelta: bool, **kwargs
+ ):
+ """
+ **Create a new CRL (either base or delta) for an existing CA**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - caId (string): ID of the CRL issuer
+ - content (string): CRL content in PEM format
+ - isDelta (boolean): Whether it's a delta CRL or not
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "createOrganizationNacCertificatesAuthoritiesCrl",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls"
+
+ body_params = [
+ "caId",
+ "content",
+ "isDelta",
+ ]
+ 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"createOrganizationNacCertificatesAuthoritiesCrl: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacCertificatesAuthoritiesCrlsDescriptors(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get all the organization's CRL descriptors (metadata only - revocation list data is excluded)**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-authorities-crls-descriptors
+
+ - 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 - 100. Default is 20.
+ - 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.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: caId)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ - caIds (array): When ca Ids are provided, only CRLs associated to the given CA will be returned. Otherwise, all the CRLs created for an organization will be returned.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["caId", "createdAt", "lastUpdatedAt"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls", "descriptors"],
+ "operation": "getOrganizationNacCertificatesAuthoritiesCrlsDescriptors",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls/descriptors"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ "caIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "caIds",
+ ]
+ 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"getOrganizationNacCertificatesAuthoritiesCrlsDescriptors: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationNacCertificatesAuthoritiesCrl(self, organizationId: str, crlId: str):
+ """
+ **Deletes a whole CRL, including all its deltas (in case of base CRL removal)**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-certificates-authorities-crl
+
+ - organizationId (string): Organization ID
+ - crlId (string): Crl ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "authorities", "crls"],
+ "operation": "deleteOrganizationNacCertificatesAuthoritiesCrl",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ crlId = urllib.parse.quote(str(crlId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/authorities/crls/{crlId}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationNacCertificatesImport(self, organizationId: str, contents: str, **kwargs):
+ """
+ **Import certificate for this organization or validate without persisting**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-certificates-import
+
+ - organizationId (string): Organization ID
+ - contents (string): Certificate content in valid PEM format
+ - dryRun (boolean): If true, validates the certificate without persisting it
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "import"],
+ "operation": "createOrganizationNacCertificatesImport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/import"
+
+ body_params = [
+ "contents",
+ "dryRun",
+ "profile",
+ ]
+ 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"createOrganizationNacCertificatesImport: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacCertificatesOverview(self, organizationId: str):
+ """
+ **Get counts of Enabled, Disabled, Expired and Last Used certificates for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-certificates-overview
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates", "overview"],
+ "operation": "getOrganizationNacCertificatesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/overview"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationNacCertificate(self, organizationId: str, certificateId: str, profile: dict, **kwargs):
+ """
+ **Update certificate configuration by certificateId for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - profile (object): Profile object containing certificate config fields
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "certificates"],
+ "operation": "updateOrganizationNacCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/nac/certificates/{certificateId}"
+
+ body_params = [
+ "profile",
+ ]
+ 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"updateOrganizationNacCertificate: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationNacClients(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all known clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients
+
+ - 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
+ - sortOrder (string): Query parameter for specifying the direction of sorting to use for the given sortKey.
+ - sortKey (string): Query parameter to sort the clients by the value of the specified key.
+ - 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.
+ - search (string): Optional parameter to fuzzy search on clients.
+ - clientIds (array): List of ids for specific client retrieval
+ - groupIds (array): List of group ids for client retrieval by group
+ - lastNetworkName (array): List of network names for client retrieval by last login network name
+ - ssid (array): List of SSID's to filter
+ - classification (object): Classification filters for client retrieval
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ASC", "DESC"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = ["mac"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "getOrganizationNacClients",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients"
+
+ query_params = [
+ "sortOrder",
+ "sortKey",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "clientIds",
+ "groupIds",
+ "lastNetworkName",
+ "ssid",
+ "classification",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clientIds",
+ "groupIds",
+ "lastNetworkName",
+ "ssid",
+ ]
+ 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"getOrganizationNacClients: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacClient(self, organizationId: str, mac: str, **kwargs):
+ """
+ **Create a client for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-client
+
+ - organizationId (string): Organization ID
+ - mac (string): The MAC address of the client
+ - type (string): Type describes if the network client belongs to an individual user or corporate
+ - owner (string): The username of the owner of the client
+ - description (string): User provided description for the client
+ - uuid (string): Universally unique identifier of the client
+ - userDetails (array): List of users of this network client
+ - oui (object): Organizationally unique identifier assigned to a vendor of the client
+ - groups (array): List of group members associated with the client
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["BYOD", "corporate"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "createOrganizationNacClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients"
+
+ body_params = [
+ "type",
+ "owner",
+ "mac",
+ "description",
+ "uuid",
+ "userDetails",
+ "oui",
+ "groups",
+ ]
+ 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"createOrganizationNacClient: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationNacClientsDelete(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Delete existing client(s) for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-nac-clients-delete
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of ids for specific client retrieval
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "bulkOrganizationNacClientsDelete",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkDelete"
+
+ body_params = [
+ "clientIds",
+ ]
+ 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"bulkOrganizationNacClientsDelete: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationNacClientsBulkEdit(self, organizationId: str, clientIds: list, **kwargs):
+ """
+ **Bulk Update of existing clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-edit
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of clients ids to apply the bulk edit operation on.
+ - description (string): User provided description to be applied on the list of clients provided
+ - groups (object): Client group information to be applied on the list of clients provided
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "bulkEdit"],
+ "operation": "createOrganizationNacClientsBulkEdit",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkEdit"
+
+ body_params = [
+ "clientIds",
+ "description",
+ "groups",
+ ]
+ 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"createOrganizationNacClientsBulkEdit: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationNacClientsBulkUpload(
+ self, organizationId: str, contents: str, updateClients: bool, createClientGroups: bool, **kwargs
+ ):
+ """
+ **Bulk upload of clients, client groups and their associations for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-bulk-upload
+
+ - organizationId (string): Organization ID
+ - contents (string): CSV file content in Base64 encoded string format
+ - updateClients (boolean): The updateClients indicates whether existing clients must be updated with new data from the CSV
+ - createClientGroups (boolean): The createClientGroups indicates whether new client groups must be created or not
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "bulkUpload"],
+ "operation": "createOrganizationNacClientsBulkUpload",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/bulkUpload"
+
+ body_params = [
+ "contents",
+ "updateClients",
+ "createClientGroups",
+ ]
+ 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"createOrganizationNacClientsBulkUpload: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get all known client groups for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients-groups
+
+ - 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
+ - sortOrder (string): Query parameter for specifying the direction of sorting to use for the given sortKey.
+ - sortKey (string): Query parameter to sort the client groups by the value of the specified key.
+ - 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.
+ - search (string): Optional parameter to fuzzy search on client groups.
+ - groupIds (array): List of ids for specific group retrieval
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ASC", "DESC"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = ["name"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "getOrganizationNacClientsGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups"
+
+ query_params = [
+ "sortOrder",
+ "sortKey",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "groupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "groupIds",
+ ]
+ 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"getOrganizationNacClientsGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNacClientsGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (array): List of client members associated with the group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "createOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ 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"createOrganizationNacClientsGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationNacClientsGroup(self, organizationId: str, groupId: str, **kwargs):
+ """
+ **Update an existing client group for the organization with bulk member operations**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The name of the group for access control model
+ - description (string): User provided description of the group
+ - members (object): Bulk member operations with addList/removeList arrays
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "updateOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ body_params = [
+ "name",
+ "description",
+ "members",
+ ]
+ 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"updateOrganizationNacClientsGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationNacClientsGroup(self, organizationId: str, groupId: str):
+ """
+ **Delete an existing client group for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-nac-clients-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "groups"],
+ "operation": "deleteOrganizationNacClientsGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/groups/{groupId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationNacClientsOverview(self, organizationId: str):
+ """
+ **Get overview data for all known clients for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-clients-overview
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "clients", "overview"],
+ "operation": "getOrganizationNacClientsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/overview"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationNacClient(self, organizationId: str, clientId: str, mac: str, **kwargs):
+ """
+ **Update an existing client for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-nac-client
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - mac (string): The MAC address of the client
+ - type (string): Type describes if the network client belongs to an individual user or corporate
+ - owner (string): The username of the owner of the client
+ - description (string): User provided description for the client
+ - uuid (string): Universally unique identifier of the client
+ - userDetails (array): List of users of this network client
+ - oui (object): Organizationally unique identifier assigned to a vendor of the client
+ - groups (object): Client group membership changes
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["BYOD", "corporate"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["nac", "configure", "clients"],
+ "operation": "updateOrganizationNacClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/organizations/{organizationId}/nac/clients/{clientId}"
+
+ body_params = [
+ "type",
+ "owner",
+ "mac",
+ "description",
+ "uuid",
+ "userDetails",
+ "oui",
+ "groups",
+ ]
+ 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"updateOrganizationNacClient: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationNacDictionaries(self, organizationId: str):
+ """
+ **Get all NAC dictionaries**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionaries
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries"],
+ "operation": "getOrganizationNacDictionaries",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationNacDictionaryAttributes(self, organizationId: str, dictionaryId: str, **kwargs):
+ """
+ **Get all attributes by dictionary ID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionary-attributes
+
+ - organizationId (string): Organization ID
+ - dictionaryId (string): Dictionary ID
+ - networkIds (array): An optional list of network IDs to filter the 'enum' field. Only enum values applicable to the specified networks will be returned.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries", "attributes"],
+ "operation": "getOrganizationNacDictionaryAttributes",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ dictionaryId = urllib.parse.quote(str(dictionaryId), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries/{dictionaryId}/attributes"
+
+ 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"getOrganizationNacDictionaryAttributes: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacDictionaryAttributeValues(
+ self, organizationId: str, dictionaryId: str, attributeName: str, **kwargs
+ ):
+ """
+ **Search allowed values for a dictionary attribute**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-dictionary-attribute-values
+
+ - organizationId (string): Organization ID
+ - dictionaryId (string): Dictionary ID
+ - attributeName (string): Attribute name
+ - search (string): Optional search string for contains-match filtering of allowed values
+ - networkIds (array): An optional list of network IDs to filter the allowed values.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "dictionaries", "attributes", "values"],
+ "operation": "getOrganizationNacDictionaryAttributeValues",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ dictionaryId = urllib.parse.quote(str(dictionaryId), safe="")
+ attributeName = urllib.parse.quote(str(attributeName), safe="")
+ resource = f"/organizations/{organizationId}/nac/dictionaries/{dictionaryId}/attributes/{attributeName}/values"
+
+ query_params = [
+ "search",
+ "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"getOrganizationNacDictionaryAttributeValues: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacLicenseUsage(self, organizationId: str, startDate: str, **kwargs):
+ """
+ **Returns license usage data for a specific organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-license-usage
+
+ - organizationId (string): Organization ID
+ - startDate (string): Start date for the usage data in UTC timezone
+ - endDate (string): End date for the usage data in UTC timezone
+ - networkIds (array): List of locale and node group ids
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "license", "usage"],
+ "operation": "getOrganizationNacLicenseUsage",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/license/usage"
+
+ query_params = [
+ "startDate",
+ "endDate",
+ "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"getOrganizationNacLicenseUsage: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationNacSessionsHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the NAC Sessions for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-sessions-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 hour.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["nac", "configure", "sessions", "history"],
+ "operation": "getOrganizationNacSessionsHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/nac/sessions/history"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationNacSessionsHistory: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationNacSessionDetails(self, organizationId: str, sessionId: str):
+ """
+ **Return the details of selected NAC Sessions**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-nac-session-details
+
+ - organizationId (string): Organization ID
+ - sessionId (string): Session ID
+ """
+
+ metadata = {
+ "tags": ["nac", "configure", "sessions", "details"],
+ "operation": "getOrganizationNacSessionDetails",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ sessionId = urllib.parse.quote(str(sessionId), safe="")
+ resource = f"/organizations/{organizationId}/nac/sessions/{sessionId}/details"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/api/networks.py b/meraki/api/networks.py
index eb8ae8e..9e7c4c4 100644
--- a/meraki/api/networks.py
+++ b/meraki/api/networks.py
@@ -886,6 +886,37 @@ def removeNetworkDevices(self, networkId: str, serial: str, **kwargs):
return self._session.post(metadata, resource, payload)
+ def updateNetworkDevicesSyslogServers(self, networkId: str, servers: list, **kwargs):
+ """
+ **Updates the syslog servers configuration for a network.**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-devices-syslog-servers
+
+ - networkId (string): Network ID
+ - servers (array): A list of the syslog servers for this network; suggested maximum array size is 10
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["networks", "configure", "devices", "syslog", "servers"],
+ "operation": "updateNetworkDevicesSyslogServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/devices/syslog/servers"
+
+ body_params = [
+ "servers",
+ ]
+ 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"updateNetworkDevicesSyslogServers: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkEvents(self, networkId: str, total_pages=1, direction="prev", event_log_end_time=None, **kwargs):
"""
**List the events for the network**
@@ -1455,6 +1486,7 @@ def createNetworkFloorPlan(self, networkId: str, name: str, imageContents: str,
- topLeftCorner (object): The longitude and latitude of the top left corner of your floor plan.
- topRightCorner (object): The longitude and latitude of the top right corner of your floor plan.
- floorNumber (number): The floor number of the floors within the building
+ - buildingId (string): The ID of the building that this floor belongs to.
"""
kwargs.update(locals())
@@ -1474,6 +1506,7 @@ def createNetworkFloorPlan(self, networkId: str, name: str, imageContents: str,
"topLeftCorner",
"topRightCorner",
"floorNumber",
+ "buildingId",
"imageContents",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1670,6 +1703,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
- topLeftCorner (object): The longitude and latitude of the top left corner of your floor plan.
- topRightCorner (object): The longitude and latitude of the top right corner of your floor plan.
- floorNumber (number): The floor number of the floors within the building
+ - buildingId (string): The ID of the building that this floor belongs to.
- imageContents (string): The file contents (a base 64 encoded string) of your new image. Supported formats are PNG, GIF, and JPG. Note that all images are saved as PNG files, regardless of the format they are uploaded in. If you upload a new image, and you do NOT specify any new geolocation fields ('center, 'topLeftCorner', etc), the floor plan will be recentered with no rotation in order to maintain the aspect ratio of your new image.
"""
@@ -1691,6 +1725,7 @@ def updateNetworkFloorPlan(self, networkId: str, floorPlanId: str, **kwargs):
"topLeftCorner",
"topRightCorner",
"floorNumber",
+ "buildingId",
"imageContents",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1918,6 +1953,106 @@ def getNetworkHealthAlerts(self, networkId: str):
return self._session.get(metadata, resource)
+ def getNetworkLocationScanning(self, networkId: str):
+ """
+ **Return scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-location-scanning
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning"],
+ "operation": "getNetworkLocationScanning",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkLocationScanning(self, networkId: str, **kwargs):
+ """
+ **Change scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning
+
+ - networkId (string): Network ID
+ - analyticsEnabled (boolean): Collect location and scanning analytics
+ - scanningApiEnabled (boolean): Enable push API for scanning events, analytics must be enabled
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning"],
+ "operation": "updateNetworkLocationScanning",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning"
+
+ body_params = [
+ "analyticsEnabled",
+ "scanningApiEnabled",
+ ]
+ 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"updateNetworkLocationScanning: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getNetworkLocationScanningHttpServers(self, networkId: str):
+ """
+ **Return list of scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-location-scanning-http-servers
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning", "httpServers"],
+ "operation": "getNetworkLocationScanningHttpServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning/httpServers"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkLocationScanningHttpServers(self, networkId: str, endpoints: list, **kwargs):
+ """
+ **Set the list of scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-location-scanning-http-servers
+
+ - networkId (string): Network ID
+ - endpoints (array): A set of http server configurations
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["networks", "configure", "locationScanning", "httpServers"],
+ "operation": "updateNetworkLocationScanningHttpServers",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/locationScanning/httpServers"
+
+ body_params = [
+ "endpoints",
+ ]
+ 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"updateNetworkLocationScanningHttpServers: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkMerakiAuthUsers(self, networkId: str):
"""
**List the authorized users configured under Meraki Authentication for a network (splash guest or RADIUS users for a wireless network, or client VPN users for a MX network)**
@@ -2606,6 +2741,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
- remoteStatusPageEnabled (boolean): Enables / disables access to the device status page (http://[device's LAN IP]). Optional. Can only be set if localStatusPageEnabled is set to true
- localStatusPage (object): A hash of Local Status page(s)' authentication options applied to the Network.
- securePort (object): A hash of SecureConnect options applied to the Network.
+ - fips (object): A hash of FIPS options applied to the Network
- namedVlans (object): A hash of Named VLANs options applied to the Network.
"""
@@ -2623,6 +2759,7 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
"remoteStatusPageEnabled",
"localStatusPage",
"securePort",
+ "fips",
"namedVlans",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -2635,6 +2772,93 @@ def updateNetworkSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def createNetworkSitesBuilding(self, networkId: str, name: str, **kwargs):
+ """
+ **Create a new building**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-sites-building
+
+ - networkId (string): Network ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "createNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ 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"createNetworkSitesBuilding: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteNetworkSitesBuilding(self, networkId: str, buildingId: str):
+ """
+ **Delete a building**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ """
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "deleteNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ buildingId = urllib.parse.quote(str(buildingId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateNetworkSitesBuilding(self, networkId: str, buildingId: str, **kwargs):
+ """
+ **Update a building**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-sites-building
+
+ - networkId (string): Network ID
+ - buildingId (string): Building ID
+ - name (string): The name of the building
+ - floors (array): The floors of the building
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["networks", "configure", "sites", "buildings"],
+ "operation": "updateNetworkSitesBuilding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ buildingId = urllib.parse.quote(str(buildingId), safe="")
+ resource = f"/networks/{networkId}/sites/buildings/{buildingId}"
+
+ body_params = [
+ "name",
+ "floors",
+ ]
+ 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"updateNetworkSitesBuilding: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSnmp(self, networkId: str):
"""
**Return the SNMP settings for a network**
@@ -2661,6 +2885,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())
@@ -2682,6 +2908,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}
@@ -2693,6 +2921,47 @@ def updateNetworkSnmp(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkSnmpTraps(self, networkId: str, **kwargs):
+ """
+ **Update the SNMP trap configuration for the specified network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-snmp-traps
+
+ - networkId (string): Network ID
+ - mode (string): SNMP trap protocol version
+ - receiver (object): Stores the port and address
+ - v2 (object): V2 mode
+ - v3 (object): V3 mode
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["disabled", "v1/v2c", "v3"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["networks", "configure", "snmp", "traps"],
+ "operation": "updateNetworkSnmpTraps",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/snmp/traps"
+
+ body_params = [
+ "mode",
+ "receiver",
+ "v2",
+ "v3",
+ ]
+ 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"updateNetworkSnmpTraps: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSplashLoginAttempts(self, networkId: str, **kwargs):
"""
**List the splash login attempts for a network**
@@ -3005,9 +3274,10 @@ def createNetworkVlanProfile(self, networkId: str, name: str, vlanNames: list, v
- vlanNames (array): An array of named VLANs
- vlanGroups (array): An array of VLAN groups
- iname (string): IName of the profile
+ - allowedVlans (string): The VLANs allowed on the VLAN profile. Only applicable to trunk ports. The given range must be inclusive of all named VLANs.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
"tags": ["networks", "configure", "vlanProfiles"],
@@ -3018,6 +3288,7 @@ def createNetworkVlanProfile(self, networkId: str, name: str, vlanNames: list, v
body_params = [
"name",
+ "allowedVlans",
"vlanNames",
"vlanGroups",
"iname",
@@ -3153,9 +3424,10 @@ def updateNetworkVlanProfile(self, networkId: str, iname: str, name: str, vlanNa
- name (string): Name of the profile, string length must be from 1 to 255 characters
- vlanNames (array): An array of named VLANs
- vlanGroups (array): An array of VLAN groups
+ - allowedVlans (string): The VLANs allowed on the VLAN profile. Only applicable to trunk ports. The given range must be inclusive of all named VLANs.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
"tags": ["networks", "configure", "vlanProfiles"],
@@ -3167,6 +3439,7 @@ def updateNetworkVlanProfile(self, networkId: str, iname: str, name: str, vlanNa
body_params = [
"name",
+ "allowedVlans",
"vlanNames",
"vlanGroups",
]
diff --git a/meraki/api/organizations.py b/meraki/api/organizations.py
index ae425f8..61db38e 100644
--- a/meraki/api/organizations.py
+++ b/meraki/api/organizations.py
@@ -1081,6 +1081,52 @@ def deleteOrganizationAlertsProfile(self, organizationId: str, alertConfigId: st
return self._session.delete(metadata, resource)
+ def getOrganizationApiRestProvisioningPipelines(self, organizationId: str, **kwargs):
+ """
+ **List pipeline IDs for the organization, with optional status and timespan filtering**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-rest-provisioning-pipelines
+
+ - organizationId (string): Organization ID
+ - status (string): If provided, filters pipelines by status. If omitted, pipelines of all statuses are returned.
+ - timespan (string): Created-at lookback for matching pipelines. Defaults to -2hours.
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["active", "error", "pending", "success"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+ if "timespan" in kwargs:
+ options = ["-1days", "-2hours", "-30days", "-7days"]
+ assert kwargs["timespan"] in options, (
+ f'''"timespan" cannot be "{kwargs["timespan"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "api", "rest", "provisioning", "pipelines"],
+ "operation": "getOrganizationApiRestProvisioningPipelines",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/api/rest/provisioning/pipelines"
+
+ query_params = [
+ "status",
+ "timespan",
+ ]
+ 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"getOrganizationApiRestProvisioningPipelines: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationApiRestProvisioningPipelinesJobs(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List pipeline jobs, with optional status filtering**
@@ -1367,6 +1413,154 @@ def getOrganizationApiRequestsOverviewResponseCodesByInterval(self, organization
return self._session.get(metadata, resource, params)
+ def getOrganizationApiRequestsResponseCodesHistoryByAdmin(self, organizationId: str, **kwargs):
+ """
+ **Lists API request response codes and their counts aggregated by admin**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-admin
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byAdmin"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByAdmin",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byAdmin"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByAdmin: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryByApplication(self, organizationId: str, **kwargs):
+ """
+ **Lists API request response codes and their counts aggregated by application**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-application
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byApplication"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byApplication"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryByOperation(self, organizationId: str, **kwargs):
+ """
+ **Aggregates API usage data by operationId**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-operation
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "byOperation"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryByOperation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/byOperation"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryByOperation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationApiRequestsResponseCodesHistoryBySourceIp(self, organizationId: str, **kwargs):
+ """
+ **Aggregates API usage by source ip**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-api-requests-response-codes-history-by-source-ip
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "apiRequests", "responseCodes", "history", "bySourceIp"],
+ "operation": "getOrganizationApiRequestsResponseCodesHistoryBySourceIp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/apiRequests/responseCodes/history/bySourceIp"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationApiRequestsResponseCodesHistoryBySourceIp: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationAssuranceAlerts(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return all health alerts for an organization**
@@ -1906,124 +2100,1335 @@ def getOrganizationAssuranceAlert(self, organizationId: str, id: str):
return self._session.get(metadata, resource)
- def getOrganizationBrandingPolicies(self, organizationId: str):
+ def getOrganizationAssuranceClientsConnectedCountHistory(self, organizationId: str, networkId: str, **kwargs):
"""
- **List the branding policies of an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies
+ **Return combined wireless and wired connected client counts over time for a network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-connected-count-history
- organizationId (string): Organization ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "brandingPolicies"],
- "operation": "getOrganizationBrandingPolicies",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies"
-
- return self._session.get(metadata, resource)
-
- def createOrganizationBrandingPolicy(self, organizationId: str, name: str, **kwargs):
- """
- **Add a new branding policy to an organization**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-branding-policy
-
- - organizationId (string): Organization ID
- - name (string): Name of the Dashboard branding policy.
- - enabled (boolean): Boolean indicating whether this policy is enabled.
- - adminSettings (object): Settings for describing which kinds of admins this policy applies to.
- - helpSettings (object): Settings for describing the modifications to various Help page features. Each property in this object accepts one of
- 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show
- the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on
- Dashboard; see the documentation for each property to see the allowed values.
- Each property defaults to 'default or inherit' when not provided.
- - customLogo (object): Properties describing the custom logo attached to the branding policy.
+ - networkId (string): Network ID to query.
+ - 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.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600. The default is 600. Interval is calculated if time params are provided.
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "brandingPolicies"],
- "operation": "createOrganizationBrandingPolicy",
+ "tags": ["organizations", "monitor", "clients", "connectedCountHistory"],
+ "operation": "getOrganizationAssuranceClientsConnectedCountHistory",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies"
+ resource = f"/organizations/{organizationId}/assurance/clients/connectedCountHistory"
- body_params = [
- "name",
- "enabled",
- "adminSettings",
- "helpSettings",
- "customLogo",
+ query_params = [
+ "networkId",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
if self._session._validate_kwargs:
- all_params = [] + body_params
+ 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"createOrganizationBrandingPolicy: ignoring unrecognized kwargs: {invalid}")
-
- return self._session.post(metadata, resource, payload)
-
- def getOrganizationBrandingPoliciesPriorities(self, organizationId: str):
- """
- **Return the branding policy IDs of an organization in priority order**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies-priorities
-
- - organizationId (string): Organization ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
- "operation": "getOrganizationBrandingPoliciesPriorities",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+ self._session._logger.warning(
+ f"getOrganizationAssuranceClientsConnectedCountHistory: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.get(metadata, resource)
+ return self._session.get(metadata, resource, params)
- def updateOrganizationBrandingPoliciesPriorities(self, organizationId: str, **kwargs):
+ def getOrganizationAssuranceClientsEvents(self, organizationId: str, clientId: str, networkId: str, **kwargs):
"""
- **Update the priority ordering of an organization's branding policies.**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-branding-policies-priorities
+ **Given a client, get all alerts and events for a given timespan**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-events
- organizationId (string): Organization ID
- - brandingPolicyIds (array): An ordered list of branding policy IDs that determines the priority order of how to apply the policies
-
+ - clientId (string): ID of client to query
+ - networkId (string): Network ID where client is connected
+ - filter (array): Optional parameter to filter by issue
+ - 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 less than or equal to 14 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
- "operation": "updateOrganizationBrandingPoliciesPriorities",
+ "tags": ["organizations", "configure", "clients", "events"],
+ "operation": "getOrganizationAssuranceClientsEvents",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+ resource = f"/organizations/{organizationId}/assurance/clients/events"
- body_params = [
- "brandingPolicyIds",
+ query_params = [
+ "filter",
+ "clientId",
+ "networkId",
+ "t0",
+ "t1",
+ "timespan",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "filter",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationBrandingPoliciesPriorities: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceClientsEvents: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def getOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId: str):
+ def getOrganizationAssuranceClientsEventsCorrelated(
+ self, organizationId: str, clientId: str, category: str, networkId: str, timestamp: str, **kwargs
+ ):
"""
- **Return a branding policy**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policy
+ **Given a client, category, and timespan, return events that have a close connection to each other.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-events-correlated
- organizationId (string): Organization ID
- - brandingPolicyId (string): Branding policy ID
+ - clientId (string): Client ID
+ - category (string): Category of events
+ - networkId (string): Network used by the client
+ - timestamp (string): Timestamp for the event
+ - lookback (integer): Amount of time in minutes to look back
+ - lookforward (integer): Amount of time in minutes to look forwards
+ """
+
+ kwargs.update(locals())
+
+ if "category" in kwargs:
+ options = ["application", "association", "authentication", "dhcp", "dns"]
+ assert kwargs["category"] in options, (
+ f'''"category" cannot be "{kwargs["category"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "events", "correlated"],
+ "operation": "getOrganizationAssuranceClientsEventsCorrelated",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/events/correlated"
+
+ query_params = [
+ "clientId",
+ "category",
+ "networkId",
+ "timestamp",
+ "lookback",
+ "lookforward",
+ ]
+ 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"getOrganizationAssuranceClientsEventsCorrelated: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceClientsTopologyCurrent(self, organizationId: str, clientId: str, networkId: str, **kwargs):
+ """
+ **Given a client, return current topology**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-topology-current
+
+ - organizationId (string): Organization ID
+ - clientId (string): ID of client to query
+ - networkId (string): Network ID where client is connected
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "topology", "current"],
+ "operation": "getOrganizationAssuranceClientsTopologyCurrent",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/topology/current"
+
+ query_params = [
+ "clientId",
+ "networkId",
+ ]
+ 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"getOrganizationAssuranceClientsTopologyCurrent: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceClientsTopologyNew(self, organizationId: str, clientIds: list, networkId: str, **kwargs):
+ """
+ **Given a client, return current topology**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-clients-topology-new
+
+ - organizationId (string): Organization ID
+ - clientIds (array): List of IDs for client retrieval for a given network. Limited to 1 client for now
+ - networkId (string): Network ID where client is connected
+ - timestamp (string): Timestamp for client topology path
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "clients", "topology", "new"],
+ "operation": "getOrganizationAssuranceClientsTopologyNew",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/clients/topology/new"
+
+ query_params = [
+ "clientIds",
+ "networkId",
+ "timestamp",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "clientIds",
+ ]
+ 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"getOrganizationAssuranceClientsTopologyNew: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ """
+ **Returns counts of online, offline, and recovered devices by product type, along with offline intervals for impacted devices in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-devices-statuses-overview
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - 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 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
+ "operation": "getOrganizationAssuranceDevicesStatusesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/devices/statuses/overview"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceFetchTableQuery(self, organizationId: str, tableName: str, **kwargs):
+ """
+ **Returns the table data for a given timespan**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-fetch-table-query
+
+ - organizationId (string): Organization ID
+ - tableName (string): The table from which we want to get data
+ - t0 (string): The beginning of the timespan for the data.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 365 days, 5 hours, 49 minutes, and 12 seconds. The default is 30 days, 10 hours, 29 minutes, and 6 seconds.
+ - userEmail (string): The user email for whom we want to calculate lookback
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "fetchTableQuery"],
+ "operation": "getOrganizationAssuranceFetchTableQuery",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/fetchTableQuery"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "tableName",
+ "userEmail",
+ ]
+ 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"getOrganizationAssuranceFetchTableQuery: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServer(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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", "networkServices", "serverHealth", "byServer"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServer"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server and by interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-by-interval
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networkServices", "serverHealth", "byServer", "byInterval"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServer/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerType(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-type
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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", "networkServices", "serverHealth", "byServerType"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServerType"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns network server health in organization by server type and by interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-network-services-server-health-by-server-type-by-interval
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results for these networks.
+ - serverTypes (array): Filter results for these server types.
+ - serverIps (array): Filter results for these server IP addresses.
+ - ssidNumbers (array): Filter results for these SSID Numbers.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networkServices", "serverHealth", "byServerType", "byInterval"],
+ "operation": "getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/networkServices/serverHealth/byServerType/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "ssidNumbers",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serverTypes",
+ "serverIps",
+ "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 + 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"getOrganizationAssuranceNetworkServicesServerHealthByServerTypeByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def checkupOrganizationAssuranceOptimization(self, organizationId: str, **kwargs):
+ """
+ **Returns an array of checkup results for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!checkup-organization-assurance-optimization
+
+ - organizationId (string): Organization ID
+ - forceRefresh (boolean): Optional parameter to reassess best practices
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "optimization"],
+ "operation": "checkupOrganizationAssuranceOptimization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/optimization/checkup"
+
+ query_params = [
+ "forceRefresh",
+ ]
+ 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"checkupOrganizationAssuranceOptimization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceOptimizationCheckupByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns an array of checkup results for the networks**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-optimization-checkup-by-network
+
+ - 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 - 20. Default is 7.
+ - 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 parameter to filter checkups by Network Id
+ - forceRefresh (boolean): Optional parameter to reassess best practices
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "optimization", "checkup", "byNetwork"],
+ "operation": "getOrganizationAssuranceOptimizationCheckupByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/optimization/checkup/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "forceRefresh",
+ ]
+ 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"getOrganizationAssuranceOptimizationCheckupByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceProductAnnouncements(self, organizationId: str, **kwargs):
+ """
+ **Gets relevant product announcements for a user**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-product-announcements
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 365 days, 5 hours, 49 minutes, and 12 seconds. The default is 91 days, 7 hours, 27 minutes, and 18 seconds.
+ - onlyRelevant (boolean): Limits product announcements that are considered relevant to this user when true
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "productAnnouncements"],
+ "operation": "getOrganizationAssuranceProductAnnouncements",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/productAnnouncements"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "onlyRelevant",
+ ]
+ 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"getOrganizationAssuranceProductAnnouncements: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceScores(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get network health scores for a list of networks.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-scores
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
+ - 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 2 hours and be less than or equal to 14 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "scores"],
+ "operation": "getOrganizationAssuranceScores",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/scores"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceScores: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceThousandEyesApplications(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Get a list of Thousand Eyes applications with their alerts.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-thousand-eyes-applications
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - clientId (string): Filter results by client.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "thousandEyes", "applications"],
+ "operation": "getOrganizationAssuranceThousandEyesApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/thousandEyes/applications"
+
+ query_params = [
+ "networkIds",
+ "clientId",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationAssuranceThousandEyesApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wired connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network
+
+ - 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
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "wired", "experience", "successfulConnections", "byNetwork"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarizes wired connection successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-by-client
+
+ - 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", "byClient"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byClient"
+
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wired connection successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-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
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "wired", "experience", "successfulConnections", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval(self, organizationId: str, **kwargs):
+ """
+ **Time-series of wired connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wired-experience-successful-connections-by-network-by-interval
+
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "wired", "experience", "successfulConnections", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wired/experience/successfulConnections/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationAssuranceWiredExperienceSuccessfulConnectionsByNetworkByInterval: 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**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-workflows
+
+ - 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 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.
+ - networkIds (array): Optional parameter to filter by network ID
+ - types (array): Optional parameter to filter workflows by types
+ - categories (array): Optional parameter to filter workflows by categories
+ - scopeTypes (array): Optional parameter to filter workflows by scope types
+ - networkTags (array): Optional parameter to filter workflows by network tags
+ - clientTags (array): Optional parameter to filter workflows by client tags
+ - nodeTags (array): Optional parameter to filter workflows by node tags
+ - state (string): Optional parameter to filter workflows by state
+ - tsStart (string): Start time to filter workflows
+ - tsEnd (string): End time to filter workflows
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "workflows"],
+ "operation": "getOrganizationAssuranceWorkflows",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/workflows"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ "networkIds",
+ "types",
+ "categories",
+ "scopeTypes",
+ "networkTags",
+ "clientTags",
+ "nodeTags",
+ "state",
+ "tsStart",
+ "tsEnd",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "types",
+ "categories",
+ "scopeTypes",
+ "networkTags",
+ "clientTags",
+ "nodeTags",
+ ]
+ 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"getOrganizationAssuranceWorkflows: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAuthRadiusServers(self, organizationId: str):
+ """
+ **List the organization-wide RADIUS servers in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-servers
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "getOrganizationAuthRadiusServers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationAuthRadiusServer(self, organizationId: str, address: str, secret: str, **kwargs):
+ """
+ **Add an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - address (string): The IP address or FQDN of the RADIUS server
+ - secret (string): Shared secret of the RADIUS server
+ - name (string): The name of the RADIUS server
+ - modes (array): Available server modes
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "createOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ 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"createOrganizationAuthRadiusServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationAuthRadiusServersAssignments(self, organizationId: str):
+ """
+ **Return list of network and policies that organization-wide RADIUS servers are bing used**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-servers-assignments
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers", "assignments"],
+ "operation": "getOrganizationAuthRadiusServersAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/assignments"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationAuthRadiusServer(self, organizationId: str, serverId: str):
+ """
+ **Return an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "getOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationAuthRadiusServer(self, organizationId: str, serverId: str, **kwargs):
+ """
+ **Update an organization-wide RADIUS server**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ - name (string): The name of the RADIUS server
+ - address (string): The IP address or FQDN of the RADIUS server
+ - modes (array): Available server modes
+ - secret (string): Shared secret of the RADIUS server
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "updateOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ body_params = [
+ "name",
+ "address",
+ "modes",
+ "secret",
+ ]
+ 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"updateOrganizationAuthRadiusServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationAuthRadiusServer(self, organizationId: str, serverId: str):
+ """
+ **Delete an organization-wide RADIUS server from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-auth-radius-server
+
+ - organizationId (string): Organization ID
+ - serverId (string): Server ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "auth", "radius", "servers"],
+ "operation": "deleteOrganizationAuthRadiusServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ serverId = urllib.parse.quote(str(serverId), safe="")
+ resource = f"/organizations/{organizationId}/auth/radius/servers/{serverId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationBrandingPolicies(self, organizationId: str):
+ """
+ **List the branding policies of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies"],
+ "operation": "getOrganizationBrandingPolicies",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationBrandingPolicy(self, organizationId: str, name: str, **kwargs):
+ """
+ **Add a new branding policy to an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-branding-policy
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the Dashboard branding policy.
+ - enabled (boolean): Boolean indicating whether this policy is enabled.
+ - adminSettings (object): Settings for describing which kinds of admins this policy applies to.
+ - helpSettings (object): Settings for describing the modifications to various Help page features. Each property in this object accepts one of
+ 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show
+ the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on
+ Dashboard; see the documentation for each property to see the allowed values.
+ Each property defaults to 'default or inherit' when not provided.
+ - customLogo (object): Properties describing the custom logo attached to the branding policy.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies"],
+ "operation": "createOrganizationBrandingPolicy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies"
+
+ body_params = [
+ "name",
+ "enabled",
+ "adminSettings",
+ "helpSettings",
+ "customLogo",
+ ]
+ 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"createOrganizationBrandingPolicy: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationBrandingPoliciesPriorities(self, organizationId: str):
+ """
+ **Return the branding policy IDs of an organization in priority order**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policies-priorities
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
+ "operation": "getOrganizationBrandingPoliciesPriorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationBrandingPoliciesPriorities(self, organizationId: str, **kwargs):
+ """
+ **Update the priority ordering of an organization's branding policies.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-branding-policies-priorities
+
+ - organizationId (string): Organization ID
+ - brandingPolicyIds (array): An ordered list of branding policy IDs that determines the priority order of how to apply the policies
+
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "brandingPolicies", "priorities"],
+ "operation": "updateOrganizationBrandingPoliciesPriorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/brandingPolicies/priorities"
+
+ body_params = [
+ "brandingPolicyIds",
+ ]
+ 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"updateOrganizationBrandingPoliciesPriorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId: str):
+ """
+ **Return a branding policy**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-branding-policy
+
+ - organizationId (string): Organization ID
+ - brandingPolicyId (string): Branding policy ID
"""
metadata = {
@@ -2100,6 +3505,191 @@ def deleteOrganizationBrandingPolicy(self, organizationId: str, brandingPolicyId
return self._session.delete(metadata, resource)
+ def getOrganizationCertificates(self, organizationId: str, **kwargs):
+ """
+ **Gets all or specific certificates for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificates
+
+ - organizationId (string): Organization ID
+ - certificateIds (array): List of ids for specific certificate retrieval
+ - certManagedBy (array): List of cert managed by types
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "getOrganizationCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates"
+
+ query_params = [
+ "certificateIds",
+ "certManagedBy",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateIds",
+ "certManagedBy",
+ ]
+ 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"getOrganizationCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def importOrganizationCertificates(self, organizationId: str, managedBy: str, contents: str, description: str, **kwargs):
+ """
+ **Import certificate for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!import-organization-certificates
+
+ - organizationId (string): Organization ID
+ - managedBy (string): Certificate managed by type [system_manager, mr, encrypted_syslog]
+ - contents (string): Certificate content in valid PEM format
+ - description (string): Certificate description
+ """
+
+ kwargs = locals()
+
+ if "managedBy" in kwargs:
+ options = ["encrypted_syslog", "mr", "system_manager"]
+ assert kwargs["managedBy"] in options, (
+ f'''"managedBy" cannot be "{kwargs["managedBy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "importOrganizationCertificates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/import"
+
+ body_params = [
+ "managedBy",
+ "contents",
+ "description",
+ ]
+ 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"importOrganizationCertificates: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationCertificatesMerakiAuthContents(self, organizationId: str):
+ """
+ **Download the public RADIUS certificate.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificates-meraki-auth-contents
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "monitor", "certificates", "merakiAuth", "contents"],
+ "operation": "getOrganizationCertificatesMerakiAuthContents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/merakiAuth/contents"
+
+ return self._session.get(metadata, resource)
+
+ def deleteOrganizationCertificate(self, organizationId: str, certificateId: str):
+ """
+ **Delete a certificate for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "deleteOrganizationCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationCertificate(self, organizationId: str, certificateId: str, **kwargs):
+ """
+ **Update a certificate's description for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-certificate
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - description (string): Description of a certificate that already exist in your org
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates"],
+ "operation": "updateOrganizationCertificate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}"
+
+ body_params = [
+ "description",
+ ]
+ 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"updateOrganizationCertificate: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationCertificateContents(self, organizationId: str, certificateId: str, **kwargs):
+ """
+ **Download the trusted certificate by certificate id.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-certificate-contents
+
+ - organizationId (string): Organization ID
+ - certificateId (string): Certificate ID
+ - chainId (string): chainId that represent which certificate chain is being requested
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "certificates", "contents"],
+ "operation": "getOrganizationCertificateContents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ certificateId = urllib.parse.quote(str(certificateId), safe="")
+ resource = f"/organizations/{organizationId}/certificates/{certificateId}/contents"
+
+ query_params = [
+ "chainId",
+ ]
+ 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"getOrganizationCertificateContents: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def claimIntoOrganization(self, organizationId: str, **kwargs):
"""
**Claim a list of devices, licenses, and/or orders into an organization inventory**
@@ -2143,6 +3733,7 @@ def getOrganizationClientsBandwidthUsageHistory(self, organizationId: str, **kwa
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
- t0 (string): The beginning of the timespan for the data.
@@ -2162,6 +3753,7 @@ def getOrganizationClientsBandwidthUsageHistory(self, organizationId: str, **kwa
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"ssidName",
"usageUplink",
"t0",
@@ -2285,6 +3877,23 @@ def cloneOrganization(self, organizationId: str, name: str, **kwargs):
return self._session.post(metadata, resource, payload)
+ def getOrganizationCloudConnectivityRequirements(self, organizationId: str):
+ """
+ **List of source/destination traffic rules**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-cloud-connectivity-requirements
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "monitor", "cloud", "connectivity", "requirements"],
+ "operation": "getOrganizationCloudConnectivityRequirements",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/cloud/connectivity/requirements"
+
+ return self._session.get(metadata, resource)
+
def getOrganizationConfigTemplates(self, organizationId: str):
"""
**List the configuration templates for this organization**
@@ -2630,10 +4239,26 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
- productTypes (array): Optional parameter to filter device availabilities history by device product types
- networkIds (array): Optional parameter to filter device availabilities history by network IDs
- statuses (array): Optional parameter to filter device availabilities history by device statuses
+ - categories (array): Optional parameter to filter device availabilities history by categories of status, reboot, or upgrade
+ - networkTags (array): Optional parameter to filter device availabilities history by network tags. The filtering is case-sensitive. If tags are included, 'networkTagsFilterType' should also be included (see below).
+ - networkTagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return networks which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
+ - deviceTags (array): Optional parameter to filter device availabilities history by device tags. The filtering is case-sensitive. If tags are included, 'deviceTagsFilterType' should also be included (see below).
+ - deviceTagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
"""
kwargs.update(locals())
+ if "networkTagsFilterType" in kwargs:
+ options = ["withAllTags", "withAnyTags"]
+ assert kwargs["networkTagsFilterType"] in options, (
+ f'''"networkTagsFilterType" cannot be "{kwargs["networkTagsFilterType"]}", & must be set to one of: {options}'''
+ )
+ if "deviceTagsFilterType" in kwargs:
+ options = ["withAllTags", "withAnyTags"]
+ assert kwargs["deviceTagsFilterType"] in options, (
+ f'''"deviceTagsFilterType" cannot be "{kwargs["deviceTagsFilterType"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
"tags": ["organizations", "monitor", "devices", "availabilities", "changeHistory"],
"operation": "getOrganizationDevicesAvailabilitiesChangeHistory",
@@ -2648,18 +4273,142 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
"t0",
"t1",
"timespan",
- "serials",
- "productTypes",
- "networkIds",
- "statuses",
+ "serials",
+ "productTypes",
+ "networkIds",
+ "statuses",
+ "categories",
+ "networkTags",
+ "networkTagsFilterType",
+ "deviceTags",
+ "deviceTagsFilterType",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "productTypes",
+ "networkIds",
+ "statuses",
+ "categories",
+ "networkTags",
+ "deviceTags",
+ ]
+ 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"getOrganizationDevicesAvailabilitiesChangeHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesBootsHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns the history of device boots in reverse chronological order (most recent first)**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-boots-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 730 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 730 days.
+ - serials (array): Optional parameter to filter device by device serial numbers. This filter uses multiple exact matches.
+ - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - mostRecentPerDevice (boolean): If true, only the most recent boot for each device is returned.
+ - 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'descending'.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "boots", "history"],
+ "operation": "getOrganizationDevicesBootsHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/boots/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "serials",
+ "productTypes",
+ "mostRecentPerDevice",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "serials",
+ "productTypes",
+ ]
+ 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"getOrganizationDevicesBootsHistory: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesBootsOverviewByDevice(self, organizationId: str, **kwargs):
+ """
+ **Summarizes device reboots across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-boots-overview-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "boots", "overview", "byDevice"],
+ "operation": "getOrganizationDevicesBootsOverviewByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/boots/overview/byDevice"
+
+ query_params = [
+ "networkIds",
+ "productTypes",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "serials",
- "productTypes",
"networkIds",
- "statuses",
+ "productTypes",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -2671,10 +4420,10 @@ def getOrganizationDevicesAvailabilitiesChangeHistory(
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"getOrganizationDevicesAvailabilitiesChangeHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationDevicesBootsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
def getOrganizationDevicesCellularDataDevices(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
@@ -3274,6 +5023,147 @@ def getOrganizationDevicesCellularUplinksTowersByDevice(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationDevicesCliConfigs(self, organizationId: str, serials: list, total_pages=1, direction="next", **kwargs):
+ """
+ **Retrieve the history of running configurations for IOS-XE devices**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-cli-configs
+
+ - organizationId (string): Organization ID
+ - serials (array): Device serials to include in the response
+ - 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 - 20. Default is 20.
+ - 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.
+ - isFavorite (boolean): Whether to return only favorited configs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "cli", "configs"],
+ "operation": "getOrganizationDevicesCliConfigs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "serials",
+ "isFavorite",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationDevicesCliConfigs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesCliConfigsDetails(
+ self, organizationId: str, configId: str, serials: list, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Retrieve the full contents for a given IOS-XE device configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-cli-configs-details
+
+ - organizationId (string): Organization ID
+ - configId (string): Config ID
+ - serials (array): Device serials to use when locating the config record
+ - 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 - 5. Default is 5.
+ - 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", "cli", "configs", "details"],
+ "operation": "getOrganizationDevicesCliConfigsDetails",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs/details"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configId",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationDevicesCliConfigsDetails: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getDeviceConfigRestores(self, organizationId: str, serials: list, **kwargs):
+ """
+ **Return restore status entries for IOS-XE device configurations**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-config-restores
+
+ - organizationId (string): Organization ID
+ - serials (array): Device serial numbers
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "cli", "configs", "restores"],
+ "operation": "getDeviceConfigRestores",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/cli/configs/restores"
+
+ query_params = [
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getDeviceConfigRestores: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def createOrganizationDevicesControllerMigration(self, organizationId: str, serials: list, target: str, **kwargs):
"""
**Migrate devices to another controller or management mode**
@@ -3408,6 +5298,56 @@ def bulkUpdateOrganizationDevicesDetails(self, organizationId: str, serials: lis
return self._session.post(metadata, resource, payload)
+ def getOrganizationDevicesMemoryByDevice(self, organizationId: str, networkIds: list, productTypes: list, **kwargs):
+ """
+ **Summarizes memory status across devices of a given network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-memory-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - productTypes (array): Parameter to filter device availabilities by device product types. This filter uses multiple exact matches.
+ - usageThreshold (number): Threshold of device memory utilization expressed as a percent. Filters out all devices below this value.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "memory", "byDevice"],
+ "operation": "getOrganizationDevicesMemoryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/memory/byDevice"
+
+ query_params = [
+ "networkIds",
+ "productTypes",
+ "usageThreshold",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "productTypes",
+ ]
+ 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"getOrganizationDevicesMemoryByDevice: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationDevicesOverviewByModel(self, organizationId: str, **kwargs):
"""
**Lists the count for each device model**
@@ -3742,6 +5682,65 @@ def stopOrganizationDevicesPacketCaptureCapture(self, organizationId: str, captu
return self._session.post(metadata, resource, payload)
+ def getOrganizationDevicesPacketCaptureOpportunisticByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the Opportunistic Pcap settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-packet-capture-opportunistic-by-network
+
+ - 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
+ - networkIds (array): Optional parameter to filter results by network.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'descending'.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCapture", "opportunistic", "byNetwork"],
+ "operation": "getOrganizationDevicesPacketCaptureOpportunisticByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCapture/opportunistic/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ ]
+ 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"getOrganizationDevicesPacketCaptureOpportunisticByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationDevicesPacketCaptureSchedules(self, organizationId: str, **kwargs):
"""
**List the Packet Capture Schedules**
@@ -3791,36 +5790,69 @@ def getOrganizationDevicesPacketCaptureSchedules(self, organizationId: str, **kw
def createOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, devices: list, **kwargs):
"""
- **Create a schedule for packet capture**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-devices-packet-capture-schedule
+ **Create a schedule for packet capture**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-devices-packet-capture-schedule
+
+ - organizationId (string): Organization ID
+ - devices (array): device details
+ - name (string): Name of the packet capture file
+ - notes (string): Reason for capture
+ - duration (integer): Duration of the capture in seconds
+ - filterExpression (string): Filter expression for the capture
+ - enabled (boolean): Enable or disable the schedule
+ - schedule (object): Schedule details
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCapture", "schedules"],
+ "operation": "createOrganizationDevicesPacketCaptureSchedule",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCapture/schedules"
+
+ body_params = [
+ "devices",
+ "name",
+ "notes",
+ "duration",
+ "filterExpression",
+ "enabled",
+ "schedule",
+ ]
+ 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"createOrganizationDevicesPacketCaptureSchedule: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationDevicesPacketCaptureSchedulesDelete(self, organizationId: str, scheduleIds: list, **kwargs):
+ """
+ **Delete packet capture schedules**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-packet-capture-schedules-delete
- organizationId (string): Organization ID
- - devices (array): device details
- - name (string): Name of the packet capture file
- - notes (string): Reason for capture
- - duration (integer): Duration of the capture in seconds
- - filterExpression (string): Filter expression for the capture
- - enabled (boolean): Enable or disable the schedule
- - schedule (object): Schedule details
+ - scheduleIds (array): Delete the packet capture schedules of the specified schedule ids
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
"tags": ["organizations", "configure", "devices", "packetCapture", "schedules"],
- "operation": "createOrganizationDevicesPacketCaptureSchedule",
+ "operation": "bulkOrganizationDevicesPacketCaptureSchedulesDelete",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/packetCapture/schedules"
+ resource = f"/organizations/{organizationId}/devices/packetCapture/schedules/bulkDelete"
body_params = [
- "devices",
- "name",
- "notes",
- "duration",
- "filterExpression",
- "enabled",
- "schedule",
+ "scheduleIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -3829,7 +5861,7 @@ def createOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, de
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"createOrganizationDevicesPacketCaptureSchedule: ignoring unrecognized kwargs: {invalid}"
+ f"bulkOrganizationDevicesPacketCaptureSchedulesDelete: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
@@ -3935,6 +5967,119 @@ def deleteOrganizationDevicesPacketCaptureSchedule(self, organizationId: str, sc
return self._session.delete(metadata, resource)
+ def tasksOrganizationDevicesPacketCapture(self, organizationId: str, packetId: str, task: str, **kwargs):
+ """
+ **Enqueues a task for a specific packet capture**
+ https://developer.cisco.com/meraki/api-v1/#!tasks-organization-devices-packet-capture
+
+ - organizationId (string): Organization ID
+ - packetId (string): Packet ID
+ - task (string): Type of task to enqueue. It can be one of: ["analysis", "reasoning", "summary", "highlights", "title", "flow"]
+ - networkId (string): Parameter to validate authorization by network access
+ """
+
+ kwargs.update(locals())
+
+ if "task" in kwargs:
+ options = ["analysis", "flow", "highlights", "reasoning", "summary", "title"]
+ assert kwargs["task"] in options, f'''"task" cannot be "{kwargs["task"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCaptures"],
+ "operation": "tasksOrganizationDevicesPacketCapture",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ packetId = urllib.parse.quote(str(packetId), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCaptures/{packetId}/tasks"
+
+ body_params = [
+ "networkId",
+ "task",
+ ]
+ 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"tasksOrganizationDevicesPacketCapture: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationDevicesPacketCaptureTask(self, organizationId: str, packetId: str, id: str, **kwargs):
+ """
+ **Retrieves packet capture analysis result for a specific packet capture task.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-packet-capture-task
+
+ - organizationId (string): Organization ID
+ - packetId (string): Packet ID
+ - id (string): ID
+ - networkId (string): Optional parameter to validate authorization by network access
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "packetCaptures", "tasks"],
+ "operation": "getOrganizationDevicesPacketCaptureTask",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ packetId = urllib.parse.quote(str(packetId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/devices/packetCaptures/{packetId}/tasks/{id}"
+
+ query_params = [
+ "networkId",
+ ]
+ 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"getOrganizationDevicesPacketCaptureTask: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def bulkOrganizationDevicesPlacementPositionsUpdate(self, organizationId: str, serials: list, **kwargs):
+ """
+ **Bulk update the attributes related to positions for provided devices**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-devices-placement-positions-update
+
+ - organizationId (string): Organization ID
+ - serials (array): List of device serials on a floor plan to update
+ - height (object): Height of the devices on the floor plan
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "placement", "positions"],
+ "operation": "bulkOrganizationDevicesPlacementPositionsUpdate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/placement/positions/bulkUpdate"
+
+ body_params = [
+ "serials",
+ "height",
+ ]
+ 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"bulkOrganizationDevicesPlacementPositionsUpdate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getOrganizationDevicesPowerModulesStatusesByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
@@ -4076,6 +6221,128 @@ def getOrganizationDevicesProvisioningStatuses(self, organizationId: str, total_
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns details about software updates for networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-software-updates-overviews-by-network
+
+ - 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 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.
+ - sortOrder (string): Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.
+ - sortKey (string): Specify key to order the list of networks.
+ - configSource (string): Limit the list of networks to those that contain devices with the specified config source
+ - networkIds (array): Limit the list of networks to those that match the provided network IDs
+ - networkGroupIds (array): Limit the list of networks to those that belong to one of the provided network group IDs.
+ - productTypes (array): Limit the list of product types included for each network
+ - networkName (string): Limit the list of networks to those whose name contains the given search string.
+ - versionIds (array): Limit the list of networks to those that are currently on one of the provided version IDs.
+ - firmwareStatus (string): Limit the list of networks to those whose current firmware version has the specified end-of-support status.
+ - firmwareType (string): Limit the list of networks to those whose current firmware version has the specified release type.
+ - upgradeDependencyIds (array): Limit the list of networks to those that belong to one of the provided upgrade dependencies.
+ - upgradeAvailable (boolean): Limit the list of networks by upgrade availability.
+ - templateRole (string): Limit the list of networks by config template role: non-template only, templates only, or templates and bound networks.
+ """
+
+ kwargs.update(locals())
+
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "sortKey" in kwargs:
+ options = [
+ "availability",
+ "currentVersion",
+ "firmwareStatus",
+ "firmwareType",
+ "lastUpgrade",
+ "networkGroup",
+ "networkName",
+ "networkType",
+ "scheduledTime",
+ "scheduledUpgradeVersion",
+ "upgradeDependency",
+ ]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+ if "configSource" in kwargs:
+ options = ["cloud", "local"]
+ assert kwargs["configSource"] in options, (
+ f'''"configSource" cannot be "{kwargs["configSource"]}", & must be set to one of: {options}'''
+ )
+ if "firmwareStatus" in kwargs:
+ options = ["critical", "good", "warning"]
+ assert kwargs["firmwareStatus"] in options, (
+ f'''"firmwareStatus" cannot be "{kwargs["firmwareStatus"]}", & must be set to one of: {options}'''
+ )
+ if "firmwareType" in kwargs:
+ options = ["beta", "candidate", "stable"]
+ assert kwargs["firmwareType"] in options, (
+ f'''"firmwareType" cannot be "{kwargs["firmwareType"]}", & must be set to one of: {options}'''
+ )
+ if "templateRole" in kwargs:
+ options = ["bound-templates", "non-template", "templates"]
+ assert kwargs["templateRole"] in options, (
+ f'''"templateRole" cannot be "{kwargs["templateRole"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "software", "updates", "overviews", "byNetwork"],
+ "operation": "getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/software/updates/overviews/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortOrder",
+ "sortKey",
+ "configSource",
+ "networkIds",
+ "networkGroupIds",
+ "productTypes",
+ "networkName",
+ "versionIds",
+ "firmwareStatus",
+ "firmwareType",
+ "upgradeDependencyIds",
+ "upgradeAvailable",
+ "templateRole",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "productTypes",
+ "versionIds",
+ "upgradeDependencyIds",
+ ]
+ 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"getOrganizationDevicesSoftwareUpdatesOverviewsByNetwork: 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**
@@ -4094,6 +6361,7 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
- models (array): Optional parameter to filter devices by models.
- tags (array): An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below).
- tagsFilterType (string): An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.
+ - configurationUpdatedAfter (string): Optional parameter to filter results by whether or not the device's configuration has been updated after the given timestamp
"""
kwargs.update(locals())
@@ -4105,33 +6373,125 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
)
metadata = {
- "tags": ["organizations", "monitor", "devices", "statuses"],
- "operation": "getOrganizationDevicesStatuses",
+ "tags": ["organizations", "monitor", "devices", "statuses"],
+ "operation": "getOrganizationDevicesStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "statuses",
+ "productTypes",
+ "models",
+ "tags",
+ "tagsFilterType",
+ "configurationUpdatedAfter",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "statuses",
+ "productTypes",
+ "models",
+ "tags",
+ ]
+ 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"getOrganizationDevicesStatuses: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ """
+ **Return an overview of current device statuses**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-statuses-overview
+
+ - organizationId (string): Organization ID
+ - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - networkIds (array): An optional parameter to filter device statuses by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
+ "operation": "getOrganizationDevicesStatusesOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/devices/statuses/overview"
+
+ query_params = [
+ "productTypes",
+ "networkIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "productTypes",
+ "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"getOrganizationDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationDevicesSyslogServersByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns syslog servers configured for the networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-syslog-servers-by-network
+
+ - 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 10.
+ - 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): IDs of the networks for which to fetch syslog servers; suggested maximum array size is 100
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "devices", "syslog", "servers", "byNetwork"],
+ "operation": "getOrganizationDevicesSyslogServersByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/statuses"
+ resource = f"/organizations/{organizationId}/devices/syslog/servers/byNetwork"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
- "serials",
- "statuses",
- "productTypes",
- "models",
- "tags",
- "tagsFilterType",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "serials",
- "statuses",
- "productTypes",
- "models",
- "tags",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4142,37 +6502,46 @@ def getOrganizationDevicesStatuses(self, organizationId: str, total_pages=1, dir
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"getOrganizationDevicesStatuses: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationDevicesSyslogServersByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
+ def getOrganizationDevicesSyslogServersRolesByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Return an overview of current device statuses**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-statuses-overview
+ **Returns roles that can be assigned to a syslog server for a given network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-devices-syslog-servers-roles-by-network
- organizationId (string): Organization ID
- - productTypes (array): An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
- - networkIds (array): An optional parameter to filter device statuses by network.
+ - 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 10.
+ - 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): IDs of the networks for which to fetch valid syslog server roles; suggested maximum array size is 100
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "monitor", "devices", "statuses", "overview"],
- "operation": "getOrganizationDevicesStatusesOverview",
+ "tags": ["organizations", "configure", "devices", "syslog", "servers", "roles", "byNetwork"],
+ "operation": "getOrganizationDevicesSyslogServersRolesByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/devices/statuses/overview"
+ resource = f"/organizations/{organizationId}/devices/syslog/servers/roles/byNetwork"
query_params = [
- "productTypes",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
"networkIds",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "productTypes",
"networkIds",
]
for k, v in kwargs.items():
@@ -4185,10 +6554,10 @@ def getOrganizationDevicesStatusesOverview(self, organizationId: str, **kwargs):
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"getOrganizationDevicesStatusesOverview: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationDevicesSyslogServersRolesByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
def getOrganizationDevicesSystemMemoryUsageHistoryByInterval(
self, organizationId: str, total_pages=1, direction="next", **kwargs
@@ -4408,22 +6777,285 @@ def createOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, shortN
https://developer.cisco.com/meraki/api-v1/#!create-organization-early-access-features-opt-in
- organizationId (string): Organization ID
- - shortName (string): Short name of the early access feature
- - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ - shortName (string): Short name of the early access feature
+ - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "createOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns"
+
+ body_params = [
+ "shortName",
+ "limitScopeToNetworks",
+ ]
+ 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"createOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ """
+ **Show an early access feature opt-in for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "getOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str, **kwargs):
+ """
+ **Update an early access feature opt-in for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "updateOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ body_params = [
+ "limitScopeToNetworks",
+ ]
+ 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"updateOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ """
+ **Delete an early access feature opt-in**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-early-access-features-opt-in
+
+ - organizationId (string): Organization ID
+ - optInId (string): Opt in ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
+ "operation": "deleteOrganizationEarlyAccessFeaturesOptIn",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ optInId = urllib.parse.quote(str(optInId), safe="")
+ resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationExtensionsSdwanmanagerInterconnect(
+ self, organizationId: str, interconnectId: str, name: str, status: str, **kwargs
+ ):
+ """
+ **Update name and status of an Interconnect**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-sdwanmanager-interconnect
+
+ - organizationId (string): Organization ID
+ - interconnectId (string): Interconnect ID
+ - name (string): Interconnect name
+ - status (string): Interconnect status
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "sdwanmanager", "interconnects"],
+ "operation": "updateOrganizationExtensionsSdwanmanagerInterconnect",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ interconnectId = urllib.parse.quote(str(interconnectId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/sdwanmanager/interconnects/{interconnectId}"
+
+ body_params = [
+ "name",
+ "status",
+ ]
+ 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"updateOrganizationExtensionsSdwanmanagerInterconnect: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationExtensionsThousandEyesNetworks(self, organizationId: str):
+ """
+ **List the ThousandEyes agent configurations under this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-networks
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "getOrganizationExtensionsThousandEyesNetworks",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, enabled: bool, networkId: str, **kwargs):
+ """
+ **Add a ThousandEyes agent for this network**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
+ - networkId (string): Network that will have the ThousandEyes agent installed on.
+ - tests (array): An array of tests to be created
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "createOrganizationExtensionsThousandEyesNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks"
+
+ body_params = [
+ "enabled",
+ "networkId",
+ "tests",
+ ]
+ 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"createOrganizationExtensionsThousandEyesNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationExtensionsThousandEyesNetworksSupported(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all the networks eligible for ThousandEyes agent activation under this organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-networks-supported
+
+ - 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 100.
+ - 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.
+ - agentInstalled (boolean): Set to true to get only networks with installed ThousandEyes agent; set to false to get networks without agents.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks", "supported"],
+ "operation": "getOrganizationExtensionsThousandEyesNetworksSupported",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/supported"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "agentInstalled",
+ ]
+ 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"getOrganizationExtensionsThousandEyesNetworksSupported: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str):
+ """
+ **List the ThousandEyes agent configuration under this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "getOrganizationExtensionsThousandEyesNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str, enabled: bool, **kwargs):
+ """
+ **Update a ThousandEyes agent from this network**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-extensions-thousand-eyes-network
+
+ - organizationId (string): Organization ID
+ - networkId (string): Network ID
+ - enabled (boolean): Whether or not the ThousandEyes agent is enabled for the network.
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "createOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "updateOrganizationExtensionsThousandEyesNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns"
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
body_params = [
- "shortName",
- "limitScopeToNetworks",
+ "enabled",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4432,52 +7064,50 @@ def createOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, shortN
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"createOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ f"updateOrganizationExtensionsThousandEyesNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.put(metadata, resource, payload)
- def getOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
+ def deleteOrganizationExtensionsThousandEyesNetwork(self, organizationId: str, networkId: str):
"""
- **Show an early access feature opt-in for an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-early-access-features-opt-in
+ **Delete a ThousandEyes agent from this network**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-extensions-thousand-eyes-network
- organizationId (string): Organization ID
- - optInId (string): Opt in ID
+ - networkId (string): Network ID
"""
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "getOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "networks"],
+ "operation": "deleteOrganizationExtensionsThousandEyesNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/networks/{networkId}"
- return self._session.get(metadata, resource)
+ return self._session.delete(metadata, resource)
- def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str, **kwargs):
+ def createOrganizationExtensionsThousandEyesTest(self, organizationId: str, **kwargs):
"""
- **Update an early access feature opt-in for an organization**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-early-access-features-opt-in
+ **Create a ThousandEyes test based on a provided test template**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-extensions-thousand-eyes-test
- organizationId (string): Organization ID
- - optInId (string): Opt in ID
- - limitScopeToNetworks (array): A list of network IDs to apply the opt-in to
+ - tests (array): An array of tests to be created
"""
kwargs.update(locals())
metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "updateOrganizationEarlyAccessFeaturesOptIn",
+ "tags": ["organizations", "configure", "extensions", "thousandEyes", "tests"],
+ "operation": "createOrganizationExtensionsThousandEyesTest",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
+ resource = f"/organizations/{organizationId}/extensions/thousandEyes/tests"
body_params = [
- "limitScopeToNetworks",
+ "tests",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4486,29 +7116,10 @@ def updateOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInI
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"updateOrganizationEarlyAccessFeaturesOptIn: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationExtensionsThousandEyesTest: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def deleteOrganizationEarlyAccessFeaturesOptIn(self, organizationId: str, optInId: str):
- """
- **Delete an early access feature opt-in**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-early-access-features-opt-in
-
- - organizationId (string): Organization ID
- - optInId (string): Opt in ID
- """
-
- metadata = {
- "tags": ["organizations", "configure", "earlyAccess", "features", "optIns"],
- "operation": "deleteOrganizationEarlyAccessFeaturesOptIn",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- optInId = urllib.parse.quote(str(optInId), safe="")
- resource = f"/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}"
-
- return self._session.delete(metadata, resource)
+ return self._session.post(metadata, resource, payload)
def getOrganizationFirmwareUpgrades(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
@@ -5567,40 +8178,287 @@ def getOrganizationNetworks(self, organizationId: str, total_pages=1, direction=
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"getOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"getOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes: list, **kwargs):
+ """
+ **Create a network**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-network
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the new network
+ - productTypes (array): The product type(s) of the new network. If more than one type is included, the network will be a combined network.
+ - tags (array): A list of tags to be applied to the network
+ - timeZone (string): The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article.
+ - copyFromNetworkId (string): The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly.
+ - notes (string): Add any notes or additional information about this network here.
+ - details (array): An array of details
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks"],
+ "operation": "createOrganizationNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks"
+
+ body_params = [
+ "name",
+ "productTypes",
+ "tags",
+ "timeZone",
+ "copyFromNetworkId",
+ "notes",
+ "details",
+ ]
+ 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"createOrganizationNetwork: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds: list, **kwargs):
+ """
+ **Combine multiple networks into a single network**
+ https://developer.cisco.com/meraki/api-v1/#!combine-organization-networks
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the combined network
+ - networkIds (array): A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network
+ - enrollmentString (string): A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks"],
+ "operation": "combineOrganizationNetworks",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/combine"
+
+ body_params = [
+ "name",
+ "networkIds",
+ "enrollmentString",
+ ]
+ 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"combineOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNetworksGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the network groups in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-networks-groups
+
+ - 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
+ - groupIds (array): Optional parameter to filter network groups by ID
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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", "networks", "groups"],
+ "operation": "getOrganizationNetworksGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups"
+
+ query_params = [
+ "groupIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "groupIds",
+ ]
+ 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"getOrganizationNetworksGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationNetworksGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a network group**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the network group
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "createOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups"
+
+ body_params = [
+ "name",
+ ]
+ 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"createOrganizationNetworksGroup: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationNetworksGroupsOverviewByGroup(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the client and status overview information for the network groups in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-networks-groups-overview-by-group
+
+ - 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
+ - sortBy (string): Field by which to sort the results
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000.
+ - 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())
+
+ if "sortBy" in kwargs:
+ options = ["status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "monitor", "networks", "groups", "overview", "byGroup"],
+ "operation": "getOrganizationNetworksGroupsOverviewByGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/overview/byGroup"
+
+ query_params = [
+ "sortBy",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationNetworksGroupsOverviewByGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationNetworksGroup(self, organizationId: str, groupId: str, name: str, **kwargs):
+ """
+ **Update a network group**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-networks-group
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - name (string): The new name of the network group
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "updateOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ body_params = [
+ "name",
+ ]
+ 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"updateOrganizationNetworksGroup: ignoring unrecognized kwargs: {invalid}")
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.put(metadata, resource, payload)
- def createOrganizationNetwork(self, organizationId: str, name: str, productTypes: list, **kwargs):
+ def deleteOrganizationNetworksGroup(self, organizationId: str, groupId: str):
"""
- **Create a network**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-network
+ **Delete a network group**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-networks-group
- organizationId (string): Organization ID
- - name (string): The name of the new network
- - productTypes (array): The product type(s) of the new network. If more than one type is included, the network will be a combined network.
- - tags (array): A list of tags to be applied to the network
- - timeZone (string): The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article.
- - copyFromNetworkId (string): The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly.
- - notes (string): Add any notes or additional information about this network here.
+ - groupId (string): Group ID
"""
- kwargs.update(locals())
+ metadata = {
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "deleteOrganizationNetworksGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}"
+
+ return self._session.delete(metadata, resource)
+
+ def bulkOrganizationNetworksGroupAssign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
+ """
+ **Add networks to a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-assign
+
+ - organizationId (string): Organization ID
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to add to the network group
+ """
+
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "networks"],
- "operation": "createOrganizationNetwork",
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "bulkOrganizationNetworksGroupAssign",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/networks"
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkAssign"
body_params = [
- "name",
- "productTypes",
- "tags",
- "timeZone",
- "copyFromNetworkId",
- "notes",
+ "networkIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -5608,34 +8466,32 @@ def createOrganizationNetwork(self, organizationId: str, name: str, productTypes
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"createOrganizationNetwork: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"bulkOrganizationNetworksGroupAssign: ignoring unrecognized kwargs: {invalid}")
return self._session.post(metadata, resource, payload)
- def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds: list, **kwargs):
+ def bulkOrganizationNetworksGroupUnassign(self, organizationId: str, groupId: str, networkIds: list, **kwargs):
"""
- **Combine multiple networks into a single network**
- https://developer.cisco.com/meraki/api-v1/#!combine-organization-networks
+ **Remove networks from a network group**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-networks-group-unassign
- organizationId (string): Organization ID
- - name (string): The name of the combined network
- - networkIds (array): A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network
- - enrollmentString (string): A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted.
+ - groupId (string): Group ID
+ - networkIds (array): A list of network IDs to remove from the network group
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["organizations", "configure", "networks"],
- "operation": "combineOrganizationNetworks",
+ "tags": ["organizations", "configure", "networks", "groups"],
+ "operation": "bulkOrganizationNetworksGroupUnassign",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/networks/combine"
+ groupId = urllib.parse.quote(str(groupId), safe="")
+ resource = f"/organizations/{organizationId}/networks/groups/{groupId}/bulkUnassign"
body_params = [
- "name",
"networkIds",
- "enrollmentString",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -5643,7 +8499,9 @@ def combineOrganizationNetworks(self, organizationId: str, name: str, networkIds
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"combineOrganizationNetworks: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"bulkOrganizationNetworksGroupUnassign: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.post(metadata, resource, payload)
@@ -6906,6 +9764,140 @@ def deleteOrganizationPolicyObject(self, organizationId: str, policyObjectId: st
return self._session.delete(metadata, resource)
+ def getOrganizationRoutingVrfs(self, organizationId: str, **kwargs):
+ """
+ **List existing organization-wide VRFs (Virtual Routing and Forwarding).**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-routing-vrfs
+
+ - organizationId (string): Organization ID
+ - vrfIds (array): IDs of the desired VRFs.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "getOrganizationRoutingVrfs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs"
+
+ query_params = [
+ "vrfIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "vrfIds",
+ ]
+ 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"getOrganizationRoutingVrfs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def createOrganizationRoutingVrf(self, organizationId: str, name: str, **kwargs):
+ """
+ **Add an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "createOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ 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"createOrganizationRoutingVrf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationRoutingVrf(self, organizationId: str, vrfId: str, **kwargs):
+ """
+ **Update an organization-wide VRF (Virtual Routing and Forwarding)**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ - name (string): The name of the VRF (Virtual Routing and Forwarding)
+ - description (string): Description of the VRF (Virtual Routing and Forwarding)
+ - routeDistinguisher (string): RD (Route Distinguisher) for the VRF (Virtual Routing and Forwarding)
+ - routeTarget (string): Route target are used to control the import and export of routes between VRFs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "updateOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ vrfId = urllib.parse.quote(str(vrfId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ body_params = [
+ "name",
+ "description",
+ "routeDistinguisher",
+ "routeTarget",
+ ]
+ 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"updateOrganizationRoutingVrf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationRoutingVrf(self, organizationId: str, vrfId: str):
+ """
+ **Delete a VRF (Virtual Routing and Forwarding) from a organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-routing-vrf
+
+ - organizationId (string): Organization ID
+ - vrfId (string): Vrf ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "routing", "vrfs"],
+ "operation": "deleteOrganizationRoutingVrf",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ vrfId = urllib.parse.quote(str(vrfId), safe="")
+ resource = f"/organizations/{organizationId}/routing/vrfs/{vrfId}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationSaml(self, organizationId: str):
"""
**Returns the SAML SSO enabled settings for an organization.**
@@ -7214,6 +10206,72 @@ def deleteOrganizationSamlRole(self, organizationId: str, samlRoleId: str):
return self._session.delete(metadata, resource)
+ def getOrganizationSaseBatch(self, organizationId: str, batchId: str):
+ """
+ **Retrieves a batch summary with aggregated job status counts**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sase-batch
+
+ - organizationId (string): Organization ID
+ - batchId (string): Batch ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "batches"],
+ "operation": "getOrganizationSaseBatch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ batchId = urllib.parse.quote(str(batchId), safe="")
+ resource = f"/organizations/{organizationId}/sase/batches/{batchId}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSaseBatchJobs(self, organizationId: str, batchId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List jobs within a batch, with optional status filtering**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sase-batch-jobs
+
+ - organizationId (string): Organization ID
+ - batchId (string): Batch 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 10.
+ - 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.
+ - status (string): If provided, filters jobs by status
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["complete", "deferred", "failed", "new", "ready", "running", "scheduled"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "batches", "jobs"],
+ "operation": "getOrganizationSaseBatchJobs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ batchId = urllib.parse.quote(str(batchId), safe="")
+ resource = f"/organizations/{organizationId}/sase/batches/{batchId}/jobs"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "status",
+ ]
+ 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"getOrganizationSaseBatchJobs: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSaseConnectors(self, organizationId: str):
"""
**List SSE Connectors for an organization**
@@ -7552,6 +10610,39 @@ def detachOrganizationSaseSites(self, organizationId: str, **kwargs):
return self._session.delete(metadata, resource)
+ def enrollOrganizationSaseSites(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Access**
+ https://developer.cisco.com/meraki/api-v1/#!enroll-organization-sase-sites
+
+ - organizationId (string): Organization ID
+ - items (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "sase", "sites"],
+ "operation": "enrollOrganizationSaseSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sase/sites/enroll"
+
+ body_params = [
+ "items",
+ "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"enrollOrganizationSaseSites: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
def updateOrganizationSaseSite(self, organizationId: str, siteId: str, **kwargs):
"""
**Update the configuration for a site**
@@ -7582,9 +10673,59 @@ def updateOrganizationSaseSite(self, organizationId: str, siteId: 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"updateOrganizationSaseSite: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(f"updateOrganizationSaseSite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationSitesBuildings(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the buildings belonging to the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sites-buildings
+
+ - 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 parameter to filter buildings by one or more network IDs
+ - buildingIds (array): Optional parameter to filter buildings by one or more building IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "sites", "buildings"],
+ "operation": "getOrganizationSitesBuildings",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sites/buildings"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "buildingIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "buildingIds",
+ ]
+ 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"getOrganizationSitesBuildings: ignoring unrecognized kwargs: {invalid}")
- return self._session.put(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
def getOrganizationSnmp(self, organizationId: str):
"""
@@ -7657,6 +10798,45 @@ def updateOrganizationSnmp(self, organizationId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getOrganizationSnmpTrapsByNetwork(self, organizationId: str, **kwargs):
+ """
+ **Retrieve the SNMP trap configuration for the networks in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-snmp-traps-by-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): An optional parameter to filter SNMP trap configs by network IDs
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "snmp", "traps", "byNetwork"],
+ "operation": "getOrganizationSnmpTrapsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/snmp/traps/byNetwork"
+
+ 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"getOrganizationSnmpTrapsByNetwork: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
def getOrganizationSplashAsset(self, organizationId: str, id: str):
"""
**Get a Splash Theme Asset**
@@ -7807,6 +10987,7 @@ def getOrganizationSummaryTopAppliancesByUtilization(self, organizationId: str,
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -7827,6 +11008,7 @@ def getOrganizationSummaryTopAppliancesByUtilization(self, organizationId: str,
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -7952,6 +11134,7 @@ def getOrganizationSummaryTopClientsByUsage(self, organizationId: str, **kwargs)
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -7972,6 +11155,7 @@ def getOrganizationSummaryTopClientsByUsage(self, organizationId: str, **kwargs)
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -7999,6 +11183,7 @@ def getOrganizationSummaryTopClientsManufacturersByUsage(self, organizationId: s
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8019,6 +11204,7 @@ def getOrganizationSummaryTopClientsManufacturersByUsage(self, organizationId: s
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8046,6 +11232,7 @@ def getOrganizationSummaryTopDevicesByUsage(self, organizationId: str, **kwargs)
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8066,6 +11253,7 @@ def getOrganizationSummaryTopDevicesByUsage(self, organizationId: str, **kwargs)
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8093,6 +11281,7 @@ def getOrganizationSummaryTopDevicesModelsByUsage(self, organizationId: str, **k
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8113,6 +11302,7 @@ def getOrganizationSummaryTopDevicesModelsByUsage(self, organizationId: str, **k
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8142,6 +11332,7 @@ def getOrganizationSummaryTopNetworksByStatus(self, organizationId: str, total_p
- direction (string): direction to paginate, either "next" (default) or "prev" page
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8162,6 +11353,7 @@ def getOrganizationSummaryTopNetworksByStatus(self, organizationId: str, total_p
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8189,6 +11381,7 @@ def getOrganizationSummaryTopSsidsByUsage(self, organizationId: str, **kwargs):
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8209,6 +11402,7 @@ def getOrganizationSummaryTopSsidsByUsage(self, organizationId: str, **kwargs):
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8236,6 +11430,7 @@ def getOrganizationSummaryTopSwitchesByEnergyUsage(self, organizationId: str, **
- organizationId (string): Organization ID
- networkTag (string): Match result to an exact network tag
- deviceTag (string): Match result to an exact device tag
+ - networkId (string): Match result to an exact network id
- quantity (integer): Set number of desired results to return. Default is 10. Maximum is 50
- ssidName (string): Filter results by ssid name
- usageUplink (string): Filter results by usage uplink
@@ -8256,6 +11451,7 @@ def getOrganizationSummaryTopSwitchesByEnergyUsage(self, organizationId: str, **
query_params = [
"networkTag",
"deviceTag",
+ "networkId",
"quantity",
"ssidName",
"usageUplink",
@@ -8384,6 +11580,137 @@ def getOrganizationWebhooksCallbacksStatus(self, organizationId: str, callbackId
return self._session.get(metadata, resource)
+ def getOrganizationWebhooksHttpServers(self, organizationId: str):
+ """
+ **List the HTTP servers for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-http-servers
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "getOrganizationWebhooksHttpServers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationWebhooksHttpServer(self, organizationId: str, name: str, url: str, **kwargs):
+ """
+ **Add an HTTP server to an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - name (string): A name for easy reference to the HTTP server
+ - url (string): The URL of the HTTP server
+ - sharedSecret (string): A shared secret that will be included in POSTs sent to the HTTP server. This secret can be used to verify that the request was sent by Meraki.
+ - payloadTemplate (object): The payload template to use when posting data to the HTTP server.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "createOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers"
+
+ body_params = [
+ "name",
+ "url",
+ "sharedSecret",
+ "payloadTemplate",
+ ]
+ 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"createOrganizationWebhooksHttpServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksHttpServer(self, organizationId: str, id: str):
+ """
+ **Return an HTTP server for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "getOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationWebhooksHttpServer(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update an HTTP server for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): A name for easy reference to the HTTP server
+ - url (string): The URL of the HTTP server
+ - sharedSecret (string): A shared secret that will be included in POSTs sent to the HTTP server. This secret can be used to verify that the request was sent by Meraki.
+ - payloadTemplate (object): The payload template to use when posting data to the HTTP server.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "updateOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ body_params = [
+ "name",
+ "url",
+ "sharedSecret",
+ "payloadTemplate",
+ ]
+ 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"updateOrganizationWebhooksHttpServer: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWebhooksHttpServer(self, organizationId: str, id: str):
+ """
+ **Delete an HTTP server from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-webhooks-http-server
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "httpServers"],
+ "operation": "deleteOrganizationWebhooksHttpServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/httpServers/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationWebhooksLogs(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return the log of webhook POSTs sent**
@@ -8428,3 +11755,206 @@ def getOrganizationWebhooksLogs(self, organizationId: str, total_pages=1, direct
self._session._logger.warning(f"getOrganizationWebhooksLogs: ignoring unrecognized kwargs: {invalid}")
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWebhooksPayloadTemplates(self, organizationId: str):
+ """
+ **List the webhook payload templates for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-payload-templates
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "getOrganizationWebhooksPayloadTemplates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationWebhooksPayloadTemplate(self, organizationId: str, name: str, **kwargs):
+ """
+ **Create a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the new template
+ - body (string): The liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message. Either `body` or `bodyFile` must be specified.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "createOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ 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"createOrganizationWebhooksPayloadTemplate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str):
+ """
+ **Get the webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "getOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ return self._session.get(metadata, resource)
+
+ def deleteOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str):
+ """
+ **Destroy a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "deleteOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationWebhooksPayloadTemplate(self, organizationId: str, payloadTemplateId: str, **kwargs):
+ """
+ **Update a webhook payload template for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-webhooks-payload-template
+
+ - organizationId (string): Organization ID
+ - payloadTemplateId (string): Payload template ID
+ - name (string): The name of the template
+ - body (string): The liquid template used for the body of the webhook message.
+ - headers (array): The liquid template used with the webhook headers.
+ - bodyFile (string): A file containing liquid template used for the body of the webhook message.
+ - headersFile (string): A file containing the liquid template used with the webhook headers.
+ - sharing (object): Information on which entities have access to the template
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "payloadTemplates"],
+ "operation": "updateOrganizationWebhooksPayloadTemplate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ payloadTemplateId = urllib.parse.quote(str(payloadTemplateId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/payloadTemplates/{payloadTemplateId}"
+
+ body_params = [
+ "name",
+ "body",
+ "headers",
+ "bodyFile",
+ "headersFile",
+ "sharing",
+ ]
+ 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"updateOrganizationWebhooksPayloadTemplate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createOrganizationWebhooksWebhookTest(self, organizationId: str, url: str, **kwargs):
+ """
+ **Send a test webhook for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-webhooks-webhook-test
+
+ - organizationId (string): Organization ID
+ - url (string): The URL where the test webhook will be sent
+ - sharedSecret (string): The shared secret the test webhook will send. Optional. Defaults to HTTP server's shared secret. Otherwise, defaults to an empty string.
+ - payloadTemplateId (string): The ID of the payload template of the test webhook. Defaults to the HTTP server's template ID if one exists for the given URL, or Generic template ID otherwise
+ - payloadTemplateName (string): The name of the payload template.
+ - alertTypeId (string): The type of alert which the test webhook will send. Optional. Defaults to insight_app_outage_start.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "webhookTests"],
+ "operation": "createOrganizationWebhooksWebhookTest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/webhookTests"
+
+ body_params = [
+ "url",
+ "sharedSecret",
+ "payloadTemplateId",
+ "payloadTemplateName",
+ "alertTypeId",
+ ]
+ 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"createOrganizationWebhooksWebhookTest: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWebhooksWebhookTest(self, organizationId: str, webhookTestId: str):
+ """
+ **Return the status of a webhook test for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-webhooks-webhook-test
+
+ - organizationId (string): Organization ID
+ - webhookTestId (string): Webhook test ID
+ """
+
+ metadata = {
+ "tags": ["organizations", "configure", "webhooks", "webhookTests"],
+ "operation": "getOrganizationWebhooksWebhookTest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ webhookTestId = urllib.parse.quote(str(webhookTestId), safe="")
+ resource = f"/organizations/{organizationId}/webhooks/webhookTests/{webhookTestId}"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/api/secureConnect.py b/meraki/api/secureConnect.py
new file mode 100644
index 0000000..a3a6f7f
--- /dev/null
+++ b/meraki/api/secureConnect.py
@@ -0,0 +1,1082 @@
+import urllib
+
+
+class SecureConnect(object):
+ def __init__(self, session):
+ super(SecureConnect, self).__init__()
+ self._session = session
+
+ def getOrganizationSecureConnectPrivateApplicationGroups(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides a list of private application groups for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application-groups
+
+ - 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 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to search the application group list by group name, case is ignored
+ - applicationGroupIds (array): List of application group ids attached to fetch
+ - sortBy (string): Optional parameter to specify the field used to sort objects.
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["applicationGroupId", "modifiedAt", "name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "getOrganizationSecureConnectPrivateApplicationGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "applicationGroupIds",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "applicationGroupIds",
+ ]
+ 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"getOrganizationSecureConnectPrivateApplicationGroups: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Creates a group of private applications to apply to policy**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - name (string): Application Group Name. This is required and cannot have any special characters other than spaces and hyphens
+ - description (string): Optional short description for application group
+ - applicationIds (array): List of application ids attached to this Private Application Group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "createOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups"
+
+ body_params = [
+ "name",
+ "description",
+ "applicationIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateApplicationGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str, name: str, **kwargs):
+ """
+ **Update an application group in an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Application Group Name. This is required and cannot have any special characters other than spaces and hyphens
+ - description (string): Optional short description for application group
+ - applicationIds (array): List of application ids attached to this Private Application Group
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "updateOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "applicationIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateApplicationGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str, **kwargs):
+ """
+ **Deletes private application group from an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - force (boolean): Boolean flag to force delete application group, even if application group is in use by one or more rules.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "deleteOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplicationGroup(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific private application group**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplicationGroups"],
+ "operation": "getOrganizationSecureConnectPrivateApplicationGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplicationGroups/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplications(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of private applications for an Organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-applications
+
+ - 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 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to filter the private applications list by application and associated application group names, case is ignored
+ - applicationGroupIds (array): Optional parameter for filtering the list of private applications belonging to the application group identified by the given IDs.
+ - appTypes (array): Optional parameter for filtering the list of private applications by applications that contain at least one destination with the specified accessType value.
+ - sortBy (string): Optional parameter to specify the field used to sort objects.
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["modifiedAt", "name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "getOrganizationSecureConnectPrivateApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "applicationGroupIds",
+ "appTypes",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "applicationGroupIds",
+ "appTypes",
+ ]
+ 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"getOrganizationSecureConnectPrivateApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateApplication(self, organizationId: str, name: str, destinations: list, **kwargs):
+ """
+ **Adds a new private application to the Organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - name (string): Name of Application. This is required and should be unique across all applications for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - destinations (array): List of IP address destinations.
+ - description (string): Optional Text description for Application
+ - appProtocol (string): Protocol for communication between proxy to private application. Applicable for Browser Based Access only.
+ - sni (string): Optional SNI. Applicable for Browser Based Access only. SNI should be a valid domain.
+ - externalFQDN (string): Cisco or Customer Managed URL for Application. Applicable for Browser Based Access only. This field is system generated based on the application name and organization ID and overrides user input in payload. This value must be unique across all applications for a given organization.
+ - sslVerificationEnabled (boolean): Enable Upstream SSL verification for the internally hosted URL by the customer. Applicable for Browser Based Access only. Default is true.
+ - applicationGroupIds (array): List of application group ids attached to this Private Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "createOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications"
+
+ body_params = [
+ "name",
+ "description",
+ "destinations",
+ "appProtocol",
+ "sni",
+ "externalFQDN",
+ "sslVerificationEnabled",
+ "applicationGroupIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateApplication(
+ self, organizationId: str, id: str, name: str, destinations: list, **kwargs
+ ):
+ """
+ **Updates a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of Application. This is required and should be unique across all applications for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - destinations (array): List of IP address destinations.
+ - description (string): Optional Text description for Application
+ - appProtocol (string): Protocol for communication between proxy to private application. Applicable for Browser Based Access only.
+ - sni (string): Optional SNI. Applicable for Browser Based Access only. SNI should be a valid domain.
+ - externalFQDN (string): Cisco or Customer Managed URL for Application. Applicable for Browser Based Access only. This field is system generated based on the application name and organization ID and overrides user input in payload. This value must be unique across all applications for a given organization.
+ - sslVerificationEnabled (boolean): Enable Upstream SSL verification for the internally hosted URL by the customer. Applicable for Browser Based Access only. Default is true.
+ - applicationGroupIds (array): List of application group ids attached to this Private Application
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "updateOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "destinations",
+ "appProtocol",
+ "sni",
+ "externalFQDN",
+ "sslVerificationEnabled",
+ "applicationGroupIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateApplication: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateApplication(self, organizationId: str, id: str, **kwargs):
+ """
+ **Deletes a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - force (boolean): Boolean flag to force delete application, even if application is in use by one or more rules.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "deleteOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateApplication(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific private application**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-application
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateApplications"],
+ "operation": "getOrganizationSecureConnectPrivateApplication",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateApplications/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateResourceGroups(self, organizationId: str):
+ """
+ **Provides a list of the private resource groups in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-resource-groups
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "getOrganizationSecureConnectPrivateResourceGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, name: str, **kwargs):
+ """
+ **Adds a new private resource group to an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "createOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateResourceGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str, name: str, **kwargs):
+ """
+ **Updates a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of group. This is required and should be unique across all groups for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - description (string): Optional text description for a group.
+ - resourceIds (array): List of resource ids assigned to this group.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "updateOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "resourceIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateResourceGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateResourceGroup(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource group.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource-group
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResourceGroups"],
+ "operation": "deleteOrganizationSecureConnectPrivateResourceGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResourceGroups/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPrivateResources(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of private resources for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-private-resources
+
+ - 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 (string): Number of resources to return for a paginated response.
+ - startingAfter (string): The name of the resource to start after for a paginated response. Use '' for the first page.
+ - endingBefore (string): The name of the resource to end before for a paginated response. Use '' for the final page.
+ - sortBy (string): Parameter to specify the field used to sort objects, by default, resources are returned by name asc.
+ - sortOrder (string): Parameter to specify the direction used to sort objects, by default, resources are returned by name asc.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "getOrganizationSecureConnectPrivateResources",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "sortBy",
+ "sortOrder",
+ ]
+ 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"getOrganizationSecureConnectPrivateResources: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Adds a new private resource to the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization. Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for a resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "createOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ 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"createOrganizationSecureConnectPrivateResource: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSecureConnectPrivateResource(
+ self, organizationId: str, id: str, name: str, accessTypes: list, resourceAddresses: list, **kwargs
+ ):
+ """
+ **Updates a specific private resource.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of resource. This is required and should be unique across all resources for a given organization.Name cannot have any special characters other than spaces and hyphens.
+ - accessTypes (array): List of access types.
+ - resourceAddresses (array): List of resource addresses Protocols must be unique in this list.
+ - description (string): Optional text description for resource.
+ - resourceGroupIds (array): List of resource group ids attached to this resource.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "updateOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "accessTypes",
+ "resourceAddresses",
+ "resourceGroupIds",
+ ]
+ 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"updateOrganizationSecureConnectPrivateResource: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectPrivateResource(self, organizationId: str, id: str):
+ """
+ **Deletes a specific private resource**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-private-resource
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "privateResources"],
+ "operation": "deleteOrganizationSecureConnectPrivateResource",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/privateResources/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSecureConnectPublicApplications(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Provides a list of public applications for an Organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-public-applications
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - nameIncludes (string): Optional parameter to filter the public applications list by application name, case is ignored
+ - risks (array): List of risk levels to filter by
+ - categories (array): List of categories to filter by
+ - appTypes (array): List of app types to filter by
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ - sortBy (string): Optional parameter to specify the field used to sort objects, by default, applications are returned by lastDetected desc
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is desc.
+ """
+
+ kwargs.update(locals())
+
+ if "sortBy" in kwargs:
+ options = ["appType", "category", "lastDetected", "name", "risk"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "publicApplications"],
+ "operation": "getOrganizationSecureConnectPublicApplications",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/publicApplications"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "nameIncludes",
+ "risks",
+ "categories",
+ "appTypes",
+ "t0",
+ "t1",
+ "timespan",
+ "sortBy",
+ "sortOrder",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "risks",
+ "categories",
+ "appTypes",
+ ]
+ 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"getOrganizationSecureConnectPublicApplications: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSecureConnectRegions(self, organizationId: str, **kwargs):
+ """
+ **List deployed cloud hubs and regions in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-regions
+
+ - organizationId (string): Organization ID
+ - regionType (string): Filter results by region type
+ """
+
+ kwargs.update(locals())
+
+ if "regionType" in kwargs:
+ options = ["CNHE", "CloudHub", "Region", "ThirdParty"]
+ assert kwargs["regionType"] in options, (
+ f'''"regionType" cannot be "{kwargs["regionType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "regions"],
+ "operation": "getOrganizationSecureConnectRegions",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/regions"
+
+ query_params = [
+ "regionType",
+ ]
+ 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"getOrganizationSecureConnectRegions: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSecureConnectRemoteAccessLog(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the latest 5000 events logged by remote access.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-log
+
+ - 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 - 5000. Default is 50.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day.
+ - identityids (string): An identity ID or comma-delimited list of identity ID.
+ - identitytypes (string): An identity type or comma-delimited list of identity type.
+ - connectionevent (string): Specify the type of connection event.
+ - anyconnectversions (string): Specify a comma-separated list of AnyConnect Roaming Security module
+ versions to filter the data.
+ - osversions (string): Specify a comma-separated list of OS versions to filter the data.
+ """
+
+ kwargs.update(locals())
+
+ if "connectionevent" in kwargs:
+ options = ["connected", "disconnected", "failed"]
+ assert kwargs["connectionevent"] in options, (
+ f'''"connectionevent" cannot be "{kwargs["connectionevent"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "monitor", "remoteAccessLog"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLog",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLog"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "identityids",
+ "identitytypes",
+ "connectionevent",
+ "anyconnectversions",
+ "osversions",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLog: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExports(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides a list of remote access logs exports for an Organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-exports
+
+ - 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 10.
+ - 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.
+ - status (string): Filter exports by status.
+ """
+
+ kwargs.update(locals())
+
+ if "status" in kwargs:
+ options = ["complete", "continue", "error", "in_progress", "new", "zip"]
+ assert kwargs["status"] in options, (
+ f'''"status" cannot be "{kwargs["status"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExports",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "status",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLogsExports: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, from_: int, to: int, **kwargs):
+ """
+ **Creates a 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.
+ """
+
+ kwargs = locals()
+ if "from_" in kwargs:
+ kwargs["from"] = kwargs.pop("from_")
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "createOrganizationSecureConnectRemoteAccessLogsExport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports"
+
+ body_params = [
+ "from",
+ "to",
+ ]
+ 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"createOrganizationSecureConnectRemoteAccessLogsExport: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExportsDownload(
+ self, organizationId: str, id: str, fileType: str, **kwargs
+ ):
+ """
+ **Redirects to the download link of the completed export.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-exports-download
+
+ - organizationId (string): Organization ID
+ - id (string): Export ID.
+ - fileType (string): Export download file type.
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports", "download"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExportsDownload",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports/download"
+
+ query_params = [
+ "id",
+ "fileType",
+ ]
+ 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"getOrganizationSecureConnectRemoteAccessLogsExportsDownload: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSecureConnectRemoteAccessLogsExport(self, organizationId: str, id: str):
+ """
+ **Return the details of a specific remote access logs export**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-remote-access-logs-export
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "remoteAccessLogsExports"],
+ "operation": "getOrganizationSecureConnectRemoteAccessLogsExport",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/remoteAccessLogsExports/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSecureConnectSites(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List sites in this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-secure-connect-sites
+
+ - 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 10.
+ - 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.
+ - search (string): If provided, filters results by search string
+ - enrolledState (string): Filter results by sites that have already been enrolled or can be enrolled. Acceptable values are 'enrolled' or 'enrollable
+ """
+
+ kwargs.update(locals())
+
+ if "enrolledState" in kwargs:
+ options = ["enrollable", "enrolled"]
+ assert kwargs["enrolledState"] in options, (
+ f'''"enrolledState" cannot be "{kwargs["enrolledState"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "getOrganizationSecureConnectSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "enrolledState",
+ ]
+ 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"getOrganizationSecureConnectSites: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSecureConnectSite(self, organizationId: str, **kwargs):
+ """
+ **Enroll sites in this organization to Secure Connect**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-secure-connect-site
+
+ - organizationId (string): Organization ID
+ - enrollments (array): List of Meraki SD-WAN sites with the associated regions to be enrolled.
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "createOrganizationSecureConnectSite",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ body_params = [
+ "enrollments",
+ "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"createOrganizationSecureConnectSite: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSecureConnectSites(self, organizationId: str, **kwargs):
+ """
+ **Detach given sites from Secure Connect**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-secure-connect-sites
+
+ - organizationId (string): Organization ID
+ - sites (array): List of site IDs to detach
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["secureConnect", "configure", "sites"],
+ "operation": "deleteOrganizationSecureConnectSites",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/secureConnect/sites"
+
+ return self._session.delete(metadata, resource)
diff --git a/meraki/api/sensor.py b/meraki/api/sensor.py
index 2807976..9c901de 100644
--- a/meraki/api/sensor.py
+++ b/meraki/api/sensor.py
@@ -74,9 +74,10 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
- serial (string): Serial
- operation (string): Operation to run on the sensor. 'enableDownstreamPower', 'disableDownstreamPower', and 'cycleDownstreamPower' turn power on/off to the device that is connected downstream of an MT40 power monitor. 'refreshData' causes an MT15 or MT40 device to upload its latest readings so that they are immediately available in the Dashboard API.
+ - arguments (array): Additional options to provide to commands run on the sensor, each with a corresponding 'name' and 'value'.
"""
- kwargs = locals()
+ kwargs.update(locals())
if "operation" in kwargs:
options = ["cycleDownstreamPower", "disableDownstreamPower", "enableDownstreamPower", "refreshData"]
@@ -92,6 +93,7 @@ def createDeviceSensorCommand(self, serial: str, operation: str, **kwargs):
resource = f"/devices/{serial}/sensor/commands"
body_params = [
+ "arguments",
"operation",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -456,6 +458,103 @@ def getNetworkSensorRelationships(self, networkId: str):
return self._session.get(metadata, resource)
+ def getNetworkSensorSchedules(self, networkId: str):
+ """
+ **Returns a list of all sensor schedules.**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-sensor-schedules
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["sensor", "configure", "schedules"],
+ "operation": "getNetworkSensorSchedules",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/sensor/schedules"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSensorAlerts(self, organizationId: str, networkIds: list, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a list of sensor alert events**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sensor-alerts
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filters alerts by network. For now, this must be a single network 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 10.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 365 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 365 days. The default is 365 days.
+ - sensorSerial (string): Filters alerts to those triggered by this sensor.
+ - triggerMetric (string): Filters alerts to those triggered by this metric.
+ """
+
+ kwargs.update(locals())
+
+ if "triggerMetric" in kwargs:
+ options = [
+ "apparentPower",
+ "co2",
+ "current",
+ "door",
+ "frequency",
+ "humidity",
+ "indoorAirQuality",
+ "noise",
+ "pm25",
+ "powerFactor",
+ "realPower",
+ "temperature",
+ "tvoc",
+ "upstreamPower",
+ "voltage",
+ "water",
+ ]
+ assert kwargs["triggerMetric"] in options, (
+ f'''"triggerMetric" cannot be "{kwargs["triggerMetric"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["sensor", "monitor", "alerts"],
+ "operation": "getOrganizationSensorAlerts",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sensor/alerts"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "sensorSerial",
+ "networkIds",
+ "triggerMetric",
+ ]
+ 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"getOrganizationSensorAlerts: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSensorGatewaysConnectionsLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Returns latest sensor-gateway connectivity data.**
@@ -564,6 +663,72 @@ def getOrganizationSensorReadingsHistory(self, organizationId: str, total_pages=
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationSensorReadingsHistoryByInterval(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return all reported readings from sensors in a given timespan, summarized as a series of intervals, sorted by interval start time in descending order**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sensor-readings-history-by-interval
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 730 days, 11 hours, 38 minutes, and 24 seconds from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 730 days, 11 hours, 38 minutes, and 24 seconds 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 730 days, 11 hours, 38 minutes, and 24 seconds. The default is 7 days. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 15, 120, 300, 900, 3600, 14400, 86400, 604800. The default is 86400. Interval is calculated if time params are provided.
+ - networkIds (array): Optional parameter to filter readings by network.
+ - serials (array): Optional parameter to filter readings by sensor.
+ - metrics (array): Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved.
+ - models (array): Optional parameter to filter readings by one or more models.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sensor", "monitor", "readings", "history", "byInterval"],
+ "operation": "getOrganizationSensorReadingsHistoryByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sensor/readings/history/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "serials",
+ "metrics",
+ "models",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "metrics",
+ "models",
+ ]
+ 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"getOrganizationSensorReadingsHistoryByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationSensorReadingsLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**Return the latest available reading for each metric from each sensor, sorted by sensor serial**
diff --git a/meraki/api/sm.py b/meraki/api/sm.py
index c79ab08..af8fcfa 100644
--- a/meraki/api/sm.py
+++ b/meraki/api/sm.py
@@ -1396,6 +1396,187 @@ def getOrganizationSmApnsCert(self, organizationId: str):
return self._session.get(metadata, resource)
+ def createOrganizationSmAppleCloudEnrollmentSyncJob(self, organizationId: str, **kwargs):
+ """
+ **Enqueue a sync job for an ADE account**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-apple-cloud-enrollment-sync-job
+
+ - organizationId (string): Organization ID
+ - adeAccountId (string): ADE Account ID
+ - fullSync (boolean): Whether or not job is full sync (defaults to full sync)
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sm", "configure", "apple", "cloudEnrollment", "syncJobs"],
+ "operation": "createOrganizationSmAppleCloudEnrollmentSyncJob",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/apple/cloudEnrollment/syncJobs"
+
+ body_params = [
+ "adeAccountId",
+ "fullSync",
+ ]
+ 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"createOrganizationSmAppleCloudEnrollmentSyncJob: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSmAppleCloudEnrollmentSyncJob(self, organizationId: str, syncJobId: str):
+ """
+ **Retrieve the status of an ADE sync job**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-apple-cloud-enrollment-sync-job
+
+ - organizationId (string): Organization ID
+ - syncJobId (string): Sync job ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "apple", "cloudEnrollment", "syncJobs"],
+ "operation": "getOrganizationSmAppleCloudEnrollmentSyncJob",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ syncJobId = urllib.parse.quote(str(syncJobId), safe="")
+ resource = f"/organizations/{organizationId}/sm/apple/cloudEnrollment/syncJobs/{syncJobId}"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationSmBulkEnrollmentToken(self, organizationId: str, networkId: str, expiresAt: str, **kwargs):
+ """
+ **Create a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "createOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ 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"createOrganizationSmBulkEnrollmentToken: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str):
+ """
+ **Return a BulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "getOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str, **kwargs):
+ """
+ **Update a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ - networkId (string): The id of the associated node_group.
+ - expiresAt (string): The expiration date.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "updateOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ body_params = [
+ "networkId",
+ "expiresAt",
+ ]
+ 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"updateOrganizationSmBulkEnrollmentToken: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSmBulkEnrollmentToken(self, organizationId: str, tokenId: str):
+ """
+ **Delete a PccBulkEnrollmentToken**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-sm-bulk-enrollment-token
+
+ - organizationId (string): Organization ID
+ - tokenId (string): Token ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "token"],
+ "operation": "deleteOrganizationSmBulkEnrollmentToken",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ tokenId = urllib.parse.quote(str(tokenId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/token/{tokenId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSmBulkEnrollmentTokens(self, organizationId: str):
+ """
+ **List all BulkEnrollmentTokens for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-sm-bulk-enrollment-tokens
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["sm", "configure", "bulkEnrollment", "tokens"],
+ "operation": "getOrganizationSmBulkEnrollmentTokens",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/sm/bulkEnrollment/tokens"
+
+ return self._session.get(metadata, resource)
+
def updateOrganizationSmSentryPoliciesAssignments(self, organizationId: str, items: list, **kwargs):
"""
**Update an Organizations Sentry Policies using the provided list**
diff --git a/meraki/api/support.py b/meraki/api/support.py
new file mode 100644
index 0000000..9fe7ab7
--- /dev/null
+++ b/meraki/api/support.py
@@ -0,0 +1,24 @@
+import urllib
+
+
+class Support(object):
+ def __init__(self, session):
+ super(Support, self).__init__()
+ self._session = session
+
+ def getOrganizationSupportSalesRepresentatives(self, organizationId: str):
+ """
+ **Returns the organization's sales representatives**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-support-sales-representatives
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["support", "monitor", "salesRepresentatives"],
+ "operation": "getOrganizationSupportSalesRepresentatives",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/support/salesRepresentatives"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/api/switch.py b/meraki/api/switch.py
index d5cbf2d..e952248 100644
--- a/meraki/api/switch.py
+++ b/meraki/api/switch.py
@@ -6,14 +6,17 @@ def __init__(self, session):
super(Switch, self).__init__()
self._session = session
- def getDeviceSwitchPorts(self, serial: str):
+ def getDeviceSwitchPorts(self, serial: str, **kwargs):
"""
**List the switch ports for a switch**
https://developer.cisco.com/meraki/api-v1/#!get-device-switch-ports
- serial (string): Serial
+ - hideDefaultPorts (boolean): Optional flag that, when true, will hide modular switchports that may not be connected to the device at the moment
"""
+ kwargs.update(locals())
+
metadata = {
"tags": ["switch", "configure", "ports"],
"operation": "getDeviceSwitchPorts",
@@ -21,7 +24,18 @@ def getDeviceSwitchPorts(self, serial: str):
serial = urllib.parse.quote(str(serial), safe="")
resource = f"/devices/{serial}/switch/ports"
- return self._session.get(metadata, resource)
+ query_params = [
+ "hideDefaultPorts",
+ ]
+ 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"getDeviceSwitchPorts: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
def cycleDeviceSwitchPorts(self, serial: str, ports: list, **kwargs):
"""
@@ -54,6 +68,46 @@ def cycleDeviceSwitchPorts(self, serial: str, ports: list, **kwargs):
return self._session.post(metadata, resource, payload)
+ def updateDeviceSwitchPortsMirror(self, serial: str, source: dict, destination: dict, **kwargs):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-switch-ports-mirror
+
+ - serial (string): The switch identifier
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "mirror"],
+ "operation": "updateDeviceSwitchPortsMirror",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/switch/ports/mirror"
+
+ body_params = [
+ "serial",
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateDeviceSwitchPortsMirror: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceSwitchPortsStatuses(self, serial: str, **kwargs):
"""
**Return the status for all the ports of a switch**
@@ -154,6 +208,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
- vlan (integer): The VLAN of the switch 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 port. Only applicable to access ports.
- allowedVlans (string): The VLANs allowed on the switch port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -214,6 +269,7 @@ def updateDeviceSwitchPort(self, serial: str, portId: str, **kwargs):
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -303,6 +359,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -337,6 +399,12 @@ def createDeviceSwitchRoutingInterface(self, serial: str, name: str, **kwargs):
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -386,6 +454,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -417,6 +491,12 @@ def updateDeviceSwitchRoutingInterface(self, serial: str, interfaceId: str, **kw
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -1388,14 +1468,17 @@ def updateNetworkSwitchDscpToCosMappings(self, networkId: str, mappings: list, *
return self._session.put(metadata, resource, payload)
- def getNetworkSwitchLinkAggregations(self, networkId: str):
+ def getNetworkSwitchLinkAggregations(self, networkId: str, **kwargs):
"""
**List link aggregation groups**
https://developer.cisco.com/meraki/api-v1/#!get-network-switch-link-aggregations
- networkId (string): Network ID
+ - serials (array): Optional parameter to filter by device serial numbers. Matches multiple exact serials.
"""
+ kwargs.update(locals())
+
metadata = {
"tags": ["switch", "configure", "linkAggregations"],
"operation": "getNetworkSwitchLinkAggregations",
@@ -1403,7 +1486,26 @@ def getNetworkSwitchLinkAggregations(self, networkId: str):
networkId = urllib.parse.quote(str(networkId), safe="")
resource = f"/networks/{networkId}/switch/linkAggregations"
- return self._session.get(metadata, resource)
+ query_params = [
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getNetworkSwitchLinkAggregations: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
def createNetworkSwitchLinkAggregation(self, networkId: str, **kwargs):
"""
@@ -1652,6 +1754,126 @@ def updateNetworkSwitchPortSchedule(self, networkId: str, portScheduleId: str, *
return self._session.put(metadata, resource, payload)
+ def getNetworkSwitchPortsProfiles(self, networkId: str):
+ """
+ **List the port profiles in a network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-switch-ports-profiles
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getNetworkSwitchPortsProfiles",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles"
+
+ return self._session.get(metadata, resource)
+
+ def createNetworkSwitchPortsProfile(self, networkId: str, **kwargs):
+ """
+ **Create a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "createNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"createNetworkSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateNetworkSwitchPortsProfile(self, networkId: str, id: str, **kwargs):
+ """
+ **Update a port profile in a network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "updateNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"updateNetworkSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteNetworkSwitchPortsProfile(self, networkId: str, id: str):
+ """
+ **Delete a port profile from a network**
+ https://developer.cisco.com/meraki/api-v1/#!delete-network-switch-ports-profile
+
+ - networkId (string): Network ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "deleteNetworkSwitchPortsProfile",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/networks/{networkId}/switch/ports/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getNetworkSwitchQosRules(self, networkId: str):
"""
**List quality of service rules**
@@ -1855,6 +2077,64 @@ def updateNetworkSwitchQosRule(self, networkId: str, qosRuleId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getNetworkSwitchRaGuardPolicy(self, networkId: str):
+ """
+ **Return RA Guard settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-switch-ra-guard-policy
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "raGuardPolicy"],
+ "operation": "getNetworkSwitchRaGuardPolicy",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/raGuardPolicy"
+
+ return self._session.get(metadata, resource)
+
+ def updateNetworkSwitchRaGuardPolicy(self, networkId: str, **kwargs):
+ """
+ **Update RA Guard settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-ra-guard-policy
+
+ - networkId (string): Network ID
+ - defaultPolicy (string): New Router Advertisers are 'allowed' or 'blocked'. Default value is 'allowed'.
+ - allowedServers (array): List the MAC addresses of Router Advertisers to permit on the network when defaultPolicy is set to blocked.
+ - blockedServers (array): List the MAC addresses of Router Advertisers to block on the network when defaultPolicy is set to allowed.
+ """
+
+ kwargs.update(locals())
+
+ if "defaultPolicy" in kwargs:
+ options = ["allowed", "blocked"]
+ assert kwargs["defaultPolicy"] in options, (
+ f'''"defaultPolicy" cannot be "{kwargs["defaultPolicy"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["switch", "configure", "raGuardPolicy"],
+ "operation": "updateNetworkSwitchRaGuardPolicy",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/raGuardPolicy"
+
+ body_params = [
+ "defaultPolicy",
+ "allowedServers",
+ "blockedServers",
+ ]
+ 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"updateNetworkSwitchRaGuardPolicy: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchRoutingMulticast(self, networkId: str):
"""
**Return multicast settings for a network**
@@ -2175,6 +2455,45 @@ def updateNetworkSwitchSettings(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkSwitchSpanningTree(self, networkId: str, **kwargs):
+ """
+ **Updates Spanning Tree configuration**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-spanning-tree
+
+ - networkId (string): Network ID
+ - enabled (boolean): Network-level spanning Tree enable
+ - mode (string): Catalyst Spanning Tree Protocol mode (mst, rpvst+)
+ - priorities (array): Spanning tree priority for switches/stacks or switch templates. An empty array will clear the priority settings.
+ """
+
+ kwargs.update(locals())
+
+ if "mode" in kwargs:
+ options = ["mst", "rpvst+"]
+ assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "spanningTree"],
+ "operation": "updateNetworkSwitchSpanningTree",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/switch/spanningTree"
+
+ body_params = [
+ "enabled",
+ "mode",
+ "priorities",
+ ]
+ 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"updateNetworkSwitchSpanningTree: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchStacks(self, networkId: str):
"""
**List the switch stacks in a network**
@@ -2225,6 +2544,41 @@ def createNetworkSwitchStack(self, networkId: str, name: str, serials: list, **k
return self._session.post(metadata, resource, payload)
+ def updateNetworkSwitchStack(self, networkId: str, switchStackId: str, **kwargs):
+ """
+ **Update a switch stack**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - name (string): The name of the stack
+ - members (array): The list of switches that should be in the stack
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "stacks"],
+ "operation": "updateNetworkSwitchStack",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ switchStackId = urllib.parse.quote(str(switchStackId), safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}"
+
+ body_params = [
+ "name",
+ "members",
+ ]
+ 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"updateNetworkSwitchStack: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkSwitchStack(self, networkId: str, switchStackId: str):
"""
**Show a switch stack**
@@ -2296,6 +2650,49 @@ def addNetworkSwitchStack(self, networkId: str, switchStackId: str, serial: str,
return self._session.post(metadata, resource, payload)
+ def updateNetworkSwitchStackPortsMirror(
+ self, networkId: str, switchStackId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update switch port mirrors for switch stacks**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-switch-stack-ports-mirror
+
+ - networkId (string): Network ID
+ - switchStackId (string): Switch stack ID
+ - source (object): Source port details
+ - destination (object): Destination port Details
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "stacks", "ports", "mirror"],
+ "operation": "updateNetworkSwitchStackPortsMirror",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ switchStackId = urllib.parse.quote(str(switchStackId), safe="")
+ resource = f"/networks/{networkId}/switch/stacks/{switchStackId}/ports/mirror"
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateNetworkSwitchStackPortsMirror: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def removeNetworkSwitchStack(self, networkId: str, switchStackId: str, serial: str, **kwargs):
"""
**Remove a switch from a stack**
@@ -2391,6 +2788,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -2426,6 +2829,12 @@ def createNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -2480,6 +2889,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
- multicastRouting (string): Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'.
- vlanId (integer): The VLAN this L3 interface is on. VLAN must be between 1 and 4094.
- defaultGateway (string): The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface.
+ - isSwitchDefaultGateway (boolean): When true, the switch uses the IPv4 uplink gateway as its IPv4 default gateway. This can only be set if the interface is designated as the IPv4 uplink.
+ - uplinkV4 (boolean): When true, this interface is used as static IPv4 uplink.
+ - candidateUplinkV4 (boolean): When true, this interface is a UAC candidate for IPv4 Uplink.
+ - uplinkV6 (boolean): When true, this interface is used as static IPv6 uplink.
+ - staticV4Dns1 (string): Primary IPv4 DNS server address
+ - staticV4Dns2 (string): Secondary IPv4 DNS server address
- ospfSettings (object): The OSPF routing settings of the interface.
- ipv6 (object): The IPv6 settings of the interface.
- vrf (object): The VRF settings of the interface. Requires IOS XE 17.18 or higher
@@ -2512,6 +2927,12 @@ def updateNetworkSwitchStackRoutingInterface(self, networkId: str, switchStackId
"multicastRouting",
"vlanId",
"defaultGateway",
+ "isSwitchDefaultGateway",
+ "uplinkV4",
+ "candidateUplinkV4",
+ "uplinkV6",
+ "staticV4Dns1",
+ "staticV4Dns2",
"ospfSettings",
"ipv6",
"vrf",
@@ -2911,14 +3332,68 @@ def updateNetworkSwitchStp(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
- def getOrganizationConfigTemplateSwitchProfiles(self, organizationId: str, configTemplateId: str):
+ def getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List the switch templates for your switch template configuration**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profiles
+ **list the port mirror configurations in an organization by switch profile**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-config-templates-switch-profiles-ports-mirrors-by-switch-profile
- organizationId (string): Organization ID
- - configTemplateId (string): Config template 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
+ - configTemplateIds (array): Optional parameter to filter the result set by the included set of config template IDs
+ - ids (array): A list of switch profile ids. The returned profiles will be filtered to only include these ids.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "configTemplates", "profiles", "ports", "mirrors", "bySwitchProfile"],
+ "operation": "getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/configTemplates/switch/profiles/ports/mirrors/bySwitchProfile"
+
+ query_params = [
+ "configTemplateIds",
+ "ids",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "configTemplateIds",
+ "ids",
+ ]
+ 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"getOrganizationConfigTemplatesSwitchProfilesPortsMirrorsBySwitchProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationConfigTemplateSwitchProfiles(self, organizationId: str, configTemplateId: str):
+ """
+ **List the switch templates for your switch template configuration**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-config-template-switch-profiles
+
+ - organizationId (string): Organization ID
+ - configTemplateId (string): Config template ID
+ """
metadata = {
"tags": ["switch", "configure", "configTemplates", "profiles"],
@@ -2951,6 +3426,55 @@ def getOrganizationConfigTemplateSwitchProfilePorts(self, organizationId: str, c
return self._session.get(metadata, resource)
+ def updateOrganizationConfigTemplateSwitchProfilePortsMirror(
+ self, organizationId: str, configTemplateId: str, profileId: str, source: dict, destination: dict, **kwargs
+ ):
+ """
+ **Update a port mirror**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-config-template-switch-profile-ports-mirror
+
+ - organizationId (string): Organization ID
+ - configTemplateId (string): Config template ID
+ - profileId (string): Profile ID
+ - source (object): Source ports mirror configuration
+ - destination (object): Destination port mirror configuration
+ - tags (array): Port mirror tags
+ - role (string): Switch role can be source or destination
+ - comment (string): My pretty comment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "configTemplates", "profiles", "ports", "mirror"],
+ "operation": "updateOrganizationConfigTemplateSwitchProfilePortsMirror",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ configTemplateId = urllib.parse.quote(str(configTemplateId), safe="")
+ profileId = urllib.parse.quote(str(profileId), safe="")
+ resource = (
+ f"/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles/{profileId}/ports/mirror"
+ )
+
+ body_params = [
+ "source",
+ "destination",
+ "tags",
+ "role",
+ "comment",
+ ]
+ 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"updateOrganizationConfigTemplateSwitchProfilePortsMirror: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getOrganizationConfigTemplateSwitchProfilePort(
self, organizationId: str, configTemplateId: str, profileId: str, portId: str
):
@@ -2997,6 +3521,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
- 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.
- allowedVlans (string): The VLANs allowed on the switch template port. Only applicable to trunk ports.
+ - activeVlans (string): The VLANs that are active on the switch template port. Only applicable to trunk ports.
- isolationEnabled (boolean): The isolation status of the switch template port.
- rstpEnabled (boolean): The rapid spanning tree protocol status.
- stpGuard (string): The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard').
@@ -3059,6 +3584,7 @@ def updateOrganizationConfigTemplateSwitchProfilePort(
"vlan",
"voiceVlan",
"allowedVlans",
+ "activeVlans",
"isolationEnabled",
"rstpEnabled",
"stpGuard",
@@ -3128,89 +3654,101 @@ def getOrganizationSummarySwitchPowerHistory(self, organizationId: str, **kwargs
return self._session.get(metadata, resource, params)
- def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str, targetSerials: list, **kwargs):
+ def getOrganizationSwitchAlertsPoeByDevice(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Clone port-level and some switch-level configuration settings from a source switch to one or more target switches**
- https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-devices
+ **Gets all poe related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-alerts-poe-by-device
- organizationId (string): Organization ID
- - sourceSerial (string): Serial number of the source switch (must be on a network not bound to a template)
- - targetSerials (array): Array of serial numbers of one or more target switches (must be on a network not bound to a template)
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
- "tags": ["switch", "configure", "devices"],
- "operation": "cloneOrganizationSwitchDevices",
+ "tags": ["switch", "monitor", "alerts", "poe", "byDevice"],
+ "operation": "getOrganizationSwitchAlertsPoeByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/devices/clone"
+ resource = f"/organizations/{organizationId}/switch/alerts/poe/byDevice"
- body_params = [
- "sourceSerial",
- "targetSerials",
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(f"cloneOrganizationSwitchDevices: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchAlertsPoeByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.post(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def aurora2OrganizationSwitchSwitchTemplates(self, organizationId: str):
"""
- **List the switchports in an organization by switch**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-by-switch
+ **List switch templates running IOS XE Catalyst firmware.**
+ https://developer.cisco.com/meraki/api-v1/#!aurora-2-organization-switch-switch-templates
- 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 - 50. Default is 50.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ metadata = {
+ "tags": ["switch", "configure"],
+ "operation": "aurora2OrganizationSwitchSwitchTemplates",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/aurora2SwitchTemplates"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationSwitchClientsConnectionsAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarizes authentication outcomes per switch client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "configure", "ports", "bySwitch"],
- "operation": "getOrganizationSwitchPortsBySwitch",
+ "tags": ["switch", "monitor", "clients", "connections", "authentication", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsAuthenticationByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/bySwitch"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/authentication/byClient"
query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
"networkIds",
- "portProfileIds",
- "serial",
- "serials",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3221,66 +3759,43 @@ def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1,
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"getOrganizationSwitchPortsBySwitch: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchClientsConnectionsAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsClientsOverviewByDevice(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationSwitchClientsConnectionsDhcpByClient(self, organizationId: str, **kwargs):
"""
- **List the number of clients for all switchports with at least one online client in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-clients-overview-by-device
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-dhcp-by-client
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 20.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "clients", "overview", "byDevice"],
- "operation": "getOrganizationSwitchPortsClientsOverviewByDevice",
+ "tags": ["switch", "monitor", "clients", "connections", "dhcp", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsDhcpByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/clients/overview/byDevice"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/dhcp/byClient"
query_params = [
+ "networkIds",
"t0",
+ "t1",
"timespan",
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
- "networkIds",
- "portProfileIds",
- "serial",
- "serials",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3292,96 +3807,124 @@ def getOrganizationSwitchPortsClientsOverviewByDevice(
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"getOrganizationSwitchPortsClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchClientsConnectionsDhcpByClient: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsOverview(self, organizationId: str, **kwargs):
+ def getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient(self, organizationId: str, **kwargs):
"""
- **Returns the counts of all active ports for the requested timespan, grouped by speed**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-overview
+ **Switch port status by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-clients-connections-switch-port-status-by-client
- organizationId (string): Organization ID
- - t0 (string): The beginning of the timespan for the data.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 186 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 12 hours and be less than or equal to 186 days. The default is 1 day.
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "overview"],
- "operation": "getOrganizationSwitchPortsOverview",
+ "tags": ["switch", "monitor", "clients", "connections", "switchPortStatus", "byClient"],
+ "operation": "getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/overview"
+ resource = f"/organizations/{organizationId}/switch/clients/connections/switchPortStatus/byClient"
query_params = [
+ "networkIds",
"t0",
"t1",
"timespan",
]
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
+ 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"getOrganizationSwitchPortsOverview: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationSwitchClientsConnectionsSwitchPortStatusByClient: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def cloneOrganizationSwitchProfilesToTemplateNetwork(self, organizationId: str, **kwargs):
"""
- **List the switchports in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-by-switch
+ **Clone existing switch templates into a destination template network.**
+ https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-profiles-to-template-network
- 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 - 20. Default is 10.
- - 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.
- - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
- - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
- - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
- - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
- - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
- - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ - profileIds (array): Switch profile IDs to clone
+ - templateNodeGroupId (string): Destination template network ID
"""
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "statuses", "bySwitch"],
- "operation": "getOrganizationSwitchPortsStatusesBySwitch",
+ "tags": ["switch", "configure"],
+ "operation": "cloneOrganizationSwitchProfilesToTemplateNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/statuses/bySwitch"
+ resource = f"/organizations/{organizationId}/switch/cloneProfilesToTemplateNetwork"
- query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
- "configurationUpdatedAfter",
- "mac",
- "macs",
- "name",
- "networkIds",
- "portProfileIds",
- "serial",
- "serials",
+ body_params = [
+ "profileIds",
+ "templateNodeGroupId",
+ ]
+ 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"cloneOrganizationSwitchProfilesToTemplateNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Lan link errors by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-lan-link-errors-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "lanLink", "errors", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/lanLink/errors/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "macs",
"networkIds",
- "portProfileIds",
- "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3393,26 +3936,214 @@ def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_
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"getOrganizationSwitchPortsStatusesBySwitch: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchConnectivityLanLinkErrorsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
+ def getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Lan STP errors by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-lan-stp-errors-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "lanStp", "errors", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/lanStp/errors/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchConnectivityLanStpErrorsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchConnectivityVrrpFailuresByDevice(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Gets all vrrp related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-connectivity-vrrp-failures-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "connectivity", "vrrp", "failures", "byDevice"],
+ "operation": "getOrganizationSwitchConnectivityVrrpFailuresByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/connectivity/vrrp/failures/byDevice"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchConnectivityVrrpFailuresByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def cloneOrganizationSwitchDevices(self, organizationId: str, sourceSerial: str, targetSerials: list, **kwargs):
+ """
+ **Clone port-level and some switch-level configuration settings from a source switch to one or more target switches**
+ https://developer.cisco.com/meraki/api-v1/#!clone-organization-switch-devices
+
+ - organizationId (string): Organization ID
+ - sourceSerial (string): Serial number of the source switch (must be on a network not bound to a template)
+ - targetSerials (array): Array of serial numbers of one or more target switches (must be on a network not bound to a template)
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "devices"],
+ "operation": "cloneOrganizationSwitchDevices",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/devices/clone"
+
+ body_params = [
+ "sourceSerial",
+ "targetSerials",
+ ]
+ 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"cloneOrganizationSwitchDevices: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-topology-discovery-by-device
+ **Return a historical record of packet transmission and loss, broken down by protocol, for insight into switch device health.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-devices-system-queues-history-by-switch-by-interval
- 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 - 100. Default is 50.
+ - 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.
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - networkIds (array): Optional parameter to filter connectivity history by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter connectivity history by switch.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "devices", "system", "queues", "history", "bySwitch", "byInterval"],
+ "operation": "getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/devices/system/queues/history/bySwitch/byInterval"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "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"getOrganizationSwitchDevicesSystemQueuesHistoryBySwitchByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the switchports in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-by-switch
+
+ - 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 - 50. Default is 50.
- 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.
+ - extendedParams (boolean): Optional flag to return all of the switchport data vs smaller dataset
+ - hideDefaultPorts (boolean): Optional flag that, when true, will hide modular switchports that may not be connected to the device at the moment
+ - type (array): Optional parameter to filter switchports by type ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad'). All types are selected if not supplied.
- configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
- mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
- macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
@@ -3426,18 +4157,19 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "topology", "discovery", "byDevice"],
- "operation": "getOrganizationSwitchPortsTopologyDiscoveryByDevice",
+ "tags": ["switch", "configure", "ports", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsBySwitch",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/topology/discovery/byDevice"
+ resource = f"/organizations/{organizationId}/switch/ports/bySwitch"
query_params = [
- "t0",
- "timespan",
"perPage",
"startingAfter",
"endingBefore",
+ "extendedParams",
+ "hideDefaultPorts",
+ "type",
"configurationUpdatedAfter",
"mac",
"macs",
@@ -3450,6 +4182,7 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
+ "type",
"macs",
"networkIds",
"portProfileIds",
@@ -3464,27 +4197,23 @@ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
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"getOrganizationSwitchPortsTopologyDiscoveryByDevice: ignoring unrecognized kwargs: {invalid}"
- )
+ self._session._logger.warning(f"getOrganizationSwitchPortsBySwitch: ignoring unrecognized kwargs: {invalid}")
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
+ def getOrganizationSwitchPortsClientsOverviewByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List the historical usage and traffic data of switchports in an organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-usage-history-by-device-by-interval
+ **List the number of clients for all switchports with at least one online client in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-clients-overview-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
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 20.
- 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.
- configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
@@ -3500,17 +4229,15 @@ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
kwargs.update(locals())
metadata = {
- "tags": ["switch", "monitor", "ports", "usage", "history", "byDevice", "byInterval"],
- "operation": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval",
+ "tags": ["switch", "monitor", "ports", "clients", "overview", "byDevice"],
+ "operation": "getOrganizationSwitchPortsClientsOverviewByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval"
+ resource = f"/organizations/{organizationId}/switch/ports/clients/overview/byDevice"
query_params = [
"t0",
- "t1",
"timespan",
- "interval",
"perPage",
"startingAfter",
"endingBefore",
@@ -3541,7 +4268,2962 @@ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
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"getOrganizationSwitchPortsUsageHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationSwitchPortsClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsMirrorsBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **list the port mirror configurations in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-mirrors-by-switch
+
+ - 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
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - serials (array): A list of serial numbers. The returned devices will be filtered to only include these serials.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "ports", "mirrors", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsMirrorsBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/mirrors/bySwitch"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsMirrorsBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsOverview(self, organizationId: str, **kwargs):
+ """
+ **Returns the counts of all active ports for the requested timespan, grouped by speed**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-overview
+
+ - organizationId (string): Organization ID
+ - t0 (string): The beginning of the timespan for the data.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 186 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 12 hours and be less than or equal to 186 days. The default is 1 day.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "overview"],
+ "operation": "getOrganizationSwitchPortsOverview",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/overview"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationSwitchPortsOverview: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchPortsProfiles(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles
+
+ - 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
+ - networkIds (array): Return the port profiles for the specified network(s)
+ - formattedStaticAssignments (boolean): Returns the list of static switchports that are assigned to the switchport profile
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - radiusProfileEnabled (boolean): Optional parameter. If true, only return port profiles with a radius profile enabled
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getOrganizationSwitchPortsProfiles",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles"
+
+ query_params = [
+ "networkIds",
+ "formattedStaticAssignments",
+ "searchQuery",
+ "radiusProfileEnabled",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsProfiles: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfile(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "createOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"createOrganizationSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def batchOrganizationSwitchPortsProfilesAssignmentsAssign(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch assign or unassign port profiles to switch ports**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-assignments-assign
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignment operations (max 100)
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "assignments"],
+ "operation": "batchOrganizationSwitchPortsProfilesAssignmentsAssign",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/batchAssign"
+
+ body_params = [
+ "items",
+ ]
+ 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"batchOrganizationSwitchPortsProfilesAssignmentsAssign: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchPortsProfilesAssignmentsByPort(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile assignments in an organization, grouped by port**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-assignments-by-port
+
+ - 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
+ - profileIds (array): Filter by specific profile IDs
+ - serials (array): Filter by switch serials
+ - networkIds (array): Filter by network IDs
+ - templateIds (array): Filter by template (node_profile) IDs
+ - types (array): Filter by port type: switch, template
+ - assignmentTypes (array): Filter by assignment type: direct, template, exception
+ - isActive (boolean): Filter by assignment status. true: only ports with active assignments, showing only active assignments per port. false: only ports with inactive assignments, showing only inactive assignments per port. Omit: all ports with all assignment layers.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 50.
+ - 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": ["switch", "configure", "ports", "profiles", "assignments", "byPort"],
+ "operation": "getOrganizationSwitchPortsProfilesAssignmentsByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/byPort"
+
+ query_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "templateIds",
+ "types",
+ "assignmentTypes",
+ "isActive",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "templateIds",
+ "types",
+ "assignmentTypes",
+ ]
+ 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"getOrganizationSwitchPortsProfilesAssignmentsByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesAssignmentsBySwitch(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile assignments in an organization, grouped by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-assignments-by-switch
+
+ - 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
+ - profileIds (array): Filter by specific profile IDs
+ - serials (array): Filter by switch serials
+ - networkIds (array): Filter by network IDs
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 50.
+ - 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": ["switch", "configure", "ports", "profiles", "assignments", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsProfilesAssignmentsBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/assignments/bySwitch"
+
+ query_params = [
+ "profileIds",
+ "serials",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "profileIds",
+ "serials",
+ "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"getOrganizationSwitchPortsProfilesAssignmentsBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesAutomations(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **list the automation port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-automations
+
+ - 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
+ - ids (array): Optional parameter to filter the result set by the included set of automation IDs
+ - networkIds (array): Optional parameter to filter the result set by the associated networks.
+ - isOrganizationWide (string): Optional parameter to filter the result set by automations org-wide flag.
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "getOrganizationSwitchPortsProfilesAutomations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations"
+
+ query_params = [
+ "ids",
+ "networkIds",
+ "isOrganizationWide",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ids",
+ "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"getOrganizationSwitchPortsProfilesAutomations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, **kwargs):
+ """
+ **Create a port profile automation for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "createOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ 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"createOrganizationSwitchPortsProfilesAutomation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile automation in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the port profile automation.
+ - description (string): Text describing the port profile automation.
+ - fallbackProfile (object): Configuration settings for port profile
+ - rules (array): Configuration settings for port profile automation rules
+ - assignedSwitchPorts (array): assigned switch ports
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "updateOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "fallbackProfile",
+ "rules",
+ "assignedSwitchPorts",
+ ]
+ 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"updateOrganizationSwitchPortsProfilesAutomation: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesAutomation(self, organizationId: str, id: str):
+ """
+ **Delete an automation port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-automation
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "automations"],
+ "operation": "deleteOrganizationSwitchPortsProfilesAutomation",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/automations/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfilesNetworksAssignments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Fetch all Network - Smart Port Profile associations for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-networks-assignments
+
+ - 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): Number of records per page
+ - page (integer): Page number
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesNetworksAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments"
+
+ query_params = [
+ "perPage",
+ "page",
+ ]
+ 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"getOrganizationSwitchPortsProfilesNetworksAssignments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesNetworksAssignment(
+ self, organizationId: str, type: str, profile: dict, network: dict, **kwargs
+ ):
+ """
+ **Create Network and Smart Ports Profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - type (string): Type of association
+ - profile (object): Smart Port Profile object
+ - network (object): Network object
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "createOrganizationSwitchPortsProfilesNetworksAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments"
+
+ body_params = [
+ "type",
+ "profile",
+ "network",
+ ]
+ 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"createOrganizationSwitchPortsProfilesNetworksAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate(self, organizationId: str, items: list, **kwargs):
+ """
+ **Batch Create Network and Smart Ports Profile associations for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!batch-organization-switch-ports-profiles-networks-assignments-create
+
+ - organizationId (string): Organization ID
+ - items (array): Array of network and profile associations
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/batchCreate"
+
+ body_params = [
+ "items",
+ ]
+ 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"batchOrganizationSwitchPortsProfilesNetworksAssignmentsCreate: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete(self, organizationId: str, items: list, **kwargs):
+ """
+ **Bulk delete Network and Smart Port Profile associations**
+ https://developer.cisco.com/meraki/api-v1/#!bulk-organization-switch-ports-profiles-networks-assignments-delete
+
+ - organizationId (string): Organization ID
+ - items (array): Array of assignments to delete
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/bulkDelete"
+
+ body_params = [
+ "items",
+ ]
+ 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"bulkOrganizationSwitchPortsProfilesNetworksAssignmentsDelete: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesNetworksAssignment(self, organizationId: str, assignmentId: str):
+ """
+ **Delete Network and Smart Port profile association for a specific profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-networks-assignment
+
+ - organizationId (string): Organization ID
+ - assignmentId (string): Assignment ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "networks", "assignments"],
+ "operation": "deleteOrganizationSwitchPortsProfilesNetworksAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ assignmentId = urllib.parse.quote(str(assignmentId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/networks/assignments/{assignmentId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfilesOverviewByProfile(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profiles in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-overview-by-profile
+
+ - 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
+ - networkIds (array): Return the port profiles for the specified network(s)
+ - formattedStaticAssignments (boolean): Returns the list of static switchports that are assgined to the switchport profile
+ - searchQuery (string): Optional parameter to filter the result set by the search query
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "overview", "byProfile"],
+ "operation": "getOrganizationSwitchPortsProfilesOverviewByProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/overview/byProfile"
+
+ query_params = [
+ "networkIds",
+ "formattedStaticAssignments",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchPortsProfilesOverviewByProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsProfilesRadiusAssignments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the port profile RADIUS assignments**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-radius-assignments
+
+ - 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
+ - networkIds (array): If present, the networks to limit the assignments to
+ - portProfileIds (array): If present, the port profiles to limit the assignments to
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesRadiusAssignments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments"
+
+ query_params = [
+ "networkIds",
+ "portProfileIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "portProfileIds",
+ ]
+ 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"getOrganizationSwitchPortsProfilesRadiusAssignments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, network: dict, **kwargs):
+ """
+ **Create a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "createOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ 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"createOrganizationSwitchPortsProfilesRadiusAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str):
+ """
+ **Return a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "getOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - network (object): The network where the RADIUS name is assigned
+ - portProfile (object): The assigned port profile
+ - radius (object): The RADIUS options for this assignment
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "updateOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ body_params = [
+ "network",
+ "portProfile",
+ "radius",
+ ]
+ 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"updateOrganizationSwitchPortsProfilesRadiusAssignment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfilesRadiusAssignment(self, organizationId: str, id: str):
+ """
+ **Deletes a port profile RADIUS assignment**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profiles-radius-assignment
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles", "radius", "assignments"],
+ "operation": "deleteOrganizationSwitchPortsProfilesRadiusAssignment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/radius/assignments/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsProfile(self, organizationId: str, id: str):
+ """
+ **Get detailed information about a port profile**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "getOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationSwitchPortsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a port profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): The name of the profile.
+ - description (string): Text describing the profile.
+ - isOrganizationWide (boolean): The scope of the profile whether it is organization level or network level
+ - networks (object): The networks which are included/excluded in the profile
+ - networkId (string): The network identifier
+ - tags (array): Space-seperated list of tags
+ - defaultRadiusProfileName (string): When present, the default RADIUS attribute value for RADIUS-based port profile application
+ - authentication (object): Authentication settings for RADIUS-based port profile application.
+ - port (object): Configuration settings for port profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "updateOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "isOrganizationWide",
+ "networks",
+ "networkId",
+ "tags",
+ "defaultRadiusProfileName",
+ "authentication",
+ "port",
+ ]
+ 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"updateOrganizationSwitchPortsProfile: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchPortsProfile(self, organizationId: str, id: str):
+ """
+ **Delete a port profile from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-ports-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "ports", "profiles"],
+ "operation": "deleteOrganizationSwitchPortsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchPortsStatusesBySwitch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the switchports in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-by-switch
+
+ - 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 - 20. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "statuses", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsStatusesBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/statuses/bySwitch"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsStatusesBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsStatusesPacketsByDeviceByPort(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Switch port packets by device and port.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-statuses-packets-by-device-by-port
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 1200, 14400, 86400. The default is 14400. Interval is calculated if time params are provided.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "statuses", "packets", "byDevice", "byPort"],
+ "operation": "getOrganizationSwitchPortsStatusesPacketsByDeviceByPort",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/statuses/packets/byDevice/byPort"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationSwitchPortsStatusesPacketsByDeviceByPort: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationSwitchPortsTopologyDiscoveryByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-topology-discovery-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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "topology", "discovery", "byDevice"],
+ "operation": "getOrganizationSwitchPortsTopologyDiscoveryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/topology/discovery/byDevice"
+
+ query_params = [
+ "t0",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsTopologyDiscoveryByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return time-series digital optical monitoring (DOM) readings for ports on each DOM-enabled switch in an organization, in addition to thresholds for each relevant Small Form Factor Pluggable (SFP) module.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-transceivers-readings-history-by-switch
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - networkIds (array): Networks for which information should be gathered.
+ - serials (array): Optional parameter to filter usage by switch.
+ - portIds (array): Optional parameter to filter usage by port ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "transceivers", "readings", "history", "bySwitch"],
+ "operation": "getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/transceivers/readings/history/bySwitch"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "serials",
+ "portIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "portIds",
+ ]
+ 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"getOrganizationSwitchPortsTransceiversReadingsHistoryBySwitch: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchPortsUsageHistoryByDeviceByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the historical usage and traffic data of switchports in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-ports-usage-history-by-device-by-interval
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.
+ - 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.
+ - configurationUpdatedAfter (string): Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.
+ - mac (string): Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.
+ - macs (array): Optional parameter to filter items to switches that have one of the provided MAC addresses.
+ - name (string): Optional parameter to filter items to switches with names that contain the search term or are an exact match.
+ - networkIds (array): Optional parameter to filter items to switches in one of the provided networks.
+ - portProfileIds (array): Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.
+ - serial (string): Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.
+ - serials (array): Optional parameter to filter items to switches that have one of the provided serials.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "ports", "usage", "history", "byDevice", "byInterval"],
+ "operation": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "configurationUpdatedAfter",
+ "mac",
+ "macs",
+ "name",
+ "networkIds",
+ "portProfileIds",
+ "serial",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "macs",
+ "networkIds",
+ "portProfileIds",
+ "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"getOrganizationSwitchPortsUsageHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpAutonomousSystems(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the autonomous systems configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-autonomous-systems
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - numbers (array): Optional parameter to filter autonomous systems by number. This filter uses multiple exact matches.
+ - autonomousSystemIds (array): Optional parameter to filter autonomous systems by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "getOrganizationSwitchRoutingBgpAutonomousSystems",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpAutonomousSystems: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, number: int, **kwargs):
+ """
+ **Create an autonomous system**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "createOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ 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"createOrganizationSwitchRoutingBgpAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the autonomous systems configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-autonomous-systems-overview-by-autonomous-system
+
+ - 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 - 100. Default is 50.
+ - 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.
+ - numbers (array): Optional parameter to filter autonomous systems by number. This filter uses multiple exact matches.
+ - autonomousSystemIds (array): Optional parameter to filter autonomous systems by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems", "overview", "byAutonomousSystem"],
+ "operation": "getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/overview/byAutonomousSystem"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "numbers",
+ "autonomousSystemIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpAutonomousSystemsOverviewByAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str, **kwargs):
+ """
+ **Update an autonomous system**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ - number (integer): The autonomous system number (CLI: 'router bgp ')
+ - description (string): A description for the autonomous system
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "updateOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ autonomousSystemId = urllib.parse.quote(str(autonomousSystemId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ body_params = [
+ "number",
+ "description",
+ ]
+ 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"updateOrganizationSwitchRoutingBgpAutonomousSystem: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationSwitchRoutingBgpAutonomousSystem(self, organizationId: str, autonomousSystemId: str):
+ """
+ **Delete an autonomous system from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-autonomous-system
+
+ - organizationId (string): Organization ID
+ - autonomousSystemId (string): Autonomous system ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "autonomousSystems"],
+ "operation": "deleteOrganizationSwitchRoutingBgpAutonomousSystem",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ autonomousSystemId = urllib.parse.quote(str(autonomousSystemId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/autonomousSystems/{autonomousSystemId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterLists(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the filter lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter lists' by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter 'filter lists' by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterLists",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterLists: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy(
+ self, organizationId: str, filterList: dict, network: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a filter list, in addition to its associated rules**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-filter-lists-deploy
+
+ - organizationId (string): Organization ID
+ - filterList (object): Information regarding the filter list
+ - network (object): Information regarding the network the filter list belongs to
+ - rules (array): Information regarding the filter list rules
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/deploy"
+
+ body_params = [
+ "filterList",
+ "network",
+ "rules",
+ ]
+ 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"createOrganizationSwitchRoutingBgpFiltersFilterListsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the filter lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists-overview-by-filter-list
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter list' overviews by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter 'filter list' overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "filters", "filterLists", "overview", "byFilterList"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/overview/byFilterList"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterListsOverviewByFilterList: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpFiltersFilterListsRules(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the filter list rules configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-filter-lists-rules
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter 'filter list' rules by network ID. This filter uses multiple exact matches.
+ - ruleIds (array): Optional parameter to filter 'filter list' rules by ID. This filter uses multiple exact matches.
+ - filterListIds (array): Optional parameter to filter 'filter lists' by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists", "rules"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersFilterListsRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/rules"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "ruleIds",
+ "filterListIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "ruleIds",
+ "filterListIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersFilterListsRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationSwitchRoutingBgpFiltersFilterList(self, organizationId: str, listId: str):
+ """
+ **Delete a filter list**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-filter-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "filterLists"],
+ "operation": "deleteOrganizationSwitchRoutingBgpFiltersFilterList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ listId = urllib.parse.quote(str(listId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/filterLists/{listId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixLists(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the prefix lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix lists by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter prefix lists by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixLists",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixLists: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy(
+ self, organizationId: str, network: dict, prefixList: dict, rules: list, **kwargs
+ ):
+ """
+ **Create or update a prefix list, in addition to its associated rules**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-filters-prefix-lists-deploy
+
+ - organizationId (string): Organization ID
+ - network (object): Information regarding the network the prefix list belongs to
+ - prefixList (object): Information regarding the prefix list
+ - rules (array): Information regarding the prefix list rules
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/deploy"
+
+ body_params = [
+ "network",
+ "prefixList",
+ "rules",
+ ]
+ 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"createOrganizationSwitchRoutingBgpFiltersPrefixListsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the prefix lists configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists-overview-by-prefix-list
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix list overviews by network ID. This filter uses multiple exact matches.
+ - listIds (array): Optional parameter to filter prefix list overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "filters", "prefixLists", "overview", "byPrefixList"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/overview/byPrefixList"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "listIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "listIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixListsOverviewByPrefixList: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpFiltersPrefixListsRules(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the prefix list rules configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-filters-prefix-lists-rules
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter prefix list rules by network ID. This filter uses multiple exact matches.
+ - prefixListIds (array): Optional parameter to filter prefix list rules by prefix list ID. This filter uses multiple exact matches.
+ - ruleIds (array): Optional parameter to filter prefix list rules by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists", "rules"],
+ "operation": "getOrganizationSwitchRoutingBgpFiltersPrefixListsRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/rules"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "prefixListIds",
+ "ruleIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "prefixListIds",
+ "ruleIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpFiltersPrefixListsRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationSwitchRoutingBgpFiltersPrefixList(self, organizationId: str, listId: str):
+ """
+ **Delete a prefix list**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-filters-prefix-list
+
+ - organizationId (string): Organization ID
+ - listId (string): List ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "filters", "prefixLists"],
+ "operation": "deleteOrganizationSwitchRoutingBgpFiltersPrefixList",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ listId = urllib.parse.quote(str(listId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/filters/prefixLists/{listId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingBgpPeersGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the BGP peer groups configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer groups by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer groups by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer groups by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer groups by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroups: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for multiple peer groups or address families configured in the given organization, including profile information, peer group address family information, neighbors, and listen ranges**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-address-families-deployments
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer group address family deployments by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group address family deployments by peer group
+ - addressFamilyIds (array): Optional parameter to filter peer group address family deployments by address family
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "addressFamilies", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/addressFamilies/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "addressFamilyIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "addressFamilyIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsAddressFamiliesDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpPeersGroupsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ network: dict,
+ peerGroup: dict,
+ peerGroupAddressFamilyBindingProfile: dict,
+ peerGroupProfile: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a peer group, in addition to an associated peer group profile, peer group address family binding, peer group address family binding profile and routing policies associated with the peer group**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-groups-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family the peer group address family binding belongs to
+ - network (object): Information regarding the network the peer group profile belongs to
+ - peerGroup (object): Information regarding the peer group
+ - peerGroupAddressFamilyBindingProfile (object): Information regarding the peer group address family binding profile
+ - peerGroupProfile (object): Information regarding the peer group profile
+ - policies (array): Information regarding the routing policies
+ - router (object): Information regarding the router this peer group belongs to
+ - peerGroupAddressFamilyBinding (object): Information regarding the peer group address family binding. Only required when updating.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpPeersGroupsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/deploy"
+
+ body_params = [
+ "addressFamily",
+ "network",
+ "peerGroup",
+ "peerGroupAddressFamilyBinding",
+ "peerGroupAddressFamilyBindingProfile",
+ "peerGroupProfile",
+ "policies",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpPeersGroupsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for peer groups configured in the given organization, including peer group address family information, as well as routing policies**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter peer group deployments by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer group deployments by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer group deployments by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group deployments by peer group ID. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each peer group by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each peer group by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "groups", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the BGP peer groups configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-groups-overview-by-peer-group
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter peer group overviews by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter peer group overviews by router ID. This filter uses multiple exact matches.
+ - profileIds (array): Optional parameter to filter peer group overviews by profile ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter peer group overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "peers", "groups", "overview", "byPeerGroup"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/groups/overview/byPeerGroup"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "profileIds",
+ "peerGroupIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersGroupsOverviewByPeerGroup: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersListenRanges(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the listen ranges configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-listen-ranges
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter listen ranges by network ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter listen ranges by router ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter listen ranges by peer group ID. This filter uses multiple exact matches.
+ - listenRangeIds (array): Optional parameter to filter listen ranges by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "listenRanges"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersListenRanges",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/listenRanges"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "routerIds",
+ "peerGroupIds",
+ "listenRangeIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "routerIds",
+ "peerGroupIds",
+ "listenRangeIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersListenRanges: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpPeersNeighbors(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the neighbors configured for BGP in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-neighbors
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter neighbors by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter neighbors by peer group ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter neighbors by router ID. This filter uses multiple exact matches.
+ - neighborIds (array): Optional parameter to filter neighbors by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersNeighbors",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersNeighbors: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpPeersNeighborsDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ neighbor: dict,
+ neighborAddressFamilyBinding: dict,
+ peerGroup: dict,
+ policies: list,
+ router: dict,
+ **kwargs,
+ ):
+ """
+ **Create or update a neighor, in addition to an associated neighbor address family binding and routing policies associated with the neighbor**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-peers-neighbors-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family this binding is bound to
+ - neighbor (object): Information regarding the BPG neighbor
+ - neighborAddressFamilyBinding (object): Information regarding the neighbor address family binding
+ - peerGroup (object): Information regarding the peer group this neighbor belongs to
+ - policies (array): Information regarding the routing policies related to the neighbor
+ - router (object): Information regarding the router this neighbor peers with
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpPeersNeighborsDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors/deploy"
+
+ body_params = [
+ "addressFamily",
+ "neighbor",
+ "neighborAddressFamilyBinding",
+ "peerGroup",
+ "policies",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpPeersNeighborsDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpPeersNeighborsDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for neighbors configured in the given organization, including address family information, as well as routing policies**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-peers-neighbors-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter neighbor deployments by network ID. This filter uses multiple exact matches.
+ - peerGroupIds (array): Optional parameter to filter neighbor deployments by peer group ID. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter neighbor deployments by router ID. This filter uses multiple exact matches.
+ - neighborIds (array): Optional parameter to filter neighbor deployments by neighbor ID. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each neighbor by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each neighbor by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "peers", "neighbors", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpPeersNeighborsDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/peers/neighbors/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "peerGroupIds",
+ "routerIds",
+ "neighborIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpPeersNeighborsDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpRouters(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the routers configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers
+
+ - 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 50.
+ - 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 parameter to filter routers by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter routers by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter routers by switch name. The filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter routers by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter routers by ID. This filter uses multiple exact matches.
+ - switchStackIds (array): Optional parameter to filter routers by switch stack id. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers"],
+ "operation": "getOrganizationSwitchRoutingBgpRouters",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRouters: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpRoutersDeploy(
+ self,
+ organizationId: str,
+ addressFamily: dict,
+ addressFamilyPrefixes: list,
+ addressFamilyProfile: dict,
+ autonomousSystem: dict,
+ router: dict,
+ switch: dict,
+ **kwargs,
+ ):
+ """
+ **Create a BGP router, in addition to an associated address family, address family prefixes, and address family profile**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - addressFamilyPrefixes (array): The list of network prefixes to which the address family applies
+ - addressFamilyProfile (object): Information regarding the profile applied to the address family
+ - autonomousSystem (object): Information regarding the router's autonomous system
+ - router (object): Information regarding the BPG router
+ - switch (object): The router's switch node. When the router is part of a switch stack, this is the switch stack's active node
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpRoutersDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "addressFamilyPrefixes",
+ "addressFamilyProfile",
+ "autonomousSystem",
+ "router",
+ "switch",
+ ]
+ 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"createOrganizationSwitchRoutingBgpRoutersDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationSwitchRoutingBgpRoutersDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List all BGP deployment information for routers configured in a given organization, including all address families**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers-deployments
+
+ - 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 - 50. Default is 20.
+ - 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 parameter to filter router deployments by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter router deployments by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter router deployments by switch name. The filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter router deployments by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter router deployments by router ID. This filter uses multiple exact matches.
+ - switchStackIds (array): Optional parameter to filter router deployments by switch stack id. This filter uses multiple exact matches.
+ - afi (string): Optional parameter to filter deployments on each router by address family identifier (AFI).
+ - safi (string): Optional parameter to filter deployments on each router by subsequent address family identifier (SAFI).
+ """
+
+ kwargs.update(locals())
+
+ if "afi" in kwargs:
+ options = ["ipv4"]
+ assert kwargs["afi"] in options, f'''"afi" cannot be "{kwargs["afi"]}", & must be set to one of: {options}'''
+ if "safi" in kwargs:
+ options = ["unicast"]
+ assert kwargs["safi"] in options, f'''"safi" cannot be "{kwargs["safi"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "deployments"],
+ "operation": "getOrganizationSwitchRoutingBgpRoutersDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ "afi",
+ "safi",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ "switchStackIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRoutersDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchRoutingBgpRoutersOverviewByRouter(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the overview of the routers configured in the given organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-bgp-routers-overview-by-router
+
+ - 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 - 100. Default is 50.
+ - 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 parameter to filter router overviews by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter router overviews by serial. This filter uses multiple exact matches.
+ - switchNames (array): Optional parameter to filter router overviews by switch name. This filter uses multiple exact matches.
+ - asNumbers (array): Optional parameter to filter router overviews by autonomous system number. This filter uses multiple exact matches.
+ - routerIds (array): Optional parameter to filter router overviews by ID. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "monitor", "routing", "bgp", "routers", "overview", "byRouter"],
+ "operation": "getOrganizationSwitchRoutingBgpRoutersOverviewByRouter",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/overview/byRouter"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "switchNames",
+ "asNumbers",
+ "routerIds",
+ ]
+ 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"getOrganizationSwitchRoutingBgpRoutersOverviewByRouter: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationSwitchRoutingBgpRoutersPeersDeploy(
+ self, organizationId: str, addressFamily: dict, peerGroups: list, router: dict, **kwargs
+ ):
+ """
+ **Create and update listen ranges, update peers' enabled flag, and delete peer groups for a BGP router**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-switch-routing-bgp-routers-peers-deploy
+
+ - organizationId (string): Organization ID
+ - addressFamily (object): Information regarding the address family
+ - peerGroups (array): Information regarding the peer group peers for a router's peer group
+ - router (object): Information regarding the BPG router
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers", "peers", "deploy"],
+ "operation": "createOrganizationSwitchRoutingBgpRoutersPeersDeploy",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/peers/deploy"
+
+ body_params = [
+ "addressFamily",
+ "peerGroups",
+ "router",
+ ]
+ 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"createOrganizationSwitchRoutingBgpRoutersPeersDeploy: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def deleteOrganizationSwitchRoutingBgpRouter(self, organizationId: str, routerId: str):
+ """
+ **Delete a router from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-switch-routing-bgp-router
+
+ - organizationId (string): Organization ID
+ - routerId (string): Router ID
+ """
+
+ metadata = {
+ "tags": ["switch", "configure", "routing", "bgp", "routers"],
+ "operation": "deleteOrganizationSwitchRoutingBgpRouter",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ routerId = urllib.parse.quote(str(routerId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/bgp/routers/{routerId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationSwitchRoutingStaticRoutes(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List layer 3 static routes for switches within an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-routing-static-routes
+
+ - 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
+ - networkIds (array): Optional parameter to filter the result set by the included set of network IDs
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 20.
+ - 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": ["switch", "monitor", "routing", "staticRoutes"],
+ "operation": "getOrganizationSwitchRoutingStaticRoutes",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/routing/staticRoutes"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationSwitchRoutingStaticRoutes: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchSpanningTree(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns Spanning Tree configuration settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-spanning-tree
+
+ - 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 parameter to filter by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["switch", "configure", "spanningTree"],
+ "operation": "getOrganizationSwitchSpanningTree",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/spanningTree"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationSwitchSpanningTree: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationSwitchStacksPortsMirrorsByStack(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the port mirror configurations in an organization by switch**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-switch-stacks-ports-mirrors-by-stack
+
+ - 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
+ - ids (array): Return the port mirror configuration for the specified stack(s)
+ - networkIds (array): Return the port mirror configurations for the specified network(s)
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100.
+ - 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": ["switch", "configure", "stacks", "ports", "mirrors", "byStack"],
+ "operation": "getOrganizationSwitchStacksPortsMirrorsByStack",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/switch/stacks/ports/mirrors/byStack"
+
+ query_params = [
+ "ids",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ids",
+ "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"getOrganizationSwitchStacksPortsMirrorsByStack: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
diff --git a/meraki/api/users.py b/meraki/api/users.py
new file mode 100644
index 0000000..7efa68e
--- /dev/null
+++ b/meraki/api/users.py
@@ -0,0 +1,838 @@
+import urllib
+
+
+class Users(object):
+ def __init__(self, session):
+ super(Users, self).__init__()
+ self._session = session
+
+ def getOrganizationIamUsersAuthorizations(
+ self, organizationId: str, userIds: list, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List specific authorizations for the list of Meraki end users.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-authorizations
+
+ - organizationId (string): Organization ID
+ - userIds (array): Meraki end user IDs
+ - 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 - 50. Default is 10.
+ - 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": ["users", "configure", "iam", "authorizations"],
+ "operation": "getOrganizationIamUsersAuthorizations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "userIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "userIds",
+ ]
+ 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"getOrganizationIamUsersAuthorizations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationIamUsersAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Authorize a Meraki end user for an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - idpUserId (string): Meraki end user's ID
+ - startsAt (string): Start time of the desired access for the authorization. Defaults to now.
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "createOrganizationIamUsersAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "email",
+ "idpUserId",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ 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"createOrganizationIamUsersAuthorization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationIamUsersAuthorizations(self, organizationId: str, **kwargs):
+ """
+ **Update a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-authorizations
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ - email (string): Meraki end user's email
+ - authZone (object): Auth zone
+ - startsAt (string): Start time of the desired access for the authorization
+ - expiresAt (string): Expiration time of the desired access for the authorization
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "updateOrganizationIamUsersAuthorizations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations"
+
+ body_params = [
+ "authorizationId",
+ "email",
+ "authZone",
+ "startsAt",
+ "expiresAt",
+ ]
+ 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"updateOrganizationIamUsersAuthorizations: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def revokeOrganizationIamUsersAuthorizationsAuthorization(self, organizationId: str, authZone: dict, **kwargs):
+ """
+ **Revoke a Meraki end user's access to an auth zone.**
+ https://developer.cisco.com/meraki/api-v1/#!revoke-organization-iam-users-authorizations-authorization
+
+ - organizationId (string): Organization ID
+ - authZone (object): Auth zone
+ - email (string): Meraki end user's email
+ - authorizationId (string): Authorization ID
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations", "authorization"],
+ "operation": "revokeOrganizationIamUsersAuthorizationsAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/authorization/revoke"
+
+ body_params = [
+ "email",
+ "authorizationId",
+ "authZone",
+ ]
+ 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"revokeOrganizationIamUsersAuthorizationsAuthorization: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersAuthorizationsZones(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List all of the available auth zones for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-authorizations-zones
+
+ - 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 10 - 1000. Default is 100.
+ - 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": ["users", "configure", "iam", "authorizations", "zones"],
+ "operation": "getOrganizationIamUsersAuthorizationsZones",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/zones"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationIamUsersAuthorizationsZones: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationIamUsersAuthorization(self, organizationId: str, authorizationId: str):
+ """
+ **Delete an authorization for a Meraki end user.**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-authorization
+
+ - organizationId (string): Organization ID
+ - authorizationId (string): Authorization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "authorizations"],
+ "operation": "deleteOrganizationIamUsersAuthorization",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ authorizationId = urllib.parse.quote(str(authorizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/authorizations/{authorizationId}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationIamUsersIdp(self, organizationId: str, name: str, type: str, idpConfig: dict, **kwargs):
+ """
+ **Create an identity provider for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the identity provider
+ - type (string): Type of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ - description (string): Optional. Description of the identity provider
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider.
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["Azure AD"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "createOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps"
+
+ body_params = [
+ "name",
+ "type",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ 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"createOrganizationIamUsersIdp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def searchOrganizationIdpGroups(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Search all IdP groups for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!search-organization-idp-groups
+
+ - 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
+ - idpIds (array): Filter IdP groups by IdP ID(s). Multiple IdP IDs can be passed as a comma separated list.
+ - authZone (object): Auth zone
+ - searchQuery (string): Fuzzy filter by group name
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.
+ - 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": ["users", "configure", "iam", "idps", "groups", "search"],
+ "operation": "searchOrganizationIdpGroups",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/groups/search"
+
+ body_params = [
+ "idpIds",
+ "authZone",
+ "searchQuery",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"searchOrganizationIdpGroups: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpsProductIntegrations(self, organizationId: str):
+ """
+ **List all available IdP Product Integration urls for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-product-integrations
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "productIntegrations"],
+ "operation": "getOrganizationIamUsersIdpsProductIntegrations",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/productIntegrations"
+
+ return self._session.get(metadata, resource)
+
+ def createOrganizationIamUsersIdpsSearch(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Search all IdPs for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-search
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpIds (array): Filter identity providers by id(s). Multiple ids can be passed as a comma separated list.
+ - type (string): Filter identity providers by idp type.
+ - authZone (object): Filter by auth zone
+ """
+
+ kwargs.update(locals())
+
+ if "type" in kwargs:
+ options = ["Azure AD"]
+ assert kwargs["type"] in options, f'''"type" cannot be "{kwargs["type"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "search"],
+ "operation": "createOrganizationIamUsersIdpsSearch",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/search"
+
+ body_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpIds",
+ "type",
+ "authZone",
+ ]
+ 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"createOrganizationIamUsersIdpsSearch: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpsSyncHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the IdP sync status records for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-sync-history
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpId (string): Identity provider ID. Optional.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "history"],
+ "operation": "getOrganizationIamUsersIdpsSyncHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/sync/history"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpId",
+ ]
+ 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"getOrganizationIamUsersIdpsSyncHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationIamUsersIdpsSyncLatest(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get the latest IdP sync status records for all IdPs in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idps-sync-latest
+
+ - 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 - 100. Default is 10.
+ - 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.
+ - idpIds (array): Identity provider IDs. Optional.
+ - authZoneId (string): Auth Zone ID
+ - authZoneType (string): Auth Zone type
+ """
+
+ kwargs.update(locals())
+
+ if "authZoneType" in kwargs:
+ options = ["access_policy", "node_group", "product", "ssid"]
+ assert kwargs["authZoneType"] in options, (
+ f'''"authZoneType" cannot be "{kwargs["authZoneType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "latest"],
+ "operation": "getOrganizationIamUsersIdpsSyncLatest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/sync/latest"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "idpIds",
+ "authZoneId",
+ "authZoneType",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "idpIds",
+ ]
+ 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"getOrganizationIamUsersIdpsSyncLatest: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationIamUsersIdpsTestConnectivity(self, organizationId: str, **kwargs):
+ """
+ **Test connectivity to an Entra ID identity provider.**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-test-connectivity
+
+ - organizationId (string): Organization ID
+ - idpId (string): Id of the identity provider
+ - idpConfig (object): Identity provider configuration. Required for external identity providers.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "testConnectivity"],
+ "operation": "createOrganizationIamUsersIdpsTestConnectivity",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/testConnectivity"
+
+ body_params = [
+ "idpId",
+ "idpConfig",
+ ]
+ 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"createOrganizationIamUsersIdpsTestConnectivity: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def createOrganizationIamUsersIdpsUser(self, organizationId: str, **kwargs):
+ """
+ **Create a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "createOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ 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"createOrganizationIamUsersIdpsUser: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationIamUsersIdpsUser(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update a Meraki user**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - displayName (string): A human-readable identifier for the created user.
+ - email (string): An email address identified with the user.
+ - password (string): The password for the user account.
+ - sendPassword (boolean): If true, sends an email with the password to the user.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "updateOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ body_params = [
+ "displayName",
+ "email",
+ "password",
+ "sendPassword",
+ ]
+ 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"updateOrganizationIamUsersIdpsUser: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationIamUsersIdpsUser(self, organizationId: str, id: str):
+ """
+ **Delete a Meraki end user**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idps-user
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "deleteOrganizationIamUsersIdpsUser",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/users/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def createOrganizationIamUsersIdpSync(self, organizationId: str, idpId: str, **kwargs):
+ """
+ **Trigger an IdP sync for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-iam-users-idp-sync
+
+ - organizationId (string): Organization ID
+ - idpId (string): Idp ID
+ - emails (array): List of emails to sync
+ - force (boolean): Force a complete sync of all users and groups
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync"],
+ "operation": "createOrganizationIamUsersIdpSync",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ idpId = urllib.parse.quote(str(idpId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{idpId}/sync"
+
+ body_params = [
+ "emails",
+ "force",
+ ]
+ 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"createOrganizationIamUsersIdpSync: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersIdpSyncLatest(self, organizationId: str, idpId: str):
+ """
+ **Get the latest IdP sync status for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idp-sync-latest
+
+ - organizationId (string): Organization ID
+ - idpId (string): Idp ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "sync", "latest"],
+ "operation": "getOrganizationIamUsersIdpSyncLatest",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ idpId = urllib.parse.quote(str(idpId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{idpId}/sync/latest"
+
+ return self._session.get(metadata, resource)
+
+ def updateOrganizationIamUsersIdp(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the identity provider
+ - description (string): Description of the identity provider
+ - idpConfig (object): Identity provider configuration. You can update individual attributes
+ - syncType (string): The synchronization method for the identity provider. Set to 'proactive' to sync all users and groups from your identity provider. Set to 'null' for on-demand user and group provisioning.
+ """
+
+ kwargs.update(locals())
+
+ if "syncType" in kwargs:
+ options = ["proactive"]
+ assert kwargs["syncType"] in options, (
+ f'''"syncType" cannot be "{kwargs["syncType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "updateOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ body_params = [
+ "name",
+ "description",
+ "idpConfig",
+ "syncType",
+ ]
+ 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"updateOrganizationIamUsersIdp: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationIamUsersIdp(self, organizationId: str, id: str):
+ """
+ **Delete a identity provider from an organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-iam-users-idp
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps"],
+ "operation": "deleteOrganizationIamUsersIdp",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationIamUsersIdpAuthZones(self, organizationId: str, id: str):
+ """
+ **List all auth zones for an identity provider**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-idp-auth-zones
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "idps", "authZones"],
+ "operation": "getOrganizationIamUsersIdpAuthZones",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/idps/{id}/authZones"
+
+ return self._session.get(metadata, resource)
+
+ def searchOrganizationUsers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the end users and their associated identity providers for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!search-organization-users
+
+ - 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 - 50. Default is 10.
+ - 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.
+ - userIds (array): Filter end users by id(s).
+ - idpIds (array): Filter by identity provider id(s).
+ - groupIds (array): Filter by identity provider group id(s).
+ - accessTypes (array): Filter by access type(s).
+ - searchQuery (string): Fuzzy filter by display name, user name and email.
+ - statuses (array): Filter by user status(es).
+ - sortKey (string): Optional parameter to specify the field used to sort results. (default: username)
+ - sortOrder (string): Optional parameter to specify the sort order. (default: asc)
+ """
+
+ kwargs.update(locals())
+
+ if "sortKey" in kwargs:
+ options = ["created_at", "updated_at", "username"]
+ assert kwargs["sortKey"] in options, (
+ f'''"sortKey" cannot be "{kwargs["sortKey"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "search"],
+ "operation": "searchOrganizationUsers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/search"
+
+ body_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "userIds",
+ "idpIds",
+ "groupIds",
+ "accessTypes",
+ "searchQuery",
+ "statuses",
+ "sortKey",
+ "sortOrder",
+ ]
+ 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"searchOrganizationUsers: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationIamUsersSummaryPanel(self, organizationId: str):
+ """
+ **Get the count of users and user groups for an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-iam-users-summary-panel
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["users", "configure", "iam", "summaryPanel"],
+ "operation": "getOrganizationIamUsersSummaryPanel",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/iam/users/summaryPanel"
+
+ return self._session.get(metadata, resource)
diff --git a/meraki/api/wireless.py b/meraki/api/wireless.py
index 6ec80c8..0390741 100644
--- a/meraki/api/wireless.py
+++ b/meraki/api/wireless.py
@@ -68,6 +68,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
Dashboard's automatically generated value.
- minor (integer): Desired minor value of the beacon. If the value is set to null it will reset to
Dashboard's automatically generated value.
+ - transmit (object): Transmit settings including power, interval, and advertised power.
"""
kwargs.update(locals())
@@ -83,6 +84,7 @@ def updateDeviceWirelessBluetoothSettings(self, serial: str, **kwargs):
"uuid",
"major",
"minor",
+ "transmit",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -196,6 +198,23 @@ def updateDeviceWirelessElectronicShelfLabel(self, serial: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getDeviceWirelessHealthScores(self, serial: str):
+ """
+ **Fetch the health scores for a given AP on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-health-scores
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "healthScores"],
+ "operation": "getDeviceWirelessHealthScores",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getDeviceWirelessLatencyStats(self, serial: str, **kwargs):
"""
**Aggregated latency info for a given AP on this network**
@@ -248,6 +267,123 @@ def getDeviceWirelessLatencyStats(self, serial: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getDeviceWirelessRadioAfcPosition(self, serial: str):
+ """
+ **Return the position for a wireless device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-afc-position
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position"],
+ "operation": "getDeviceWirelessRadioAfcPosition",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/position"
+
+ return self._session.get(metadata, resource)
+
+ def updateDeviceWirelessRadioAfcPosition(self, serial: str, **kwargs):
+ """
+ **Update the position attributes for this device**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-afc-position
+
+ - serial (string): Serial
+ - height (object): Height attributes
+ - gps (object): GPS attributes
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position"],
+ "operation": "updateDeviceWirelessRadioAfcPosition",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/position"
+
+ body_params = [
+ "height",
+ "gps",
+ ]
+ 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"updateDeviceWirelessRadioAfcPosition: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getDeviceWirelessRadioAfcPowerLimits(self, serial: str):
+ """
+ **Return the AFC power limits for a wireless device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-afc-power-limits
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "powerLimits"],
+ "operation": "getDeviceWirelessRadioAfcPowerLimits",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/afc/powerLimits"
+
+ return self._session.get(metadata, resource)
+
+ def getDeviceWirelessRadioOverrides(self, serial: str):
+ """
+ **Return the radio overrides of a device**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-overrides
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "overrides"],
+ "operation": "getDeviceWirelessRadioOverrides",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/overrides"
+
+ return self._session.get(metadata, resource)
+
+ def updateDeviceWirelessRadioOverrides(self, serial: str, **kwargs):
+ """
+ **Update 2.4 GHz, 5 GHz, and 6 GHz radio settings (channel, channel width, power, and enable/disable) that override RF profiles.**
+ https://developer.cisco.com/meraki/api-v1/#!update-device-wireless-radio-overrides
+
+ - serial (string): Serial
+ - rfProfile (object): This device's RF profile
+ - radios (array): Radio overrides.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "overrides"],
+ "operation": "updateDeviceWirelessRadioOverrides",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/overrides"
+
+ body_params = [
+ "rfProfile",
+ "radios",
+ ]
+ 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"updateDeviceWirelessRadioOverrides: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
def getDeviceWirelessRadioSettings(self, serial: str):
"""
**Return the manually configured radio settings overrides of a device, which take precedence over RF profiles.**
@@ -300,6 +436,23 @@ def updateDeviceWirelessRadioSettings(self, serial: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def getDeviceWirelessRadioStatus(self, serial: str):
+ """
+ **Show the status of this device's radios**
+ https://developer.cisco.com/meraki/api-v1/#!get-device-wireless-radio-status
+
+ - serial (string): Serial
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "status"],
+ "operation": "getDeviceWirelessRadioStatus",
+ }
+ serial = urllib.parse.quote(str(serial), safe="")
+ resource = f"/devices/{serial}/wireless/radio/status"
+
+ return self._session.get(metadata, resource)
+
def getDeviceWirelessStatus(self, serial: str):
"""
**Return the SSID statuses of an access point**
@@ -655,6 +808,7 @@ def updateNetworkWirelessBluetoothSettings(self, networkId: str, **kwargs):
- majorMinorAssignmentMode (string): The way major and minor number should be assigned to nodes in the network. ('Unique', 'Non-unique')
- major (integer): The major number to be used in the beacon identifier. Only valid in 'Non-unique' mode.
- minor (integer): The minor number to be used in the beacon identifier. Only valid in 'Non-unique' mode.
+ - transmit (object): Transmit settings including power, interval, and advertised power.
"""
kwargs.update(locals())
@@ -679,6 +833,7 @@ def updateNetworkWirelessBluetoothSettings(self, networkId: str, **kwargs):
"majorMinorAssignmentMode",
"major",
"minor",
+ "transmit",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -848,6 +1003,23 @@ def getNetworkWirelessClientsConnectionStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientsHealthScores(self, networkId: str):
+ """
+ **Fetch the health scores for all clients on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-clients-health-scores
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "healthScores"],
+ "operation": "getNetworkWirelessClientsHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessClientsLatencyStats(self, networkId: str, **kwargs):
"""
**Aggregated latency info for this network, grouped by clients**
@@ -902,6 +1074,53 @@ def getNetworkWirelessClientsLatencyStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientsOnboardingHistory(self, networkId: str, **kwargs):
+ """
+ **Return counts of distinct wireless clients connecting to a network over time**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-clients-onboarding-history
+
+ - networkId (string): Network ID
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - resolution (integer): The time resolution in seconds for returned data. The valid resolutions are: 300. The default is 300.
+ - band (string): Filter results by band (either '2.4', '5' or '6'); this cannot be combined with the SSID filter.
+ - ssid (integer): Filter results by SSID number; this cannot be combined with the band filter.
+ """
+
+ kwargs.update(locals())
+
+ if "band" in kwargs:
+ options = ["2.4", "5", "6"]
+ assert kwargs["band"] in options, f'''"band" cannot be "{kwargs["band"]}", & must be set to one of: {options}'''
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "onboardingHistory"],
+ "operation": "getNetworkWirelessClientsOnboardingHistory",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/onboardingHistory"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "resolution",
+ "band",
+ "ssid",
+ ]
+ 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"getNetworkWirelessClientsOnboardingHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
def getNetworkWirelessClientConnectionStats(self, networkId: str, clientId: str, **kwargs):
"""
**Aggregated connectivity info for a given client on this network**
@@ -1038,6 +1257,25 @@ def getNetworkWirelessClientConnectivityEvents(
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getNetworkWirelessClientHealthScores(self, networkId: str, clientId: str):
+ """
+ **Fetch the health scores for a given client on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-client-health-scores
+
+ - networkId (string): Network ID
+ - clientId (string): Client ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "healthScores"],
+ "operation": "getNetworkWirelessClientHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/{clientId}/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessClientLatencyHistory(self, networkId: str, clientId: str, **kwargs):
"""
**Return the latency history for a client**
@@ -1133,6 +1371,53 @@ def getNetworkWirelessClientLatencyStats(self, networkId: str, clientId: str, **
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessClientRoamingHistory(self, networkId: str, clientId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get client roam events within the specified timespan.**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-client-roaming-history
+
+ - networkId (string): Network ID
+ - clientId (string): Client 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "roaming", "history"],
+ "operation": "getNetworkWirelessClientRoamingHistory",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/networks/{networkId}/wireless/clients/{clientId}/roaming/history"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getNetworkWirelessClientRoamingHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getNetworkWirelessConnectionStats(self, networkId: str, **kwargs):
"""
**Aggregated connectivity info for this network**
@@ -1284,6 +1569,23 @@ def getNetworkWirelessDevicesConnectionStats(self, networkId: str, **kwargs):
return self._session.get(metadata, resource, params)
+ def getNetworkWirelessDevicesHealthScores(self, networkId: str):
+ """
+ **Fetch the health scores of all APs on this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-devices-health-scores
+
+ - networkId (string): Network ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "healthScores"],
+ "operation": "getNetworkWirelessDevicesHealthScores",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/devices/healthScores"
+
+ return self._session.get(metadata, resource)
+
def getNetworkWirelessDevicesLatencyStats(self, networkId: str, **kwargs):
"""
**Aggregated latency info for this network, grouped by node**
@@ -1811,6 +2113,41 @@ def updateNetworkWirelessLocationScanning(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
+ def updateNetworkWirelessLocationWayfinding(self, networkId: str, **kwargs):
+ """
+ **Change client wayfinding settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-location-wayfinding
+
+ - networkId (string): Network ID
+ - enabled (boolean): Whether to enable client wayfinding on that network (only supported on Wireless networks).
+ - maintenanceWindow (object): Maintenance window during which optimization might take place to improve location accuracy.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "wayfinding"],
+ "operation": "updateNetworkWirelessLocationWayfinding",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/location/wayfinding"
+
+ body_params = [
+ "enabled",
+ "maintenanceWindow",
+ ]
+ 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"updateNetworkWirelessLocationWayfinding: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
def getNetworkWirelessMeshStatuses(self, networkId: str, total_pages=1, direction="next", **kwargs):
"""
**List wireless mesh statuses for repeaters**
@@ -1848,32 +2185,26 @@ def getNetworkWirelessMeshStatuses(self, networkId: str, total_pages=1, directio
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateNetworkWirelessRadioRrm(self, networkId: str, **kwargs):
+ def updateNetworkWirelessOpportunisticPcap(self, networkId: str, **kwargs):
"""
- **Update the AutoRF settings for a wireless network**
- https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-rrm
+ **Update the Opportunistic Pcap settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-opportunistic-pcap
- networkId (string): Network ID
- - busyHour (object): Busy Hour settings
- - channel (object): Channel settings
- - fra (object): FRA settings
- - ai (object): AI settings
+ - enablement (object): Enablement settings
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "radio", "rrm"],
- "operation": "updateNetworkWirelessRadioRrm",
+ "tags": ["wireless", "configure", "opportunisticPcap"],
+ "operation": "updateNetworkWirelessOpportunisticPcap",
}
networkId = urllib.parse.quote(str(networkId), safe="")
- resource = f"/networks/{networkId}/wireless/radio/rrm"
+ resource = f"/networks/{networkId}/wireless/opportunisticPcap"
body_params = [
- "busyHour",
- "channel",
- "fra",
- "ai",
+ "enablement",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -1881,18 +2212,94 @@ def updateNetworkWirelessRadioRrm(self, networkId: 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"updateNetworkWirelessRadioRrm: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"updateNetworkWirelessOpportunisticPcap: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.put(metadata, resource, payload)
- def getNetworkWirelessRfProfiles(self, networkId: str, **kwargs):
+ def updateNetworkWirelessRadioAutoRf(self, networkId: str, **kwargs):
"""
- **List RF profiles for this network**
- https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-rf-profiles
+ **Update the AutoRF settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-auto-rf
- networkId (string): Network ID
- - includeTemplateProfiles (boolean): If the network is bound to a template, this parameter controls whether or not the non-basic RF profiles defined on the template should be included in the response alongside the non-basic profiles defined on the bound network. Defaults to false.
- """
+ - busyHour (object): Busy Hour settings
+ - channel (object): Channel settings
+ - fra (object): FRA settings
+ - aiRrm (object): AI-RRM settings
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf"],
+ "operation": "updateNetworkWirelessRadioAutoRf",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/radio/autoRf"
+
+ body_params = [
+ "busyHour",
+ "channel",
+ "fra",
+ "aiRrm",
+ ]
+ 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"updateNetworkWirelessRadioAutoRf: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def updateNetworkWirelessRadioRrm(self, networkId: str, **kwargs):
+ """
+ **Update the AutoRF settings for a wireless network**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-radio-rrm
+
+ - networkId (string): Network ID
+ - busyHour (object): Busy Hour settings
+ - channel (object): Channel settings
+ - fra (object): FRA settings
+ - ai (object): AI settings
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "rrm"],
+ "operation": "updateNetworkWirelessRadioRrm",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ resource = f"/networks/{networkId}/wireless/radio/rrm"
+
+ body_params = [
+ "busyHour",
+ "channel",
+ "fra",
+ "ai",
+ ]
+ 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"updateNetworkWirelessRadioRrm: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.put(metadata, resource, payload)
+
+ def getNetworkWirelessRfProfiles(self, networkId: str, **kwargs):
+ """
+ **List RF profiles for this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-network-wireless-rf-profiles
+
+ - networkId (string): Network ID
+ - includeTemplateProfiles (boolean): If the network is bound to a template, this parameter controls whether or not the non-basic RF profiles defined on the template should be included in the response alongside the non-basic profiles defined on the bound network. Defaults to false.
+ """
kwargs.update(locals())
@@ -2252,6 +2659,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- number (string): Number
- name (string): The name of the SSID
- enabled (boolean): Whether or not the SSID is enabled
+ - localAuth (boolean): Extended local auth flag for Enterprise NAC
- authMode (string): The association control method for the SSID ('open', 'open-enhanced', 'psk', 'open-with-radius', 'open-enhanced-with-radius', 'open-with-nac', '8021x-meraki', '8021x-nac', '8021x-radius', '8021x-google', '8021x-entra', '8021x-localradius', 'ipsk-with-radius', 'ipsk-without-radius', 'ipsk-with-nac' or 'ipsk-with-radius-easy-psk')
- enterpriseAdminAccess (string): Whether or not an SSID is accessible by 'enterprise' administrators ('access disabled' or 'access enabled')
- ssidAdminAccessible (boolean): SSID Administrator access status
@@ -2283,6 +2691,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
- radiusAccountingInterimInterval (integer): The interval (in seconds) in which accounting information is updated and sent to the RADIUS accounting server.
- radiusAttributeForGroupPolicies (string): Specify the RADIUS attribute used to look up group policies ('Filter-Id', 'Reply-Message', 'Airespace-ACL-Name' or 'Aruba-User-Role'). Access points must receive this attribute in the RADIUS Access-Accept message
- ipAssignmentMode (string): The client IP assignment mode ('NAT mode', 'Bridge mode', 'Layer 3 roaming', 'Ethernet over GRE', 'Layer 3 roaming with a concentrator', 'VPN' or 'Campus Gateway')
+ - campusGateway (object): Campus gateway settings
- useVlanTagging (boolean): Whether or not traffic should be directed to use specific VLANs. This param is only valid if the ipAssignmentMode is 'Bridge mode' or 'Layer 3 roaming'
- concentratorNetworkId (string): The concentrator to use when the ipAssignmentMode is 'Layer 3 roaming with a concentrator' or 'VPN'.
- secondaryConcentratorNetworkId (string): The secondary concentrator to use when the ipAssignmentMode is 'VPN'. If configured, the APs will switch to using this concentrator if the primary concentrator is unreachable. This param is optional. ('disabled' represents no secondary concentrator.)
@@ -2403,6 +2812,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
body_params = [
"name",
"enabled",
+ "localAuth",
"authMode",
"enterpriseAdminAccess",
"ssidAdminAccessible",
@@ -2434,6 +2844,7 @@ def updateNetworkWirelessSsid(self, networkId: str, number: str, **kwargs):
"radiusAccountingInterimInterval",
"radiusAttributeForGroupPolicies",
"ipAssignmentMode",
+ "campusGateway",
"useVlanTagging",
"concentratorNetworkId",
"secondaryConcentratorNetworkId",
@@ -3015,6 +3426,152 @@ def updateNetworkWirelessSsidOpenRoaming(self, networkId: str, number: str, **kw
return self._session.put(metadata, resource, payload)
+ def updateNetworkWirelessSsidPoliciesClientExclusion(self, networkId: str, number: str, static: dict, **kwargs):
+ """
+ **Update the client exclusion status configuration for a given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - static (object): Static client exclusion status
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion"],
+ "operation": "updateNetworkWirelessSsidPoliciesClientExclusion",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion"
+
+ body_params = [
+ "static",
+ ]
+ 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"updateNetworkWirelessSsidPoliciesClientExclusion: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Set the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!update-network-wireless-ssid-policies-client-exclusion-static-exclusions
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to set as static exclusion list
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions"],
+ "operation": "updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions"
+
+ body_params = [
+ "macs",
+ ]
+ 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"updateNetworkWirelessSsidPoliciesClientExclusionStaticExclusions: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Add a list of MAC addresses to the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-add
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to add to static exclusion
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bulkAdd"],
+ "operation": "createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkAdd"
+
+ body_params = [
+ "macs",
+ ]
+ 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"createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkAdd: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove(
+ self, networkId: str, number: str, macs: list, **kwargs
+ ):
+ """
+ **Delete a list of MAC addresses from the static client exclusion list for the given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!create-network-wireless-ssid-policies-client-exclusion-static-exclusions-bulk-remove
+
+ - networkId (string): Network ID
+ - number (string): Number
+ - macs (array): MAC addresses to remove from static exclusion
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bulkRemove"],
+ "operation": "createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove",
+ }
+ networkId = urllib.parse.quote(str(networkId), safe="")
+ number = urllib.parse.quote(str(number), safe="")
+ resource = f"/networks/{networkId}/wireless/ssids/{number}/policies/clientExclusion/static/exclusions/bulkRemove"
+
+ body_params = [
+ "macs",
+ ]
+ 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"createNetworkWirelessSsidPoliciesClientExclusionStaticExclusionsBulkRemove: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
def getNetworkWirelessSsidSchedules(self, networkId: str, number: str):
"""
**List the outage schedule for the SSID**
@@ -3103,6 +3660,8 @@ 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.
+ - language (string): Language of 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.
@@ -3123,6 +3682,32 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
assert kwargs["splashTimeout"] in options, (
f'''"splashTimeout" cannot be "{kwargs["splashTimeout"]}", & must be set to one of: {options}'''
)
+ if "language" in kwargs:
+ options = [
+ "DA",
+ "DE",
+ "EL",
+ "EN",
+ "ES",
+ "FI",
+ "FR",
+ "GL",
+ "IT",
+ "JA",
+ "KO",
+ "NL",
+ "NO",
+ "PL",
+ "PT",
+ "RU",
+ "SK",
+ "SV",
+ "UK",
+ "ZH",
+ ]
+ assert kwargs["language"] in options, (
+ f'''"language" cannot be "{kwargs["language"]}", & must be set to one of: {options}'''
+ )
if "controllerDisconnectionBehavior" in kwargs:
options = ["default", "open", "restricted"]
assert kwargs["controllerDisconnectionBehavior"] in options, (
@@ -3144,6 +3729,8 @@ def updateNetworkWirelessSsidSplashSettings(self, networkId: str, number: str, *
"redirectUrl",
"useRedirectUrl",
"welcomeMessage",
+ "language",
+ "userConsent",
"themeId",
"splashLogo",
"splashImage",
@@ -3375,34 +3962,38 @@ def updateNetworkWirelessZigbee(self, networkId: str, **kwargs):
return self._session.put(metadata, resource, payload)
- def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceConnectivityWirelessRfHealthByBand(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Returns the current Air Marshal rules for this organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-rules
+ **Show the by-device RF Health score overview information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-connectivity-wireless-rf-health-by-band
- 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
- - networkIds (array): (optional) The set of network IDs to include.
- - 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): Networks for which information should be gathered.
+ - 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 1 day. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 3600, 14400, 86400. The default is 3600. Interval is calculated if time params are provided.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "airMarshal", "rules"],
- "operation": "getOrganizationWirelessAirMarshalRules",
+ "tags": ["wireless", "configure", "connectivity", "rfHealth", "byBand"],
+ "operation": "getOrganizationAssuranceConnectivityWirelessRfHealthByBand",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/airMarshal/rules"
+ resource = f"/organizations/{organizationId}/assurance/connectivity/wireless/rfHealth/byBand"
query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
"networkIds",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -3419,23 +4010,26 @@ def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_page
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"getOrganizationWirelessAirMarshalRules: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceConnectivityWirelessRfHealthByBand: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessAirMarshalSettingsByNetwork(
+ def getOrganizationAssuranceImpactedDeviceWirelessByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Returns the current Air Marshal settings for this network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-settings-by-network
+ **Returns count of impacted wireless devices per network on a given organization and time range.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-impacted-device-wireless-by-network
- 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
- - networkIds (array): The network IDs to include in the result set.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - 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 2 hours and be less than or equal to 14 days. The default is 2 hours.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
"""
@@ -3443,14 +4037,17 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "airMarshal", "settings", "byNetwork"],
- "operation": "getOrganizationWirelessAirMarshalSettingsByNetwork",
+ "tags": ["wireless", "monitor", "impactedDevice", "byNetwork"],
+ "operation": "getOrganizationAssuranceImpactedDeviceWirelessByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/airMarshal/settings/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/impactedDevice/wireless/byNetwork"
query_params = [
- "networkIds",
+ "networkGroupIds",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
@@ -3458,7 +4055,7 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
+ "networkGroupIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3470,23 +4067,29 @@ def getOrganizationWirelessAirMarshalSettingsByNetwork(
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"getOrganizationWirelessAirMarshalSettingsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceImpactedDeviceWirelessByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List access point client count at the moment in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-overview-by-device
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network
- 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
- - networkIds (array): Optional parameter to filter access points client counts by network ID. This filter uses multiple exact matches.
- - serials (array): Optional parameter to filter access points client counts by its serial numbers. This filter uses multiple exact matches.
- - campusGatewayClusterIds (array): Optional parameter to filter access points client counts by MCG cluster IDs. This filter uses multiple exact matches.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
"""
@@ -3494,16 +4097,20 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "clients", "overview", "byDevice"],
- "operation": "getOrganizationWirelessClientsOverviewByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/clients/overview/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork"
query_params = [
"networkIds",
"serials",
- "campusGatewayClusterIds",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
@@ -3513,7 +4120,8 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
array_params = [
"networkIds",
"serials",
- "campusGatewayClusterIds",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3525,57 +4133,61 @@ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, to
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"getOrganizationWirelessClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationByDevice(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average channel utilization for all bands in a network, split by AP**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-device
+ **Summarizes wireless post connection capacity successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-band
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "byDevice"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byBand"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3587,57 +4199,61 @@ def getOrganizationWirelessDevicesChannelUtilizationByDevice(
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"getOrganizationWirelessDevicesChannelUtilizationByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average channel utilization across all bands for all networks in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-network
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "byNetwork"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationByNetwork",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClient"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3649,57 +4265,61 @@ def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
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"getOrganizationWirelessDevicesChannelUtilizationByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get a time-series of average channel utilization for all bands, segmented by device.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-device-by-interval
+ **Summarizes wireless post connection capacity successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client-os
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byDevice", "byInterval"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byDevice/byInterval"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClientOs"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3711,57 +4331,61 @@ def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
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"getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get a time-series of average channel utilization for all bands**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-network-by-interval
+ **Summarizes wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-client-type
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
- - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byNetwork", "byInterval"],
- "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byNetwork/byInterval"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byClientType"
query_params = [
"networkIds",
"serials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
- "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3773,44 +4397,61 @@ def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
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"getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses
+ **Summarizes wireless post connection capacity successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-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 100.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "ethernet", "statuses"],
- "operation": "getOrganizationWirelessDevicesEthernetStatuses",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/ethernet/statuses"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byDevice"
query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3822,59 +4463,63 @@ def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, to
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"getOrganizationWirelessDevicesEthernetStatuses: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Get average packet loss for the given timespan for all clients in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-client
+ **Time-series of wireless post connection capacity successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-interval
- 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
- networkIds (array): Filter results by network.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - macs (array): Filter results by client mac address(es).
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byClient"],
- "operation": "getOrganizationWirelessDevicesPacketLossByClient",
+ "tags": ["wireless", "monitor", "experience", "channelAvailability", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byClient"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/byInterval"
query_params = [
"networkIds",
- "ssids",
+ "serials",
+ "ssidNumbers",
"bands",
- "macs",
- "perPage",
- "startingAfter",
- "endingBefore",
"t0",
"t1",
"timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "ssids",
+ "serials",
+ "ssidNumbers",
"bands",
- "macs",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -3886,58 +4531,60 @@ def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str,
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"getOrganizationWirelessDevicesPacketLossByClient: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Get average packet loss for the given timespan for all devices in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-device
+ **Summarizes wireless post connection capacity successes and failures by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-by-network-by-ssid
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byDevice"],
- "operation": "getOrganizationWirelessDevicesPacketLossByDevice",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byDevice"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/byNetwork/bySsid"
query_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
- "perPage",
- "startingAfter",
- "endingBefore",
"t0",
"t1",
"timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
]
for k, v in kwargs.items():
@@ -3950,60 +4597,70 @@ def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str,
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"getOrganizationWirelessDevicesPacketLossByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPacketLossByNetwork(
+ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **Get average packet loss for the given timespan for all networks in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-network
+ **Provides insights into wireless capacity experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-channel-availability-insights-by-network
- 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
- networkIds (array): Filter results by network.
- - serials (array): Filter results by device.
- - ssids (array): Filter results by SSID number.
- - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
"""
kwargs.update(locals())
+ if "contributor" in kwargs:
+ options = ["Co-channel interference", "High traffic", "Non-wifi interference"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "monitor", "devices", "packetLoss", "byNetwork"],
- "operation": "getOrganizationWirelessDevicesPacketLossByNetwork",
+ "tags": ["wireless", "configure", "experience", "channelAvailability", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byNetwork"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/channelAvailability/insights/byNetwork"
query_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "contributor",
+ "subContributor",
"t0",
"t1",
"timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
"serials",
- "ssids",
+ "ssidNumbers",
"bands",
]
for k, v in kwargs.items():
@@ -4016,53 +4673,143 @@ def getOrganizationWirelessDevicesPacketLossByNetwork(
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"getOrganizationWirelessDevicesPacketLossByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationAssuranceWirelessExperienceClientsInsights(self, organizationId: str, **kwargs):
"""
- **Return a record of power mode changes for wireless devices in the organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-power-mode-history
+ **Returns the top wireless service-level insights for the specified time window, including each network and the impacted client count per metric.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-clients-insights
+
+ - 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 less than or equal to 14 days.
+ - limit (integer): Number of top 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", "clients", "insights"],
+ "operation": "getOrganizationAssuranceWirelessExperienceClientsInsights",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/clients/insights"
+
+ 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"getOrganizationAssuranceWirelessExperienceClientsInsights: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval(self, organizationId: str, **kwargs):
+ """
+ **Returns time series data for impacted and active clients for organization wireless experience metrics.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-clients-overview-history-by-interval
+
+ - 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.
+ - resolution (integer): The time resolution in seconds for returned data. The valid resolutions are: 300, 600, 900, 1800, 3600, 86400. The default is 300.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "clients", "overview", "history", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/clients/overview/history/byInterval"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "resolution",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceClientsOverviewHistoryByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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 parameter to filter the result set by the included set of network IDs
- - serials (array): Optional parameter to filter device availabilities history by device serial numbers
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "power", "mode", "history"],
- "operation": "getOrganizationWirelessDevicesPowerModeHistory",
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/power/mode/history"
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork"
query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
"t0",
"t1",
"timespan",
"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",
+ "ssidNumbers",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4074,133 +4821,5090 @@ def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, to
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"getOrganizationWirelessDevicesPowerModeHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationAssuranceWirelessExperienceCoverageByNetwork: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesProvisioningDeployments(
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List the zero touch deployments for wireless access points in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments
+ **Summarizes wireless coverage successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-band
- 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 20.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
- - search (string): Filter by MAC address, serial number, new device name, old device name, or model.
- - sortBy (string): Field used to sort results. Default is 'status'.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless coverage successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "coverage", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless coverage successes and failures by SSID.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless coverage experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-coverage-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["Admin power restriction", "Insufficient AP density", "Sticky client", "Weak client signal"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "coverage", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/coverage/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns organization wireless experience metrics overview grouped by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-metrics-overview-history-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 5000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "metrics", "overview", "history", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/metrics/overview/history/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceMetricsOverviewHistoryByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-band
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. Default is 10000.
+ - 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": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless connection successes and failures by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "successfulConnects", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-server
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "byServer"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/byServer"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless successful connects experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-successful-connects-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["assoc", "auth", "dhcp", "dns"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "successfulConnects", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/successfulConnects/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "subContributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceSuccessfulConnectsInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless time to connect metrics by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by band.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-band
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byBand"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byBand"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByBand: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless time to connect metrics by client.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. Default is 10000.
+ - 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": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClient"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client OS.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client-os
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClientOs"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClientOs"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientOs: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection successes and failures by client type.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-client-type
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byClientType"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byClientType"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByClientType: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byDevice"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Time-series of wireless time to connect by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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 less than or equal to 14 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 60, 300, 600, 3600, 14400, 86400. The default is 300. Interval is calculated if time params are provided.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "experience", "timeToConnect", "byNetwork", "byInterval"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by server.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-server
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "byServer"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/byServer"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkByServer: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarizes wireless connection time to connect metrics by ssid.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "byNetwork", "bySsid"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Provides insights into wireless time to connect experience by network.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-assurance-wireless-experience-time-to-connect-insights-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial.
+ - ssidNumbers (array): Filter results by SSID number.
+ - bands (array): Filter results by band.
+ - contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
+ - 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.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 10000. 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.
+ """
+
+ kwargs.update(locals())
+
+ if "contributor" in kwargs:
+ options = ["assoc", "auth", "dhcp", "dns"]
+ assert kwargs["contributor"] in options, (
+ f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "experience", "timeToConnect", "insights", "byNetwork"],
+ "operation": "getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/assurance/wireless/experience/timeToConnect/insights/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ "contributor",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssidNumbers",
+ "bands",
+ ]
+ 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"getOrganizationAssuranceWirelessExperienceTimeToConnectInsightsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAirMarshalRules(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns the current Air Marshal rules for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-rules
+
+ - 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
+ - networkIds (array): (optional) The set of network IDs to include.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "airMarshal", "rules"],
+ "operation": "getOrganizationWirelessAirMarshalRules",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/airMarshal/rules"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationWirelessAirMarshalRules: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAirMarshalSettingsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns the current Air Marshal settings for this network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-air-marshal-settings-by-network
+
+ - 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
+ - networkIds (array): The network IDs to include in the result set.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "airMarshal", "settings", "byNetwork"],
+ "operation": "getOrganizationWirelessAirMarshalSettingsByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/airMarshal/settings/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ 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"getOrganizationWirelessAirMarshalSettingsByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessAlertsLowPowerByDevice(self, organizationId: str, networkIds: list, **kwargs):
+ """
+ **Gets all low power related alerts over a given network and returns information by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-alerts-low-power-by-device
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "alerts", "lowPower", "byDevice"],
+ "operation": "getOrganizationWirelessAlertsLowPowerByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/alerts/lowPower/byDevice"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessAlertsLowPowerByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessCertificatesOpenRoamingCertificateAuthority(self, organizationId: str):
+ """
+ **Query for details on the organization's OpenRoaming Certificate Authority certificate (CAs).**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-certificates-open-roaming-certificate-authority
+
+ - organizationId (string): Organization ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "certificates", "openRoaming", "certificateAuthority"],
+ "operation": "getOrganizationWirelessCertificatesOpenRoamingCertificateAuthority",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/certificates/openRoaming/certificateAuthority"
+
+ return self._session.get(metadata, resource)
+
+ def getOrganizationWirelessClientsConnectionsAssociationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarize association outcomes per wireless client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-association-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "association", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsAssociationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/association/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsAssociationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsAuthenticationByClient(self, organizationId: str, **kwargs):
+ """
+ **Summarize authentication outcomes per wireless client across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-authentication-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "authentication", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsAuthenticationByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/authentication/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsAuthenticationByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsDhcpByClient(self, organizationId: str, **kwargs):
+ """
+ **Get IP assignment for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-dhcp-by-client
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Filter results by network.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 7 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 2 hours.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "connections", "dhcp", "byClient"],
+ "operation": "getOrganizationWirelessClientsConnectionsDhcpByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/dhcp/byClient"
+
+ query_params = [
+ "networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsDhcpByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns failed wireless client connections for this organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-failures-history-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
+ - connectionTimeSortOrder (string): (optional) Sort order of events by connection start time. (default desc)
+ - failureSteps (array): (optional) The step in the connection process that failed
+ - clientMac (string): (optional) The MAC address of the client with which the list of events will be filtered.
+ - serials (array): (optional) Filter devices by serial number
+ - timespan (integer): (optional) The timespan, in seconds, for the failed connections. The period will be from [timespan] seconds ago until now. The maximum allowed timespan is 1 month. Default: 86400 (24 hours)
+ - ssidNumber (integer): (optional) The SSID number to include
+ - networkIds (array): (optional) The set of network IDs to include.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.
+ - 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())
+
+ if "connectionTimeSortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["connectionTimeSortOrder"] in options, (
+ f'''"connectionTimeSortOrder" cannot be "{kwargs["connectionTimeSortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "ssidNumber" in kwargs:
+ options = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
+ assert kwargs["ssidNumber"] in options, (
+ f'''"ssidNumber" cannot be "{kwargs["ssidNumber"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "connections", "failures", "history", "byDevice"],
+ "operation": "getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/failures/history/byDevice"
+
+ query_params = [
+ "connectionTimeSortOrder",
+ "failureSteps",
+ "clientMac",
+ "serials",
+ "timespan",
+ "ssidNumber",
+ "networkIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "failureSteps",
+ "serials",
+ "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"getOrganizationWirelessClientsConnectionsFailuresHistoryByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Summarize the number of wireless clients impacted by connection failures on network SSIDs, across an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-connections-impacted-by-network-by-ssid
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 5 minutes and be less than or equal to 7 days. The default is 2 hours.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wireless", "monitor", "clients", "connections", "impacted", "byNetwork", "bySsid"],
+ "operation": "getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/connections/impacted/byNetwork/bySsid"
+
+ query_params = [
+ "networkIds",
+ "networkGroupIds",
+ "t0",
+ "t1",
+ "timespan",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ ]
+ 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"getOrganizationWirelessClientsConnectionsImpactedByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsOverviewByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List access point client count at the moment in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-overview-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
+ - networkIds (array): Optional parameter to filter access points client counts by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter access points client counts by its serial numbers. This filter uses multiple exact matches.
+ - campusGatewayClusterIds (array): Optional parameter to filter access points client counts by MCG cluster IDs. This filter uses multiple exact matches.
+ - 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.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "overview", "byDevice"],
+ "operation": "getOrganizationWirelessClientsOverviewByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/overview/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "campusGatewayClusterIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "campusGatewayClusterIds",
+ ]
+ 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"getOrganizationWirelessClientsOverviewByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def byOrganizationWirelessClientsRfHealthOverviewNetwork(self, organizationId: str, **kwargs):
+ """
+ **Show the by-network client information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-clients-rf-health-overview-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - channels (array): Channel for which information should be gathered.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - tags (array): Access Point tags for which information should be gathered.
+ - models (array): Access Point models for which information should be gathered.
+ - rfProfiles (array): Rf Profiles for which information should be gathered.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ - retryOnEmpty (boolean): If true, the query will be retried with a longer timeframe if the results are empty.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "rfHealth", "overview"],
+ "operation": "byOrganizationWirelessClientsRfHealthOverviewNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/rfHealth/overview/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "gFloorplanId",
+ "tags",
+ "models",
+ "rfProfiles",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "retryOnEmpty",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ ]
+ 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"byOrganizationWirelessClientsRfHealthOverviewNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessClientsStickyEvents(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get sticky client events within the specified timespan.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-sticky-events
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - clientIds (array): Filter results by client id.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "clients", "stickyEvents"],
+ "operation": "getOrganizationWirelessClientsStickyEvents",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/stickyEvents"
+
+ query_params = [
+ "networkIds",
+ "clientIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "clientIds",
+ ]
+ 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"getOrganizationWirelessClientsStickyEvents: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns client usage details for wireless networks within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-network
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "byNetwork"],
+ "operation": "getOrganizationWirelessClientsUsageByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageByNetworkBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns client usage details for wireless network SSIDs within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-network-by-ssid
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - networkIds (array): Filter results by a list of network IDs.
+ - networkGroupIds (array): Filter results by a list of network group IDs.
+ - ssidIds (array): Filter results by a list of SSID IDs.
+ - ssidNames (array): Filter results by a list of SSID names.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "byNetwork", "bySsid"],
+ "operation": "getOrganizationWirelessClientsUsageByNetworkBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/byNetwork/bySsid"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "networkGroupIds",
+ "ssidIds",
+ "ssidNames",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "networkGroupIds",
+ "ssidIds",
+ "ssidNames",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageByNetworkBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessClientsUsageBySsid(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Returns client usage details for SSIDs within an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-clients-usage-by-ssid
+
+ - 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 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 8 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 greater than or equal to 1 hour and be less than or equal to 7 days. The default is 2 hours.
+ - ssidNames (array): Filter results by a list of SSID names.
+ - networkIds (array): Limit the results to clients that belong to one of the provided networks.
+ - networkGroupIds (array): Limit the results to clients that belong to one of the provided network groups.
+ - gatewayNetworkIds (array): Limit the results to clients tunneled to campus gateways in the provided networks.
+ - usageUnits (string): Usage units to use in the response.
+ """
+
+ kwargs.update(locals())
+
+ if "usageUnits" in kwargs:
+ options = ["GB", "KB", "MB", "TB"]
+ assert kwargs["usageUnits"] in options, (
+ f'''"usageUnits" cannot be "{kwargs["usageUnits"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "monitor", "clients", "usage", "bySsid"],
+ "operation": "getOrganizationWirelessClientsUsageBySsid",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/clients/usage/bySsid"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "ssidNames",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ "usageUnits",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "ssidNames",
+ "networkIds",
+ "networkGroupIds",
+ "gatewayNetworkIds",
+ ]
+ 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"getOrganizationWirelessClientsUsageBySsid: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesAccelerometerStatuses(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the most recent AP accelerometer status information for wireless devices that support it.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-accelerometer-statuses
+
+ - 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 100.
+ - 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "accelerometer", "statuses"],
+ "operation": "getOrganizationWirelessDevicesAccelerometerStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/accelerometer/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessDevicesAccelerometerStatuses: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average channel utilization for all bands in a network, split by AP**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average channel utilization across all bands for all networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get a time-series of average channel utilization for all bands, segmented by device.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-device-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byDevice", "byInterval"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byDevice/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get a time-series of average channel utilization for all bands**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-channel-utilization-history-by-network-by-interval
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 31 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 31 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 31 days. The default is 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 3600, 7200, 14400, 21600. The default is 3600.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "channelUtilization", "history", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/channelUtilization/history/byNetwork/byInterval"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ ]
+ 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"getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesDataRateByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average uplink and downlink datarates for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-data-rate-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "dataRate", "byClient"],
+ "operation": "getOrganizationWirelessDevicesDataRateByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/dataRate/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesDataRateByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses
+
+ - 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 100.
+ - 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): A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "ethernet", "statuses"],
+ "operation": "getOrganizationWirelessDevicesEthernetStatuses",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/ethernet/statuses"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessDevicesEthernetStatuses: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get latency summaries for all wireless devices in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-by-client
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ - macs (array): Filter results by client mac address(es).
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byClient"],
+ "operation": "getOrganizationWirelessDevicesLatencyByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byClient"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "bands",
+ "ssids",
+ "macs",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "ssids",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get latency summaries for all wireless devices in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesLatencyByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byDevice"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesLatencyByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get per-network latency summaries for all wireless networks in an organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-latency-by-network
+
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 90 days. The default is 7 days.
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - ssids (array): Filter results by SSID number.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "latency", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesLatencyByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/latency/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "bands",
+ "ssids",
+ ]
+ 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"getOrganizationWirelessDevicesLatencyByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessDevicesLiveToolsClientDisconnect(self, organizationId: str, clientId: str, **kwargs):
+ """
+ **Enqueue a job to disconnect a client from an AP**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-live-tools-client-disconnect
+
+ - organizationId (string): Organization ID
+ - clientId (string): Client ID
+ - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "liveTools", "devices", "clients", "disconnect"],
+ "operation": "createOrganizationWirelessDevicesLiveToolsClientDisconnect",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ clientId = urllib.parse.quote(str(clientId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/liveTools/clients/{clientId}/disconnect"
+
+ 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"createOrganizationWirelessDevicesLiveToolsClientDisconnect: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def getOrganizationWirelessDevicesPacketLossByClient(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average packet loss for the given timespan for all clients in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byClient"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byClient"
+
+ query_params = [
+ "networkIds",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPacketLossByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Get average packet loss for the given timespan for all devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPacketLossByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average packet loss for the given timespan for all networks in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-packet-loss-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 90 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 90 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 5 minutes and be less than or equal to 90 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "packetLoss", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesPacketLossByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/packetLoss/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesPacketLossByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesPowerModeHistory(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return a record of power mode changes for wireless devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-power-mode-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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 parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "power", "mode", "history"],
+ "operation": "getOrganizationWirelessDevicesPowerModeHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/power/mode/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesPowerModeHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesProvisioningDeployments(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List the zero touch deployments for wireless access points in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments
+
+ - 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 20.
+ - 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.
+ - search (string): Filter by MAC address, serial number, new device name, old device name, or model.
+ - sortBy (string): Field used to sort results. Default is 'status'.
- sortOrder (string): Sort order. Default is 'asc'.
- deploymentType (string): Filter deployments by type.
"""
kwargs.update(locals())
- if "sortBy" in kwargs:
- options = ["afterAction", "createdAt", "deploymentId", "name", "status"]
- assert kwargs["sortBy"] in options, (
- f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
- )
- if "sortOrder" in kwargs:
- options = ["asc", "desc"]
- assert kwargs["sortOrder"] in options, (
- f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
- )
- if "deploymentType" in kwargs:
- options = ["deploy", "replace"]
- assert kwargs["deploymentType"] in options, (
- f'''"deploymentType" cannot be "{kwargs["deploymentType"]}", & must be set to one of: {options}'''
- )
+ if "sortBy" in kwargs:
+ options = ["afterAction", "createdAt", "deploymentId", "name", "status"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+ if "deploymentType" in kwargs:
+ options = ["deploy", "replace"]
+ assert kwargs["deploymentType"] in options, (
+ f'''"deploymentType" cannot be "{kwargs["deploymentType"]}", & must be set to one of: {options}'''
+ )
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "getOrganizationWirelessDevicesProvisioningDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "search",
+ "sortBy",
+ "sortOrder",
+ "deploymentType",
+ ]
+ 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"getOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, items: list, **kwargs):
+ """
+ **Create a zero touch deployment for a wireless access point**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-provisioning-deployment
+
+ - organizationId (string): Organization ID
+ - items (array): List of zero touch deployments to create
+ - meta (object): Metadata relevant to the paginated dataset
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "createOrganizationWirelessDevicesProvisioningDeployment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ body_params = [
+ "items",
+ "meta",
+ ]
+ 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"createOrganizationWirelessDevicesProvisioningDeployment: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationId: str, items: list, **kwargs):
+ """
+ **Update a zero touch deployment**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-provisioning-deployments
+
+ - organizationId (string): Organization ID
+ - items (array): List of zero touch deployments to create
+ - meta (object): Metadata relevant to the paginated dataset
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "updateOrganizationWirelessDevicesProvisioningDeployments",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+
+ body_params = [
+ "items",
+ "meta",
+ ]
+ 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"updateOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns deployment IDs for the given new node serial numbers**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-deployments-by-new-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 80.
+ - 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.
+ - serials (array): Array of new device serial numbers to query
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments", "byNewDevice"],
+ "operation": "getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/byNewDevice"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "serials",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "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"getOrganizationWirelessDevicesProvisioningDeploymentsByNewDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def deleteOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, deploymentId: str):
+ """
+ **Delete a zero touch deployment**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-devices-provisioning-deployment
+
+ - organizationId (string): Organization ID
+ - deploymentId (string): Deployment ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
+ "operation": "deleteOrganizationWirelessDevicesProvisioningDeployment",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ deploymentId = urllib.parse.quote(str(deploymentId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/{deploymentId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationWirelessDevicesProvisioningRecommendationsTags(self, organizationId: str, **kwargs):
+ """
+ **List the recommended device tags for zero touch deployments available for the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-provisioning-recommendations-tags
+
+ - organizationId (string): Organization ID
+ - networkIds (array): The list of networks to use as hints for device tags recommendations.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "provisioning", "recommendations", "tags"],
+ "operation": "getOrganizationWirelessDevicesProvisioningRecommendationsTags",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/provisioning/recommendations/tags"
+
+ 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"getOrganizationWirelessDevicesProvisioningRecommendationsTags: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ """
+ **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
+ - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ """
+ **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
+ - status (string): The "status" to update the Certificate Authority to. Only valid option is "trusted".
+ - certificateAuthorityId (string): The ID of the Certificate Authority to update.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "updateOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ body_params = [
+ "status",
+ "certificateAuthorityId",
+ ]
+ 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"updateOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizationId: str):
+ """
+ **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
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
+ "operation": "createOrganizationWirelessDevicesRadsecCertificatesAuthority",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+
+ return self._session.post(metadata, resource)
+
+ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organizationId: str, **kwargs):
+ """
+ **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
+ - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ 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.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-radsec-certificates-authorities-crls-deltas
+
+ - organizationId (string): Organization ID
+ - certificateAuthorityIds (array): Parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls", "deltas"],
+ "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls/deltas"
+
+ query_params = [
+ "certificateAuthorityIds",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "certificateAuthorityIds",
+ ]
+ 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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessDevicesSignalQualityByClient(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all clients in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-by-client
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - macs (array): Filter results by client mac address(es).
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byClient"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByClient",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byClient"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "macs",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByClient: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSignalQualityByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all devices in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSignalQualityByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Get average signal quality for all networks in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-signal-quality-by-network
+
+ - 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
+ - networkIds (array): Filter results by network.
+ - serials (array): Filter results by device serial number.
+ - ssids (array): Filter results by SSID number.
+ - bands (array): Filter results by band. Valid bands are: 2.4, 5, and 6.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 30 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 7 days.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "signalQuality", "byNetwork"],
+ "operation": "getOrganizationWirelessDevicesSignalQualityByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/signalQuality/byNetwork"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "ssids",
+ "bands",
+ ]
+ 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"getOrganizationWirelessDevicesSignalQualityByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesSystemCpuLoadHistory(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return the CPU Load history for a list of wireless devices in the organization.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-system-cpu-load-history
+
+ - 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
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
+ - 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 parameter to filter the result set by the included set of network IDs
+ - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "system", "cpu", "load", "history"],
+ "operation": "getOrganizationWirelessDevicesSystemCpuLoadHistory",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/system/cpu/load/history"
+
+ query_params = [
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesSystemCpuLoadHistory: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesTelemetry(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the wireless device telemetry of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-telemetry
+
+ - 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 - 200. Default is 100.
+ - 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.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 3 days from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 minutes 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 5 minutes and be less than or equal to 30 minutes. The default is 30 minutes.
+ - networkIds (array): Optional parameter to filter results by network.
+ - serials (array): Optional parameter to filter results by device serial.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "monitor", "devices", "telemetry"],
+ "operation": "getOrganizationWirelessDevicesTelemetry",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/telemetry"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "t0",
+ "t1",
+ "timespan",
+ "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"getOrganizationWirelessDevicesTelemetry: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessDevicesWirelessControllersByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List of Catalyst access points information**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-wireless-controllers-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
+ - networkIds (array): Optional parameter to filter access points by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter access points by its cloud ID. This filter uses multiple exact matches.
+ - controllerSerials (array): Optional parameter to filter access points by its wireless LAN controller cloud ID. This filter uses multiple exact matches.
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wireless", "monitor", "devices", "wirelessControllers", "byDevice"],
+ "operation": "getOrganizationWirelessDevicesWirelessControllersByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/devices/wirelessControllers/byDevice"
+
+ query_params = [
+ "networkIds",
+ "serials",
+ "controllerSerials",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "serials",
+ "controllerSerials",
+ ]
+ 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"getOrganizationWirelessDevicesWirelessControllersByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return scanning API settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-by-network
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter scanning settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "byNetwork"],
+ "operation": "getOrganizationWirelessLocationScanningByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationScanningByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **Return scanning API receivers**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-receivers
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter scanning API receivers by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "getOrganizationWirelessLocationScanningReceivers",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationScanningReceivers: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessLocationScanningReceiver(
+ self, organizationId: str, network: dict, url: str, version: str, radio: dict, sharedSecret: str, **kwargs
+ ):
+ """
+ **Add new receiver for scanning API**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - network (object): Add scanning API receiver for network
+ - url (string): Receiver Url
+ - version (string): Scanning API Version
+ - radio (object): Add scanning API Radio
+ - sharedSecret (string): Secret Value for Receiver
+ """
+
+ kwargs = locals()
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "createOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+
+ body_params = [
+ "network",
+ "url",
+ "version",
+ "radio",
+ "sharedSecret",
+ ]
+ 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"createOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)
+
+ def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str, **kwargs):
+ """
+ **Change scanning API receiver settings**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - receiverId (string): Receiver ID
+ - url (string): Receiver Url
+ - version (string): Scanning API Version
+ - radio (object): Add scanning API Radio
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "updateOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ receiverId = urllib.parse.quote(str(receiverId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+
+ body_params = [
+ "url",
+ "version",
+ "radio",
+ ]
+ 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"updateOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str):
+ """
+ **Delete a scanning API receiver**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-location-scanning-receiver
+
+ - organizationId (string): Organization ID
+ - receiverId (string): Receiver ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "scanning", "receivers"],
+ "operation": "deleteOrganizationWirelessLocationScanningReceiver",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ receiverId = urllib.parse.quote(str(receiverId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+
+ return self._session.delete(metadata, resource)
+
+ def getOrganizationWirelessLocationWayfindingByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Return Client wayfinding settings**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-wayfinding-by-network
+
+ - 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 parameter to filter wayfinding settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "location", "wayfinding", "byNetwork"],
+ "operation": "getOrganizationWirelessLocationWayfindingByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/location/wayfinding/byNetwork"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessLocationWayfindingByNetwork: 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**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-mqtt-settings
+
+ - 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 - 250. Default is 50.
+ - 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 parameter to filter mqtt settings by network ID.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "mqtt", "settings"],
+ "operation": "getOrganizationWirelessMqttSettings",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "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"getOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def updateOrganizationWirelessMqttSettings(self, organizationId: str, network: dict, mqtt: dict, **kwargs):
+ """
+ **Add new broker config for wireless MQTT**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-mqtt-settings
+
+ - organizationId (string): Organization ID
+ - network (object): Add MQTT Settings for network
+ - mqtt (object): MQTT Settings for network
+ - ble (object): MQTT BLE Settings for network
+ - wifi (object): MQTT Wi-Fi Settings for network
+ """
+
+ kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "getOrganizationWirelessDevicesProvisioningDeployments",
+ "tags": ["wireless", "configure", "mqtt", "settings"],
+ "operation": "updateOrganizationWirelessMqttSettings",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+
+ body_params = [
+ "network",
+ "mqtt",
+ "ble",
+ "wifi",
+ ]
+ 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"updateOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def byOrganizationWirelessOpportunisticPcapLicenseNetwork(self, organizationId: str, **kwargs):
+ """
+ **Check the Opportunistic Pcap license status of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-opportunistic-pcap-license-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "opportunisticPcap", "license"],
+ "operation": "byOrganizationWirelessOpportunisticPcapLicenseNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/opportunisticPcap/license/byNetwork"
+
+ 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"byOrganizationWirelessOpportunisticPcapLicenseNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessRadioAfcPositionByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ """
+ **List the AFC power limits of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-afc-position-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 parameter to filter device's AFC position by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter device's AFC position by device serial numbers. This filter uses multiple exact matches.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "afc", "position", "byDevice"],
+ "operation": "getOrganizationWirelessRadioAfcPositionByDevice",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/afc/position/byDevice"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
- "search",
- "sortBy",
- "sortOrder",
- "deploymentType",
+ "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
+ 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"getOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioAfcPositionByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, items: list, **kwargs):
+ def getOrganizationWirelessRadioAfcPowerLimitsByDevice(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Create a zero touch deployment for a wireless access point**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-devices-provisioning-deployment
+ **List the AFC power limits of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-afc-power-limits-by-device
- organizationId (string): Organization ID
- - items (array): List of zero touch deployments to create
- - meta (object): Metadata relevant to the paginated dataset
+ - 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 parameter to filter device's AFC power limits by network ID. This filter uses multiple exact matches.
+ - serials (array): Optional parameter to filter device's AFC power limits by device serial numbers. This filter uses multiple exact matches.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "createOrganizationWirelessDevicesProvisioningDeployment",
+ "tags": ["wireless", "configure", "radio", "afc", "powerLimits", "byDevice"],
+ "operation": "getOrganizationWirelessRadioAfcPowerLimitsByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/radio/afc/powerLimits/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"getOrganizationWirelessRadioAfcPowerLimitsByDevice: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def getOrganizationWirelessRadioAutoRfByNetwork(self, organizationId: str, **kwargs):
+ """
+ **List the AutoRF settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-auto-rf-by-network
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioAutoRfByNetwork",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/byNetwork"
+
+ 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"getOrganizationWirelessRadioAutoRfByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get(metadata, resource, params)
+
+ def getOrganizationWirelessRadioAutoRfChannelsPlanningActivities(self, organizationId: str, **kwargs):
+ """
+ **List the channel planning activities of an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-auto-rf-channels-planning-activities
+
+ - organizationId (string): Organization ID
+ - networkIds (array): Optional parameter to filter results by network.
+ - deviceSerials (array): Optional parameter to filter results by device serial.
+ - bands (array): Optional parameter to filter results by bands. Valid bands are 2.4, 5, and 6.
+ - channels (array): Optional parameter to filter results by channels.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - tags (array): Optional parameter to filter results by node tags.
+ - models (array): Optional parameter to filter results by access point models.
+ - rfProfiles (array): Optional parameter to filter results by RF Profiles.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "radio", "autoRf", "channels", "planning", "activities"],
+ "operation": "getOrganizationWirelessRadioAutoRfChannelsPlanningActivities",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/planning/activities"
+
+ query_params = [
+ "networkIds",
+ "deviceSerials",
+ "bands",
+ "channels",
+ "serials",
+ "gFloorplanId",
+ "tags",
+ "models",
+ "rfProfiles",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
- body_params = [
- "items",
- "meta",
+ array_params = [
+ "networkIds",
+ "deviceSerials",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(
- f"createOrganizationWirelessDevicesProvisioningDeployment: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioAutoRfChannelsPlanningActivities: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.get(metadata, resource, params)
- def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationId: str, items: list, **kwargs):
+ def recalculateOrganizationWirelessRadioAutoRfChannels(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Update a zero touch deployment**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-provisioning-deployments
+ **Recalculates automatically assigned channels for every AP within specified the specified network(s)**
+ https://developer.cisco.com/meraki/api-v1/#!recalculate-organization-wireless-radio-auto-rf-channels
- organizationId (string): Organization ID
- - items (array): List of zero touch deployments to create
- - meta (object): Metadata relevant to the paginated dataset
+ - networkIds (array): A list of network ids (limit: 15).
"""
- kwargs.update(locals())
+ kwargs = locals()
metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "updateOrganizationWirelessDevicesProvisioningDeployments",
+ "tags": ["wireless", "configure", "radio", "autoRf", "channels"],
+ "operation": "recalculateOrganizationWirelessRadioAutoRfChannels",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments"
+ resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/recalculate"
body_params = [
- "items",
- "meta",
+ "networkIds",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4209,55 +9913,47 @@ def updateOrganizationWirelessDevicesProvisioningDeployments(self, organizationI
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"updateOrganizationWirelessDevicesProvisioningDeployments: ignoring unrecognized kwargs: {invalid}"
+ f"recalculateOrganizationWirelessRadioAutoRfChannels: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def deleteOrganizationWirelessDevicesProvisioningDeployment(self, organizationId: str, deploymentId: str):
- """
- **Delete a zero touch deployment**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-devices-provisioning-deployment
-
- - organizationId (string): Organization ID
- - deploymentId (string): Deployment ID
- """
-
- metadata = {
- "tags": ["wireless", "configure", "devices", "provisioning", "deployments"],
- "operation": "deleteOrganizationWirelessDevicesProvisioningDeployment",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- deploymentId = urllib.parse.quote(str(deploymentId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/provisioning/deployments/{deploymentId}"
-
- return self._session.delete(metadata, resource)
+ return self._session.post(metadata, resource, payload)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioOverridesByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **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
+ **Return a list of radio overrides**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-overrides-by-device
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - 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 - 100. Default is 100.
+ - 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): A list of network IDs. The returned radio overrides will be filtered to only include these networks.
+ - serials (array): A list of serial numbers. The returned radio overrides will be filtered to only include these serials.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ "tags": ["wireless", "configure", "radio", "overrides", "byDevice"],
+ "operation": "getOrganizationWirelessRadioOverridesByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+ resource = f"/organizations/{organizationId}/wireless/radio/overrides/byDevice"
query_params = [
- "certificateAuthorityIds",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "serials",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "serials",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4269,88 +9965,132 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizati
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"getOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioOverridesByDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateOrganizationWirelessDevicesRadsecCertificatesAuthorities(self, organizationId: str, **kwargs):
+ def byOrganizationWirelessRadioRfHealthNeighborsRssiDevice(self, organizationId: str, **kwargs):
"""
- **Update an organization's RADSEC device Certificate Authority (CA) state**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-devices-radsec-certificates-authorities
+ **Show the by-device neighbor rssi information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!by-organization-wireless-radio-rf-health-neighbors-rssi-device
- organizationId (string): Organization ID
- - status (string): The "status" to update the Certificate Authority to. Only valid option is "trusted".
- - certificateAuthorityId (string): The ID of the Certificate Authority to update.
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - channels (array): Channel for which information should be gathered.
+ - serials (array): Serial number of the devices for which information should be gathered.
+ - tags (array): Access Point tags for which information should be gathered.
+ - models (array): Access Point models for which information should be gathered.
+ - rfProfiles (array): Rf Profiles for which information should be gathered.
+ - gFloorplanId (string): Geoaligned floorplan ID nodes for which information is gathered belong to.
+ - minimumNeighborRssi (integer): Minimum Neighbor RSSI score for a neighbor entry to be retrieved.
+ - maximumNeighborRssi (integer): Maximum Neighbor RSSI score for a neighbor entry to be retrieved.
+ - minimumRfHealthScore (integer): Minimum RF Health score for an AP to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for an AP to be retrieved.
+ - rfScoreInterval (integer): Size of the rf score interval in seconds.
+ - rfScoreRetryOnEmpty (boolean): If true, the query will be retried further back if no data is present in the latest rf score interval.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "updateOrganizationWirelessDevicesRadsecCertificatesAuthorities",
+ "tags": ["wireless", "configure", "radio", "rfHealth", "neighbors", "rssi"],
+ "operation": "byOrganizationWirelessRadioRfHealthNeighborsRssiDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
+ resource = f"/organizations/{organizationId}/wireless/radio/rfHealth/neighbors/rssi/byDevice"
- body_params = [
- "status",
- "certificateAuthorityId",
+ query_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ "gFloorplanId",
+ "minimumNeighborRssi",
+ "maximumNeighborRssi",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "rfScoreInterval",
+ "rfScoreRetryOnEmpty",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "bands",
+ "channels",
+ "serials",
+ "tags",
+ "models",
+ "rfProfiles",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationWirelessDevicesRadsecCertificatesAuthorities: ignoring unrecognized kwargs: {invalid}"
+ f"byOrganizationWirelessRadioRfHealthNeighborsRssiDevice: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
-
- def createOrganizationWirelessDevicesRadsecCertificatesAuthority(self, organizationId: str):
- """
- **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
- """
-
- metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities"],
- "operation": "createOrganizationWirelessDevicesRadsecCertificatesAuthority",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities"
-
- return self._session.post(metadata, resource)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval(self, organizationId: str, **kwargs):
"""
- **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
+ **Show the by-network RF Health score overview information for the organization in the given interval**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rf-health-overview-by-network-by-interval
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Optional parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 182 days, 14 hours, 54 minutes, and 36 seconds from today.
+ - t1 (string): The end of the timespan for the data. t1 can be a maximum of 30 days, 10 hours, 29 minutes, and 6 seconds 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 30 days, 10 hours, 29 minutes, and 6 seconds. The default is 14 days. If interval is provided, the timespan will be autocalculated.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 7200, 86400. The default is 7200. Interval is calculated if time params are provided.
+ - networkIds (array): Networks for which information should be gathered.
+ - bands (array): Bands for which information should be gathered. Valid bands are 2.4, 5, and 6.
+ - minimumRfHealthScore (integer): Minimum RF Health score for a network to be retrieved.
+ - maximumRfHealthScore (integer): Maximum RF Health score for a network to be retrieved.
+ - minimumHighCciPercentage (integer): Minimum percentage of radios with high CCI for a network to be retrieved.
+ - maximumHighCciPercentage (integer): Maximum percentage of radios with high CCI for a network to be retrieved.
+ - minimumChannelChanges (integer): Minimum number of channel changes for a network to be retrieved.
+ - maximumChannelChanges (integer): Maximum number of channel changes for a network to be retrieved.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls",
+ "tags": ["wireless", "configure", "radio", "rfHealth", "overview", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls"
+ resource = f"/organizations/{organizationId}/wireless/radio/rfHealth/overview/byNetwork/byInterval"
query_params = [
- "certificateAuthorityIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
+ "networkIds",
+ "bands",
+ "minimumRfHealthScore",
+ "maximumRfHealthScore",
+ "minimumHighCciPercentage",
+ "maximumHighCciPercentage",
+ "minimumChannelChanges",
+ "maximumChannelChanges",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "bands",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4362,36 +10102,52 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls(self, organi
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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrls: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioRfHealthOverviewByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas(self, organizationId: str, **kwargs):
+ def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **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
+ **List the AutoRF settings of an organization by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rrm-by-network
- organizationId (string): Organization ID
- - certificateAuthorityIds (array): Parameter to filter CAs by one or more CA IDs. All returned CAs will have an ID that is an exact match.
+ - 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
+ - networkIds (array): Optional parameter to filter results by network.
+ - startingAfter (string): Retrieving items after this network ID
+ - endingBefore (string): Retrieving items before this network ID
+ - perPage (integer): Number of items per page
+ - sortOrder (string): The sort order of items
"""
kwargs.update(locals())
+ if "sortOrder" in kwargs:
+ options = ["ascending", "descending"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "devices", "radsec", "certificates", "authorities", "crls", "deltas"],
- "operation": "getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas",
+ "tags": ["wireless", "configure", "radio", "rrm", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioRrmByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/radsec/certificates/authorities/crls/deltas"
+ resource = f"/organizations/{organizationId}/wireless/radio/rrm/byNetwork"
query_params = [
- "certificateAuthorityIds",
+ "networkIds",
+ "startingAfter",
+ "endingBefore",
+ "perPage",
+ "sortOrder",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "certificateAuthorityIds",
+ "networkIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4403,47 +10159,31 @@ def getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas(self,
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"getOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltas: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioRrmByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get(metadata, resource, params)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessDevicesSystemCpuLoadHistory(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessRadioStatusByNetwork(self, organizationId: str, **kwargs):
"""
- **Return the CPU Load history for a list of wireless devices in the organization.**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-system-cpu-load-history
+ **Show the status of this organization's radios, categorized by network and device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-status-by-network
- 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
- - t0 (string): The beginning of the timespan for the data. The maximum lookback period is 1 day from today.
- - t1 (string): The end of the timespan for the data. t1 can be a maximum of 1 day 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 1 day. The default is 1 day.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.
- - 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 parameter to filter the result set by the included set of network IDs
- - serials (array): Optional parameter to filter device availabilities history by device serial numbers
+ - networkIds (array): Networks for which radio status should be returned.
+ - serials (array): Serials for which radio status should be returned.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "system", "cpu", "load", "history"],
- "operation": "getOrganizationWirelessDevicesSystemCpuLoadHistory",
+ "tags": ["wireless", "configure", "radio", "status", "byNetwork"],
+ "operation": "getOrganizationWirelessRadioStatusByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/system/cpu/load/history"
+ resource = f"/organizations/{organizationId}/wireless/radio/status/byNetwork"
query_params = [
- "t0",
- "t1",
- "timespan",
- "perPage",
- "startingAfter",
- "endingBefore",
"networkIds",
"serials",
]
@@ -4463,52 +10203,66 @@ def getOrganizationWirelessDevicesSystemCpuLoadHistory(
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"getOrganizationWirelessDevicesSystemCpuLoadHistory: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRadioStatusByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessDevicesWirelessControllersByDevice(
+ def getOrganizationWirelessRfProfilesAssignmentsByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
- **List of Catalyst access points information**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-wireless-controllers-by-device
+ **List the RF profiles of an organization by device**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-rf-profiles-assignments-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
- - networkIds (array): Optional parameter to filter access points by network ID. This filter uses multiple exact matches.
- - serials (array): Optional parameter to filter access points by its cloud ID. This filter uses multiple exact matches.
- - controllerSerials (array): Optional parameter to filter access points by its wireless LAN controller cloud ID. This filter uses multiple exact matches.
- - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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 parameter to filter devices by network.
+ - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
+ - name (string): Optional parameter to filter RF profiles by device name. All returned devices will have a name that contains the search term or is an exact match.
+ - mac (string): Optional parameter to filter RF profiles by device MAC address. All returned devices will have a MAC address that contains the search term or is an exact match.
+ - serial (string): Optional parameter to filter RF profiles by device serial number. All returned devices will have a serial number that contains the search term or is an exact match.
+ - model (string): Optional parameter to filter RF profiles by device model. All returned devices will have a model that contains the search term or is an exact match.
+ - macs (array): Optional parameter to filter RF profiles by one or more device MAC addresses. All returned devices will have a MAC address that is an exact match.
+ - serials (array): Optional parameter to filter RF profiles by one or more device serial numbers. All returned devices will have a serial number that is an exact match.
+ - models (array): Optional parameter to filter RF profiles by one or more device models. All returned devices will have a model that is an exact match.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "monitor", "devices", "wirelessControllers", "byDevice"],
- "operation": "getOrganizationWirelessDevicesWirelessControllersByDevice",
+ "tags": ["wireless", "configure", "rfProfiles", "assignments", "byDevice"],
+ "operation": "getOrganizationWirelessRfProfilesAssignmentsByDevice",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/devices/wirelessControllers/byDevice"
+ resource = f"/organizations/{organizationId}/wireless/rfProfiles/assignments/byDevice"
query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
"networkIds",
+ "productTypes",
+ "name",
+ "mac",
+ "serial",
+ "model",
+ "macs",
"serials",
- "controllerSerials",
- "perPage",
- "startingAfter",
- "endingBefore",
+ "models",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "productTypes",
+ "macs",
"serials",
- "controllerSerials",
+ "models",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4520,39 +10274,39 @@ def getOrganizationWirelessDevicesWirelessControllersByDevice(
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"getOrganizationWirelessDevicesWirelessControllersByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRfProfilesAssignmentsByDevice: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessRoamingByNetworkByInterval(self, organizationId: str, networkIds: list, **kwargs):
"""
- **Return scanning API settings**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-by-network
+ **Get all wireless clients' roam events within the specified timespan grouped by network and time interval.**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-roaming-by-network-by-interval
- 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 - 250. Default is 50.
- - 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 parameter to filter scanning settings by network ID.
+ - networkIds (array): Filter results by network.
+ - 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 7 days.
+ - interval (integer): The time interval in seconds for returned data. The valid intervals are: 300, 600, 1800, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, 32400, 36000, 39600, 43200, 86400, 604800. The default is 7200.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "byNetwork"],
- "operation": "getOrganizationWirelessLocationScanningByNetwork",
+ "tags": ["wireless", "monitor", "roaming", "byNetwork", "byInterval"],
+ "operation": "getOrganizationWirelessRoamingByNetworkByInterval",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/roaming/byNetwork/byInterval"
query_params = [
- "perPage",
- "startingAfter",
- "endingBefore",
"networkIds",
+ "t0",
+ "t1",
+ "timespan",
+ "interval",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -4569,44 +10323,49 @@ def getOrganizationWirelessLocationScanningByNetwork(self, organizationId: str,
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"getOrganizationWirelessLocationScanningByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessRoamingByNetworkByInterval: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.get(metadata, resource, params)
- def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Return scanning API receivers**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-location-scanning-receivers
+ **List the L2 isolation allow list MAC entry in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-firewall-isolation-allowlist-entries
- 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 - 250. Default is 50.
+ - 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 parameter to filter scanning API receivers by network ID.
+ - networkIds (array): networkIds array to filter out results
+ - ssids (array): ssids number array to filter out results
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "getOrganizationWirelessLocationScanningReceivers",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
+ "ssids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "ssids",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4618,41 +10377,39 @@ def getOrganizationWirelessLocationScanningReceivers(self, organizationId: str,
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"getOrganizationWirelessLocationScanningReceivers: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessLocationScanningReceiver(
- self, organizationId: str, network: dict, url: str, version: str, radio: dict, sharedSecret: str, **kwargs
+ def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
+ self, organizationId: str, client: dict, ssid: dict, network: dict, **kwargs
):
"""
- **Add new receiver for scanning API**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-location-scanning-receiver
+ **Create isolation allow list MAC entry for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-firewall-isolation-allowlist-entry
- organizationId (string): Organization ID
- - network (object): Add scanning API receiver for network
- - url (string): Receiver Url
- - version (string): Scanning API Version
- - radio (object): Add scanning API Radio
- - sharedSecret (string): Secret Value for Receiver
+ - client (object): The client of allowlist
+ - ssid (object): The SSID that allowlist belongs to
+ - network (object): The Network that allowlist belongs to
+ - description (string): The description of mac address
"""
- kwargs = locals()
+ kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "createOrganizationWirelessLocationScanningReceiver",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers"
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
body_params = [
+ "description",
+ "client",
+ "ssid",
"network",
- "url",
- "version",
- "radio",
- "sharedSecret",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4661,37 +10418,54 @@ def createOrganizationWirelessLocationScanningReceiver(
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"createOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
- def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str, **kwargs):
+ def deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str):
"""
- **Change scanning API receiver settings**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-location-scanning-receiver
+ **Destroy isolation allow list MAC entry for this organization**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-firewall-isolation-allowlist-entry
- organizationId (string): Organization ID
- - receiverId (string): Receiver ID
- - url (string): Receiver Url
- - version (string): Scanning API Version
- - radio (object): Add scanning API Radio
+ - entryId (string): Entry ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ entryId = urllib.parse.quote(str(entryId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+
+ return self._session.delete(metadata, resource)
+
+ def updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str, **kwargs):
+ """
+ **Update isolation allow list MAC entry info**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-firewall-isolation-allowlist-entry
+
+ - organizationId (string): Organization ID
+ - entryId (string): Entry ID
+ - description (string): The description of mac address
+ - client (object): The client of allowlist
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "updateOrganizationWirelessLocationScanningReceiver",
+ "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
+ "operation": "updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- receiverId = urllib.parse.quote(str(receiverId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
+ entryId = urllib.parse.quote(str(entryId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
body_params = [
- "url",
- "version",
- "radio",
+ "description",
+ "client",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
@@ -4700,58 +10474,41 @@ def updateOrganizationWirelessLocationScanningReceiver(self, organizationId: str
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"updateOrganizationWirelessLocationScanningReceiver: ignoring unrecognized kwargs: {invalid}"
+ f"updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
)
return self._session.put(metadata, resource, payload)
- def deleteOrganizationWirelessLocationScanningReceiver(self, organizationId: str, receiverId: str):
- """
- **Delete a scanning API receiver**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-location-scanning-receiver
-
- - organizationId (string): Organization ID
- - receiverId (string): Receiver ID
- """
-
- metadata = {
- "tags": ["wireless", "configure", "location", "scanning", "receivers"],
- "operation": "deleteOrganizationWirelessLocationScanningReceiver",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- receiverId = urllib.parse.quote(str(receiverId), safe="")
- resource = f"/organizations/{organizationId}/wireless/location/scanning/receivers/{receiverId}"
-
- return self._session.delete(metadata, resource)
-
- def getOrganizationWirelessMqttSettings(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **Return MQTT Settings for networks**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-mqtt-settings
+ **Returns an array of objects, each containing SSID OpenRoaming configs for the corresponding network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-open-roaming-by-network
- 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 - 250. Default is 50.
+ - 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 parameter to filter mqtt settings by network ID.
+ - networkIds (array): Optional parameter to filter OpenRoaming configuration by Network Id.
+ - includeDisabledSsids (boolean): Optional parameter to include OpenRoaming configuration for disabled ssids.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "mqtt", "settings"],
- "operation": "getOrganizationWirelessMqttSettings",
+ "tags": ["wireless", "configure", "ssids", "openRoaming", "byNetwork"],
+ "operation": "getOrganizationWirelessSsidsOpenRoamingByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+ resource = f"/organizations/{organizationId}/wireless/ssids/openRoaming/byNetwork"
query_params = [
"perPage",
"startingAfter",
"endingBefore",
"networkIds",
+ "includeDisabledSsids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
@@ -4767,123 +10524,108 @@ def getOrganizationWirelessMqttSettings(self, organizationId: str, total_pages=1
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"getOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}")
+ self._session._logger.warning(
+ f"getOrganizationWirelessSsidsOpenRoamingByNetwork: ignoring unrecognized kwargs: {invalid}"
+ )
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def updateOrganizationWirelessMqttSettings(self, organizationId: str, network: dict, mqtt: dict, **kwargs):
+ def getOrganizationWirelessSsidsPoliciesClientExclusionBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Add new broker config for wireless MQTT**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-mqtt-settings
+ **Returns an array of objects, each containing client exclusion enablement statuses for one SSID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-policies-client-exclusion-by-ssid
- organizationId (string): Organization ID
- - network (object): Add MQTT Settings for network
- - mqtt (object): MQTT Settings for network
- - ble (object): MQTT BLE Settings for network
- - wifi (object): MQTT Wi-Fi Settings for network
+ - 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 - 100000. 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 parameter to filter by Network ID.
+ - includeDisabledSsids (boolean): Optional parameter to include disabled SSID's.
+ - ssidNumbers (array): Optional parameter to filter by SSID numbers.
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "mqtt", "settings"],
- "operation": "updateOrganizationWirelessMqttSettings",
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "bySsid"],
+ "operation": "getOrganizationWirelessSsidsPoliciesClientExclusionBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/mqtt/settings"
+ resource = f"/organizations/{organizationId}/wireless/ssids/policies/clientExclusion/bySsid"
- body_params = [
- "network",
- "mqtt",
- "ble",
- "wifi",
+ query_params = [
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ "networkIds",
+ "includeDisabledSsids",
+ "ssidNumbers",
]
- 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"updateOrganizationWirelessMqttSettings: ignoring unrecognized kwargs: {invalid}"
- )
-
- return self._session.put(metadata, resource, payload)
-
- def recalculateOrganizationWirelessRadioAutoRfChannels(self, organizationId: str, networkIds: list, **kwargs):
- """
- **Recalculates automatically assigned channels for every AP within specified the specified network(s)**
- https://developer.cisco.com/meraki/api-v1/#!recalculate-organization-wireless-radio-auto-rf-channels
-
- - organizationId (string): Organization ID
- - networkIds (array): A list of network ids (limit: 15).
- """
-
- kwargs = locals()
-
- metadata = {
- "tags": ["wireless", "configure", "radio", "autoRf", "channels"],
- "operation": "recalculateOrganizationWirelessRadioAutoRfChannels",
- }
- organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/radio/autoRf/channels/recalculate"
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
- body_params = [
+ array_params = [
"networkIds",
+ "ssidNumbers",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ 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 = [] + body_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(
- f"recalculateOrganizationWirelessRadioAutoRfChannels: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsPoliciesClientExclusionBySsid: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.post(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
- """
- **List the AutoRF settings of an organization by network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-radio-rrm-by-network
+ def getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **Returns an array of objects, each containing a list of MAC's excluded from a given SSID**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-policies-client-exclusion-static-exclusions-by-ssid
- 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
- - networkIds (array): Optional parameter to filter results by network.
- - startingAfter (string): Retrieving items after this network ID
- - endingBefore (string): Retrieving items before this network ID
- - perPage (integer): Number of items per page
- - sortOrder (string): The sort order of items
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100000. 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 parameter to filter Network ID.
+ - includeDisabledSsids (boolean): Optional parameter to include disabled SSID's.
+ - ssidNumbers (array): Optional parameter to filter by SSID numbers.
"""
kwargs.update(locals())
- if "sortOrder" in kwargs:
- options = ["ascending", "descending"]
- assert kwargs["sortOrder"] in options, (
- f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
- )
-
metadata = {
- "tags": ["wireless", "configure", "radio", "rrm", "byNetwork"],
- "operation": "getOrganizationWirelessRadioRrmByNetwork",
+ "tags": ["wireless", "configure", "ssids", "policies", "clientExclusion", "static", "exclusions", "bySsid"],
+ "operation": "getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/radio/rrm/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/ssids/policies/clientExclusion/static/exclusions/bySsid"
query_params = [
- "networkIds",
+ "perPage",
"startingAfter",
"endingBefore",
- "perPage",
- "sortOrder",
+ "networkIds",
+ "includeDisabledSsids",
+ "ssidNumbers",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
+ "ssidNumbers",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4895,66 +10637,61 @@ def getOrganizationWirelessRadioRrmByNetwork(self, organizationId: str, total_pa
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"getOrganizationWirelessRadioRrmByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsPoliciesClientExclusionStaticExclusionsBySsid: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessRfProfilesAssignmentsByDevice(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessSsidsProfiles(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **List the RF profiles of an organization by device**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-rf-profiles-assignments-by-device
+ **Returns the SSID profiles for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles
- 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
+ - name (string): (Optional) Filter results by name. Case insensitive substring match.
+ - sortBy (string): Column to sort results by. Default is `name`.
+ - sortOrder (string): Direction to sort results by. Default is `asc`.
+ - profileIds (array): (Optional) Filter results by a list of SSID profile IDs.
- 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 parameter to filter devices by network.
- - productTypes (array): Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.
- - name (string): Optional parameter to filter RF profiles by device name. All returned devices will have a name that contains the search term or is an exact match.
- - mac (string): Optional parameter to filter RF profiles by device MAC address. All returned devices will have a MAC address that contains the search term or is an exact match.
- - serial (string): Optional parameter to filter RF profiles by device serial number. All returned devices will have a serial number that contains the search term or is an exact match.
- - model (string): Optional parameter to filter RF profiles by device model. All returned devices will have a model that contains the search term or is an exact match.
- - macs (array): Optional parameter to filter RF profiles by one or more device MAC addresses. All returned devices will have a MAC address that is an exact match.
- - serials (array): Optional parameter to filter RF profiles by one or more device serial numbers. All returned devices will have a serial number that is an exact match.
- - models (array): Optional parameter to filter RF profiles by one or more device models. All returned devices will have a model that is an exact match.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "rfProfiles", "assignments", "byDevice"],
- "operation": "getOrganizationWirelessRfProfilesAssignmentsByDevice",
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "getOrganizationWirelessSsidsProfiles",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/rfProfiles/assignments/byDevice"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles"
query_params = [
+ "name",
+ "sortBy",
+ "sortOrder",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "productTypes",
- "name",
- "mac",
- "serial",
- "model",
- "macs",
- "serials",
- "models",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
- "productTypes",
- "macs",
- "serials",
- "models",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -4964,51 +10701,87 @@ def getOrganizationWirelessRfProfilesAssignmentsByDevice(
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"getOrganizationWirelessSsidsProfiles: ignoring unrecognized kwargs: {invalid}")
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def createOrganizationWirelessSsidsProfile(self, organizationId: str, name: str, ssid: dict, **kwargs):
+ """
+ **Create a new SSID profile in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ - precedence (object): Precedence configuration for the SSID profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "createOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles"
+
+ body_params = [
+ "name",
+ "precedence",
+ "ssid",
+ ]
+ 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"getOrganizationWirelessRfProfilesAssignmentsByDevice: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsProfile: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ return self._session.post(metadata, resource, payload)
- def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
- self, organizationId: str, total_pages=1, direction="next", **kwargs
- ):
+ def getOrganizationWirelessSsidsProfilesAssignments(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **List the L2 isolation allow list MAC entry in an organization**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-firewall-isolation-allowlist-entries
+ **List the SSID profile assignments in an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-assignments
- 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
+ - networkIds (array): The network IDs to include in the result set.
+ - ssidIds (array): The SSID IDs to include in the result set.
+ - profileIds (array): The SSID profile IDs to include in the result set.
- 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): networkIds array to filter out results
- - ssids (array): ssids number array to filter out results
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "getOrganizationWirelessSsidsProfilesAssignments",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
query_params = [
+ "networkIds",
+ "ssidIds",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "ssids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
"networkIds",
- "ssids",
+ "ssidIds",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -5020,37 +10793,33 @@ def getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries(
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"getOrganizationWirelessSsidsFirewallIsolationAllowlistEntries: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesAssignments: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
- self, organizationId: str, client: dict, ssid: dict, network: dict, **kwargs
- ):
+ def createOrganizationWirelessSsidsProfilesAssignment(self, organizationId: str, profile: dict, ssid: dict, **kwargs):
"""
- **Create isolation allow list MAC entry for this organization**
- https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **Assigns an SSID profile to an SSID in the organization**
+ https://developer.cisco.com/meraki/api-v1/#!create-organization-wireless-ssids-profiles-assignment
- organizationId (string): Organization ID
- - client (object): The client of allowlist
- - ssid (object): The SSID that allowlist belongs to
- - network (object): The Network that allowlist belongs to
- - description (string): The description of mac address
+ - profile (object): SSID profile to assign
+ - ssid (object): SSID to assign the SSID profile to
+ - network (object): Network containing the SSID (required if SSID number is used)
"""
kwargs.update(locals())
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "createOrganizationWirelessSsidsProfilesAssignment",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
body_params = [
- "description",
- "client",
+ "profile",
"ssid",
"network",
]
@@ -5061,102 +10830,161 @@ def createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(
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"createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
+ f"createOrganizationWirelessSsidsProfilesAssignment: ignoring unrecognized kwargs: {invalid}"
)
return self._session.post(metadata, resource, payload)
- def deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str):
+ def deleteOrganizationWirelessSsidsProfilesAssignments(self, organizationId: str, ssid: dict, **kwargs):
"""
- **Destroy isolation allow list MAC entry for this organization**
- https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **Unassigns the SSID profile assigned to an SSID**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profiles-assignments
- organizationId (string): Organization ID
- - entryId (string): Entry ID
+ - ssid (object): SSID to delete the SSID profile assignment of
+ - network (object): Network containing the SSID (required if SSID number is used)
"""
+ kwargs.update(locals())
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "deleteOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments"],
+ "operation": "deleteOrganizationWirelessSsidsProfilesAssignments",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- entryId = urllib.parse.quote(str(entryId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments"
return self._session.delete(metadata, resource)
- def updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry(self, organizationId: str, entryId: str, **kwargs):
+ def getOrganizationWirelessSsidsProfilesAssignmentsByNetwork(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
"""
- **Update isolation allow list MAC entry info**
- https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-firewall-isolation-allowlist-entry
+ **List the SSID profile assignments in an organization, grouped by network**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-assignments-by-network
- organizationId (string): Organization ID
- - entryId (string): Entry ID
- - description (string): The description of mac address
- - client (object): The client of allowlist
+ - 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
+ - networkIds (array): The network IDs to include in the result set.
+ - profileIds (array): The SSID profile IDs to include in the result set.
+ - networkGroupIds (array): The network group IDs to include in the result set.
+ - includeAllNetworks (boolean): When set to true, include all networks in the organization, even those without any SSID profile assignments. Defaults to false.
+ - excludeProfileIds (array): The SSID profile IDs to exclude from the result set.
+ - sortBy (string): Optional parameter to specify the field used to sort results. (default: network)
+ - sortOrder (string): Optional parameter to specify the sort order. Default value is asc.
+ - search (string): Optional parameter to search on network name or network group name.
+ - 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.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["group", "network"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "firewall", "isolation", "allowlist", "entries"],
- "operation": "updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry",
+ "tags": ["wireless", "configure", "ssids", "profiles", "assignments", "byNetwork"],
+ "operation": "getOrganizationWirelessSsidsProfilesAssignmentsByNetwork",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- entryId = urllib.parse.quote(str(entryId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/firewall/isolation/allowlist/entries/{entryId}"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/assignments/byNetwork"
- body_params = [
- "description",
- "client",
+ query_params = [
+ "networkIds",
+ "profileIds",
+ "networkGroupIds",
+ "includeAllNetworks",
+ "excludeProfileIds",
+ "sortBy",
+ "sortOrder",
+ "search",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
]
- payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "networkIds",
+ "profileIds",
+ "networkGroupIds",
+ "excludeProfileIds",
+ ]
+ 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 = [] + body_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(
- f"updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesAssignmentsByNetwork: ignoring unrecognized kwargs: {invalid}"
)
- return self._session.put(metadata, resource, payload)
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
- def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs):
+ def getOrganizationWirelessSsidsProfilesOverviews(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
- **Returns an array of objects, each containing SSID OpenRoaming configs for the corresponding network**
- https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-open-roaming-by-network
+ **Returns the SSID profiles' overview information for an organization**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-ssids-profiles-overviews
- 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
+ - name (string): (Optional) Filter results by name. Case insensitive substring match.
+ - sortBy (string): Column to sort results by. Default is `name`.
+ - sortOrder (string): Direction to sort results by. Default is `asc`.
+ - profileIds (array): (Optional) Filter results by a list of SSID profile IDs.
- 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 parameter to filter OpenRoaming configuration by Network Id.
- - includeDisabledSsids (boolean): Optional parameter to include OpenRoaming configuration for disabled ssids.
"""
kwargs.update(locals())
+ if "sortBy" in kwargs:
+ options = ["name"]
+ assert kwargs["sortBy"] in options, (
+ f'''"sortBy" cannot be "{kwargs["sortBy"]}", & must be set to one of: {options}'''
+ )
+ if "sortOrder" in kwargs:
+ options = ["asc", "desc"]
+ assert kwargs["sortOrder"] in options, (
+ f'''"sortOrder" cannot be "{kwargs["sortOrder"]}", & must be set to one of: {options}'''
+ )
+
metadata = {
- "tags": ["wireless", "configure", "ssids", "openRoaming", "byNetwork"],
- "operation": "getOrganizationWirelessSsidsOpenRoamingByNetwork",
+ "tags": ["wireless", "configure", "ssids", "profiles", "overviews"],
+ "operation": "getOrganizationWirelessSsidsProfilesOverviews",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
- resource = f"/organizations/{organizationId}/wireless/ssids/openRoaming/byNetwork"
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/overviews"
query_params = [
+ "name",
+ "sortBy",
+ "sortOrder",
+ "profileIds",
"perPage",
"startingAfter",
"endingBefore",
- "networkIds",
- "includeDisabledSsids",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
array_params = [
- "networkIds",
+ "profileIds",
]
for k, v in kwargs.items():
if k.strip() in array_params:
@@ -5168,11 +10996,67 @@ def getOrganizationWirelessSsidsOpenRoamingByNetwork(self, organizationId: str,
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"getOrganizationWirelessSsidsOpenRoamingByNetwork: ignoring unrecognized kwargs: {invalid}"
+ f"getOrganizationWirelessSsidsProfilesOverviews: ignoring unrecognized kwargs: {invalid}"
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def updateOrganizationWirelessSsidsProfile(self, organizationId: str, id: str, **kwargs):
+ """
+ **Update this SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!update-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ - name (string): Name of the SSID profile
+ - ssid (object): SSID configuration for the profile
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "updateOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ body_params = [
+ "name",
+ "ssid",
+ ]
+ 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"updateOrganizationWirelessSsidsProfile: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.put(metadata, resource, payload)
+
+ def deleteOrganizationWirelessSsidsProfile(self, organizationId: str, id: str):
+ """
+ **Delete an SSID profile**
+ https://developer.cisco.com/meraki/api-v1/#!delete-organization-wireless-ssids-profile
+
+ - organizationId (string): Organization ID
+ - id (string): ID
+ """
+
+ metadata = {
+ "tags": ["wireless", "configure", "ssids", "profiles"],
+ "operation": "deleteOrganizationWirelessSsidsProfile",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ id = urllib.parse.quote(str(id), safe="")
+ resource = f"/organizations/{organizationId}/wireless/ssids/profiles/{id}"
+
+ return self._session.delete(metadata, resource)
+
def getOrganizationWirelessSsidsStatusesByDevice(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List status information of all BSSIDs in your organization**
diff --git a/meraki/api/wirelessController.py b/meraki/api/wirelessController.py
index 23510e4..3ba7fa1 100644
--- a/meraki/api/wirelessController.py
+++ b/meraki/api/wirelessController.py
@@ -177,6 +177,59 @@ def getOrganizationWirelessControllerConnections(self, organizationId: str, tota
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+ def getOrganizationWirelessControllerConnectionsUnassigned(
+ self, organizationId: str, total_pages=1, direction="next", **kwargs
+ ):
+ """
+ **List of unassigned Catalyst access points and summary information**
+ https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-controller-connections-unassigned
+
+ - 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
+ - controllerSerials (array): Optional parameter to filter access points by wireless LAN controller cloud ID. This filter uses multiple exact matches.
+ - supported (boolean): Optional parameter to filter access points based on if they are supported for dashboard monitoring. Values can be true/false, if not provided then all unassigned APs will be returned
+ - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
+ - 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": ["wirelessController", "configure", "connections", "unassigned"],
+ "operation": "getOrganizationWirelessControllerConnectionsUnassigned",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wirelessController/connections/unassigned"
+
+ query_params = [
+ "controllerSerials",
+ "supported",
+ "perPage",
+ "startingAfter",
+ "endingBefore",
+ ]
+ params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}
+
+ array_params = [
+ "controllerSerials",
+ ]
+ 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"getOrganizationWirelessControllerConnectionsUnassigned: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
def getOrganizationWirelessControllerDevicesInterfacesL2ByDevice(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
@@ -861,3 +914,36 @@ def getOrganizationWirelessControllerOverviewByDevice(
)
return self._session.get_pages(metadata, resource, params, total_pages, direction)
+
+ def generateOrganizationWirelessControllerRegulatoryDomainPackage(self, organizationId: str, **kwargs):
+ """
+ **Generate the regulatory domain package**
+ https://developer.cisco.com/meraki/api-v1/#!generate-organization-wireless-controller-regulatory-domain-package
+
+ - organizationId (string): Organization ID
+ - networkIds (array): A list of network IDs to filter by
+ """
+
+ kwargs.update(locals())
+
+ metadata = {
+ "tags": ["wirelessController", "configure", "regulatoryDomain", "package"],
+ "operation": "generateOrganizationWirelessControllerRegulatoryDomainPackage",
+ }
+ organizationId = urllib.parse.quote(str(organizationId), safe="")
+ resource = f"/organizations/{organizationId}/wirelessController/regulatoryDomain/package/generate"
+
+ body_params = [
+ "networkIds",
+ ]
+ 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"generateOrganizationWirelessControllerRegulatoryDomainPackage: ignoring unrecognized kwargs: {invalid}"
+ )
+
+ return self._session.post(metadata, resource, payload)