diff --git a/meraki/__init__.py b/meraki/__init__.py index c6ed96b..ece0aa5 100644 --- a/meraki/__init__.py +++ b/meraki/__init__.py @@ -51,7 +51,7 @@ from meraki._version import __version__ as __version__ # noqa: F401 from datetime import datetime -__api_version__ = "1.68.0" +__api_version__ = "1.69.0" class DashboardAPI(object): diff --git a/meraki/_version.py b/meraki/_version.py index 8a124bf..528787c 100644 --- a/meraki/_version.py +++ b/meraki/_version.py @@ -1 +1 @@ -__version__ = "2.2.0" +__version__ = "3.0.0" diff --git a/meraki/aio/api/administered.py b/meraki/aio/api/administered.py index 4568a92..86a4429 100644 --- a/meraki/aio/api/administered.py +++ b/meraki/aio/api/administered.py @@ -5,8 +5,6 @@ class AsyncAdministered: def __init__(self, session): super().__init__() self._session = session - - def getAdministeredIdentitiesMe(self): """ @@ -16,14 +14,12 @@ def getAdministeredIdentitiesMe(self): """ metadata = { - 'tags': ['administered', 'monitor', 'identities', 'me'], - 'operation': 'getAdministeredIdentitiesMe' + "tags": ["administered", "monitor", "identities", "me"], + "operation": "getAdministeredIdentitiesMe", } - resource = f'/administered/identities/me' + resource = "/administered/identities/me" return self._session.get(metadata, resource) - - def getAdministeredIdentitiesMeApiKeys(self): """ @@ -33,14 +29,12 @@ def getAdministeredIdentitiesMeApiKeys(self): """ metadata = { - 'tags': ['administered', 'configure', 'identities', 'me', 'api', 'keys'], - 'operation': 'getAdministeredIdentitiesMeApiKeys' + "tags": ["administered", "configure", "identities", "me", "api", "keys"], + "operation": "getAdministeredIdentitiesMeApiKeys", } - resource = f'/administered/identities/me/api/keys' + resource = "/administered/identities/me/api/keys" return self._session.get(metadata, resource) - - def generateAdministeredIdentitiesMeApiKeys(self): """ @@ -50,14 +44,12 @@ def generateAdministeredIdentitiesMeApiKeys(self): """ metadata = { - 'tags': ['administered', 'configure', 'identities', 'me', 'api', 'keys'], - 'operation': 'generateAdministeredIdentitiesMeApiKeys' + "tags": ["administered", "configure", "identities", "me", "api", "keys"], + "operation": "generateAdministeredIdentitiesMeApiKeys", } - resource = f'/administered/identities/me/api/keys/generate' + resource = "/administered/identities/me/api/keys/generate" return self._session.post(metadata, resource) - - def revokeAdministeredIdentitiesMeApiKeys(self, suffix: str): """ @@ -68,11 +60,10 @@ def revokeAdministeredIdentitiesMeApiKeys(self, suffix: str): """ metadata = { - 'tags': ['administered', 'configure', 'identities', 'me', 'api', 'keys'], - 'operation': 'revokeAdministeredIdentitiesMeApiKeys' + "tags": ["administered", "configure", "identities", "me", "api", "keys"], + "operation": "revokeAdministeredIdentitiesMeApiKeys", } - suffix = urllib.parse.quote(str(suffix), safe='') - resource = f'/administered/identities/me/api/keys/{suffix}/revoke' + suffix = urllib.parse.quote(str(suffix), safe="") + resource = f"/administered/identities/me/api/keys/{suffix}/revoke" return self._session.post(metadata, resource) - diff --git a/meraki/aio/api/appliance.py b/meraki/aio/api/appliance.py index 635dad8..6e887b6 100644 --- a/meraki/aio/api/appliance.py +++ b/meraki/aio/api/appliance.py @@ -5,8 +5,6 @@ class AsyncAppliance: def __init__(self, session): super().__init__() self._session = session - - def getDeviceApplianceDhcpSubnets(self, serial: str): """ @@ -17,15 +15,13 @@ def getDeviceApplianceDhcpSubnets(self, serial: str): """ metadata = { - 'tags': ['appliance', 'monitor', 'dhcp', 'subnets'], - 'operation': 'getDeviceApplianceDhcpSubnets' + "tags": ["appliance", "monitor", "dhcp", "subnets"], + "operation": "getDeviceApplianceDhcpSubnets", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/dhcp/subnets' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/dhcp/subnets" return self._session.get(metadata, resource) - - def getDeviceAppliancePerformance(self, serial: str, **kwargs): """ @@ -41,18 +37,20 @@ def getDeviceAppliancePerformance(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'performance'], - 'operation': 'getDeviceAppliancePerformance' + "tags": ["appliance", "monitor", "performance"], + "operation": "getDeviceAppliancePerformance", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/performance' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/performance" - query_params = ['t0', 't1', 'timespan', ] + query_params = [ + "t0", + "t1", + "timespan", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getDeviceAppliancePrefixesDelegated(self, serial: str): """ @@ -63,15 +61,13 @@ def getDeviceAppliancePrefixesDelegated(self, serial: str): """ metadata = { - 'tags': ['appliance', 'monitor', 'prefixes', 'delegated'], - 'operation': 'getDeviceAppliancePrefixesDelegated' + "tags": ["appliance", "monitor", "prefixes", "delegated"], + "operation": "getDeviceAppliancePrefixesDelegated", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/prefixes/delegated' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/prefixes/delegated" return self._session.get(metadata, resource) - - def getDeviceAppliancePrefixesDelegatedVlanAssignments(self, serial: str): """ @@ -82,15 +78,13 @@ def getDeviceAppliancePrefixesDelegatedVlanAssignments(self, serial: str): """ metadata = { - 'tags': ['appliance', 'monitor', 'prefixes', 'delegated', 'vlanAssignments'], - 'operation': 'getDeviceAppliancePrefixesDelegatedVlanAssignments' + "tags": ["appliance", "monitor", "prefixes", "delegated", "vlanAssignments"], + "operation": "getDeviceAppliancePrefixesDelegatedVlanAssignments", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/prefixes/delegated/vlanAssignments' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/prefixes/delegated/vlanAssignments" return self._session.get(metadata, resource) - - def getDeviceApplianceRadioSettings(self, serial: str): """ @@ -101,15 +95,13 @@ def getDeviceApplianceRadioSettings(self, serial: str): """ metadata = { - 'tags': ['appliance', 'configure', 'radio', 'settings'], - 'operation': 'getDeviceApplianceRadioSettings' + "tags": ["appliance", "configure", "radio", "settings"], + "operation": "getDeviceApplianceRadioSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/radio/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/radio/settings" return self._session.get(metadata, resource) - - def updateDeviceApplianceRadioSettings(self, serial: str, **kwargs): """ @@ -125,41 +117,41 @@ def updateDeviceApplianceRadioSettings(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'radio', 'settings'], - 'operation': 'updateDeviceApplianceRadioSettings' + "tags": ["appliance", "configure", "radio", "settings"], + "operation": "updateDeviceApplianceRadioSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/radio/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/radio/settings" - body_params = ['rfProfileId', 'twoFourGhzSettings', 'fiveGhzSettings', ] + body_params = [ + "rfProfileId", + "twoFourGhzSettings", + "fiveGhzSettings", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceApplianceUplinksSettings(self, serial: str): """ - **Return the uplink settings for an MX appliance** + **Return the uplink settings for a secure router or security appliance** https://developer.cisco.com/meraki/api-v1/#!get-device-appliance-uplinks-settings - serial (string): Serial """ metadata = { - 'tags': ['appliance', 'configure', 'uplinks', 'settings'], - 'operation': 'getDeviceApplianceUplinksSettings' + "tags": ["appliance", "configure", "uplinks", "settings"], + "operation": "getDeviceApplianceUplinksSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/uplinks/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/uplinks/settings" return self._session.get(metadata, resource) - - def updateDeviceApplianceUplinksSettings(self, serial: str, interfaces: dict): """ - **Update the uplink settings for an MX appliance** + **Update the uplink settings for a secure router or security appliance** https://developer.cisco.com/meraki/api-v1/#!update-device-appliance-uplinks-settings - serial (string): Serial @@ -169,18 +161,18 @@ def updateDeviceApplianceUplinksSettings(self, serial: str, interfaces: dict): kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'uplinks', 'settings'], - 'operation': 'updateDeviceApplianceUplinksSettings' + "tags": ["appliance", "configure", "uplinks", "settings"], + "operation": "updateDeviceApplianceUplinksSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/uplinks/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/uplinks/settings" - body_params = ['interfaces', ] + body_params = [ + "interfaces", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def createDeviceApplianceVmxAuthenticationToken(self, serial: str): """ @@ -191,17 +183,17 @@ def createDeviceApplianceVmxAuthenticationToken(self, serial: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vmx', 'authenticationToken'], - 'operation': 'createDeviceApplianceVmxAuthenticationToken' + "tags": ["appliance", "configure", "vmx", "authenticationToken"], + "operation": "createDeviceApplianceVmxAuthenticationToken", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/appliance/vmx/authenticationToken' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/appliance/vmx/authenticationToken" return self._session.post(metadata, resource) - - - def getNetworkApplianceClientSecurityEvents(self, networkId: str, clientId: str, total_pages=1, direction='next', **kwargs): + def getNetworkApplianceClientSecurityEvents( + self, networkId: str, clientId: str, total_pages=1, direction="next", **kwargs + ): """ **List the security events for a client** https://developer.cisco.com/meraki/api-v1/#!get-network-appliance-client-security-events @@ -221,24 +213,32 @@ def getNetworkApplianceClientSecurityEvents(self, networkId: str, clientId: str, 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': ['appliance', 'monitor', 'clients', 'security', 'events'], - 'operation': 'getNetworkApplianceClientSecurityEvents' - } - networkId = urllib.parse.quote(str(networkId), safe='') - clientId = urllib.parse.quote(str(clientId), safe='') - resource = f'/networks/{networkId}/appliance/clients/{clientId}/security/events' - - query_params = ['t0', 't1', 'timespan', 'perPage', 'startingAfter', 'endingBefore', 'sortOrder', ] + 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": ["appliance", "monitor", "clients", "security", "events"], + "operation": "getNetworkApplianceClientSecurityEvents", + } + networkId = urllib.parse.quote(str(networkId), safe="") + clientId = urllib.parse.quote(str(clientId), safe="") + resource = f"/networks/{networkId}/appliance/clients/{clientId}/security/events" + + query_params = [ + "t0", + "t1", + "timespan", + "perPage", + "startingAfter", + "endingBefore", + "sortOrder", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get_pages(metadata, resource, params, total_pages, direction) - - def getNetworkApplianceConnectivityMonitoringDestinations(self, networkId: str): """ @@ -249,15 +249,13 @@ def getNetworkApplianceConnectivityMonitoringDestinations(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'connectivityMonitoringDestinations'], - 'operation': 'getNetworkApplianceConnectivityMonitoringDestinations' + "tags": ["appliance", "configure", "connectivityMonitoringDestinations"], + "operation": "getNetworkApplianceConnectivityMonitoringDestinations", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/connectivityMonitoringDestinations' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/connectivityMonitoringDestinations" return self._session.get(metadata, resource) - - def updateNetworkApplianceConnectivityMonitoringDestinations(self, networkId: str, **kwargs): """ @@ -271,18 +269,18 @@ def updateNetworkApplianceConnectivityMonitoringDestinations(self, networkId: st kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'connectivityMonitoringDestinations'], - 'operation': 'updateNetworkApplianceConnectivityMonitoringDestinations' + "tags": ["appliance", "configure", "connectivityMonitoringDestinations"], + "operation": "updateNetworkApplianceConnectivityMonitoringDestinations", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/connectivityMonitoringDestinations' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/connectivityMonitoringDestinations" - body_params = ['destinations', ] + body_params = [ + "destinations", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceContentFiltering(self, networkId: str): """ @@ -293,15 +291,13 @@ def getNetworkApplianceContentFiltering(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'contentFiltering'], - 'operation': 'getNetworkApplianceContentFiltering' + "tags": ["appliance", "configure", "contentFiltering"], + "operation": "getNetworkApplianceContentFiltering", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/contentFiltering' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/contentFiltering" return self._session.get(metadata, resource) - - def updateNetworkApplianceContentFiltering(self, networkId: str, **kwargs): """ @@ -317,23 +313,28 @@ def updateNetworkApplianceContentFiltering(self, networkId: str, **kwargs): kwargs.update(locals()) - if 'urlCategoryListSize' in kwargs: - options = ['fullList', 'topSites'] - assert kwargs['urlCategoryListSize'] in options, f'''"urlCategoryListSize" cannot be "{kwargs['urlCategoryListSize']}", & must be set to one of: {options}''' + if "urlCategoryListSize" in kwargs: + options = ["fullList", "topSites"] + assert kwargs["urlCategoryListSize"] in options, ( + f'''"urlCategoryListSize" cannot be "{kwargs["urlCategoryListSize"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['appliance', 'configure', 'contentFiltering'], - 'operation': 'updateNetworkApplianceContentFiltering' + "tags": ["appliance", "configure", "contentFiltering"], + "operation": "updateNetworkApplianceContentFiltering", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/contentFiltering' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/contentFiltering" - body_params = ['allowedUrlPatterns', 'blockedUrlPatterns', 'blockedUrlCategories', 'urlCategoryListSize', ] + body_params = [ + "allowedUrlPatterns", + "blockedUrlPatterns", + "blockedUrlCategories", + "urlCategoryListSize", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceContentFilteringCategories(self, networkId: str): """ @@ -344,15 +345,65 @@ def getNetworkApplianceContentFilteringCategories(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'contentFiltering', 'categories'], - 'operation': 'getNetworkApplianceContentFilteringCategories' + "tags": ["appliance", "configure", "contentFiltering", "categories"], + "operation": "getNetworkApplianceContentFilteringCategories", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/contentFiltering/categories' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/contentFiltering/categories" return self._session.get(metadata, resource) - + def updateNetworkApplianceDevicesRedundancy(self, networkId: str, enabled: bool, **kwargs): + """ + **Update MX warm spare settings** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-devices-redundancy + + - networkId (string): Network ID + - enabled (boolean): Enable warm spare + - mode (string): HA mode (disabled|active-passive|active-active) + - designations (array): Ordered warm spare roles + - uplink (object): Uplink configuration + """ + + kwargs.update(locals()) + + if "mode" in kwargs: + options = ["active-active", "active-passive", "disabled"] + assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}''' + + metadata = { + "tags": ["appliance", "configure", "devices", "redundancy"], + "operation": "updateNetworkApplianceDevicesRedundancy", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/devices/redundancy" + + body_params = [ + "enabled", + "mode", + "designations", + "uplink", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) + + def createNetworkApplianceDevicesRedundancySwap(self, networkId: str): + """ + **Swap MX primary and warm spare appliances** + https://developer.cisco.com/meraki/api-v1/#!create-network-appliance-devices-redundancy-swap + + - networkId (string): Network ID + """ + + metadata = { + "tags": ["appliance", "configure", "devices", "redundancy", "swap"], + "operation": "createNetworkApplianceDevicesRedundancySwap", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/devices/redundancy/swap" + + return self._session.post(metadata, resource) def getNetworkApplianceFirewallCellularFirewallRules(self, networkId: str): """ @@ -363,15 +414,13 @@ def getNetworkApplianceFirewallCellularFirewallRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'cellularFirewallRules'], - 'operation': 'getNetworkApplianceFirewallCellularFirewallRules' + "tags": ["appliance", "configure", "firewall", "cellularFirewallRules"], + "operation": "getNetworkApplianceFirewallCellularFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/cellularFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/cellularFirewallRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallCellularFirewallRules(self, networkId: str, **kwargs): """ @@ -385,18 +434,18 @@ def updateNetworkApplianceFirewallCellularFirewallRules(self, networkId: str, ** kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'cellularFirewallRules'], - 'operation': 'updateNetworkApplianceFirewallCellularFirewallRules' + "tags": ["appliance", "configure", "firewall", "cellularFirewallRules"], + "operation": "updateNetworkApplianceFirewallCellularFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/cellularFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/cellularFirewallRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallFirewalledServices(self, networkId: str): """ @@ -407,15 +456,13 @@ def getNetworkApplianceFirewallFirewalledServices(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'firewalledServices'], - 'operation': 'getNetworkApplianceFirewallFirewalledServices' + "tags": ["appliance", "configure", "firewall", "firewalledServices"], + "operation": "getNetworkApplianceFirewallFirewalledServices", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/firewalledServices' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/firewalledServices" return self._session.get(metadata, resource) - - def getNetworkApplianceFirewallFirewalledService(self, networkId: str, service: str): """ @@ -427,16 +474,14 @@ def getNetworkApplianceFirewallFirewalledService(self, networkId: str, service: """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'firewalledServices'], - 'operation': 'getNetworkApplianceFirewallFirewalledService' + "tags": ["appliance", "configure", "firewall", "firewalledServices"], + "operation": "getNetworkApplianceFirewallFirewalledService", } - networkId = urllib.parse.quote(str(networkId), safe='') - service = urllib.parse.quote(str(service), safe='') - resource = f'/networks/{networkId}/appliance/firewall/firewalledServices/{service}' + networkId = urllib.parse.quote(str(networkId), safe="") + service = urllib.parse.quote(str(service), safe="") + resource = f"/networks/{networkId}/appliance/firewall/firewalledServices/{service}" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallFirewalledService(self, networkId: str, service: str, access: str, **kwargs): """ @@ -451,24 +496,27 @@ def updateNetworkApplianceFirewallFirewalledService(self, networkId: str, servic kwargs.update(locals()) - if 'access' in kwargs: - options = ['blocked', 'restricted', 'unrestricted'] - assert kwargs['access'] in options, f'''"access" cannot be "{kwargs['access']}", & must be set to one of: {options}''' + if "access" in kwargs: + options = ["blocked", "restricted", "unrestricted"] + assert kwargs["access"] in options, ( + f'''"access" cannot be "{kwargs["access"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'firewalledServices'], - 'operation': 'updateNetworkApplianceFirewallFirewalledService' + "tags": ["appliance", "configure", "firewall", "firewalledServices"], + "operation": "updateNetworkApplianceFirewallFirewalledService", } - networkId = urllib.parse.quote(str(networkId), safe='') - service = urllib.parse.quote(str(service), safe='') - resource = f'/networks/{networkId}/appliance/firewall/firewalledServices/{service}' + networkId = urllib.parse.quote(str(networkId), safe="") + service = urllib.parse.quote(str(service), safe="") + resource = f"/networks/{networkId}/appliance/firewall/firewalledServices/{service}" - body_params = ['access', 'allowedIps', ] + body_params = [ + "access", + "allowedIps", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallInboundCellularFirewallRules(self, networkId: str): """ @@ -479,15 +527,13 @@ def getNetworkApplianceFirewallInboundCellularFirewallRules(self, networkId: str """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'inboundCellularFirewallRules'], - 'operation': 'getNetworkApplianceFirewallInboundCellularFirewallRules' + "tags": ["appliance", "configure", "firewall", "inboundCellularFirewallRules"], + "operation": "getNetworkApplianceFirewallInboundCellularFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/inboundCellularFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/inboundCellularFirewallRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallInboundCellularFirewallRules(self, networkId: str, **kwargs): """ @@ -501,18 +547,18 @@ def updateNetworkApplianceFirewallInboundCellularFirewallRules(self, networkId: kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'inboundCellularFirewallRules'], - 'operation': 'updateNetworkApplianceFirewallInboundCellularFirewallRules' + "tags": ["appliance", "configure", "firewall", "inboundCellularFirewallRules"], + "operation": "updateNetworkApplianceFirewallInboundCellularFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/inboundCellularFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/inboundCellularFirewallRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallInboundFirewallRules(self, networkId: str): """ @@ -523,15 +569,13 @@ def getNetworkApplianceFirewallInboundFirewallRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'inboundFirewallRules'], - 'operation': 'getNetworkApplianceFirewallInboundFirewallRules' + "tags": ["appliance", "configure", "firewall", "inboundFirewallRules"], + "operation": "getNetworkApplianceFirewallInboundFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/inboundFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/inboundFirewallRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallInboundFirewallRules(self, networkId: str, **kwargs): """ @@ -546,18 +590,19 @@ def updateNetworkApplianceFirewallInboundFirewallRules(self, networkId: str, **k kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'inboundFirewallRules'], - 'operation': 'updateNetworkApplianceFirewallInboundFirewallRules' + "tags": ["appliance", "configure", "firewall", "inboundFirewallRules"], + "operation": "updateNetworkApplianceFirewallInboundFirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/inboundFirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/inboundFirewallRules" - body_params = ['rules', 'syslogDefaultRule', ] + body_params = [ + "rules", + "syslogDefaultRule", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallL3FirewallRules(self, networkId: str): """ @@ -568,15 +613,13 @@ def getNetworkApplianceFirewallL3FirewallRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'l3FirewallRules'], - 'operation': 'getNetworkApplianceFirewallL3FirewallRules' + "tags": ["appliance", "configure", "firewall", "l3FirewallRules"], + "operation": "getNetworkApplianceFirewallL3FirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/l3FirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/l3FirewallRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallL3FirewallRules(self, networkId: str, **kwargs): """ @@ -591,18 +634,19 @@ def updateNetworkApplianceFirewallL3FirewallRules(self, networkId: str, **kwargs kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'l3FirewallRules'], - 'operation': 'updateNetworkApplianceFirewallL3FirewallRules' + "tags": ["appliance", "configure", "firewall", "l3FirewallRules"], + "operation": "updateNetworkApplianceFirewallL3FirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/l3FirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/l3FirewallRules" - body_params = ['rules', 'syslogDefaultRule', ] + body_params = [ + "rules", + "syslogDefaultRule", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallL7FirewallRules(self, networkId: str): """ @@ -613,15 +657,13 @@ def getNetworkApplianceFirewallL7FirewallRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'l7FirewallRules'], - 'operation': 'getNetworkApplianceFirewallL7FirewallRules' + "tags": ["appliance", "configure", "firewall", "l7FirewallRules"], + "operation": "getNetworkApplianceFirewallL7FirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/l7FirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/l7FirewallRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallL7FirewallRules(self, networkId: str, **kwargs): """ @@ -629,24 +671,24 @@ def updateNetworkApplianceFirewallL7FirewallRules(self, networkId: str, **kwargs https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-firewall-l-7-firewall-rules - networkId (string): Network ID - - rules (array): An ordered array of the MX L7 firewall rules + - rules (array): An ordered array of the MX L7 firewall rules. Each rule is an object with 'policy', 'type', and 'value'. The 'value' shape depends on 'type': object for application/applicationCategory, string for host/port/ipRange, and an array of 2-letter ISO 3166-1 alpha-2 country codes for allowedCountries/blockedCountries. For backward compatibility, request types also accept whitelistedCountries/blacklistedCountries. """ kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'l7FirewallRules'], - 'operation': 'updateNetworkApplianceFirewallL7FirewallRules' + "tags": ["appliance", "configure", "firewall", "l7FirewallRules"], + "operation": "updateNetworkApplianceFirewallL7FirewallRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/l7FirewallRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/l7FirewallRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallL7FirewallRulesApplicationCategories(self, networkId: str): """ @@ -657,15 +699,13 @@ def getNetworkApplianceFirewallL7FirewallRulesApplicationCategories(self, networ """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'l7FirewallRules', 'applicationCategories'], - 'operation': 'getNetworkApplianceFirewallL7FirewallRulesApplicationCategories' + "tags": ["appliance", "configure", "firewall", "l7FirewallRules", "applicationCategories"], + "operation": "getNetworkApplianceFirewallL7FirewallRulesApplicationCategories", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/l7FirewallRules/applicationCategories' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/l7FirewallRules/applicationCategories" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallMulticastForwarding(self, networkId: str, rules: list): """ @@ -679,18 +719,18 @@ def updateNetworkApplianceFirewallMulticastForwarding(self, networkId: str, rule kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'multicastForwarding'], - 'operation': 'updateNetworkApplianceFirewallMulticastForwarding' + "tags": ["appliance", "configure", "firewall", "multicastForwarding"], + "operation": "updateNetworkApplianceFirewallMulticastForwarding", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/multicastForwarding' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/multicastForwarding" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallOneToManyNatRules(self, networkId: str): """ @@ -701,15 +741,13 @@ def getNetworkApplianceFirewallOneToManyNatRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'oneToManyNatRules'], - 'operation': 'getNetworkApplianceFirewallOneToManyNatRules' + "tags": ["appliance", "configure", "firewall", "oneToManyNatRules"], + "operation": "getNetworkApplianceFirewallOneToManyNatRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/oneToManyNatRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/oneToManyNatRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallOneToManyNatRules(self, networkId: str, rules: list): """ @@ -723,18 +761,18 @@ def updateNetworkApplianceFirewallOneToManyNatRules(self, networkId: str, rules: kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'oneToManyNatRules'], - 'operation': 'updateNetworkApplianceFirewallOneToManyNatRules' + "tags": ["appliance", "configure", "firewall", "oneToManyNatRules"], + "operation": "updateNetworkApplianceFirewallOneToManyNatRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/oneToManyNatRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/oneToManyNatRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallOneToOneNatRules(self, networkId: str): """ @@ -745,15 +783,13 @@ def getNetworkApplianceFirewallOneToOneNatRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'oneToOneNatRules'], - 'operation': 'getNetworkApplianceFirewallOneToOneNatRules' + "tags": ["appliance", "configure", "firewall", "oneToOneNatRules"], + "operation": "getNetworkApplianceFirewallOneToOneNatRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/oneToOneNatRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/oneToOneNatRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallOneToOneNatRules(self, networkId: str, rules: list): """ @@ -767,18 +803,18 @@ def updateNetworkApplianceFirewallOneToOneNatRules(self, networkId: str, rules: kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'oneToOneNatRules'], - 'operation': 'updateNetworkApplianceFirewallOneToOneNatRules' + "tags": ["appliance", "configure", "firewall", "oneToOneNatRules"], + "operation": "updateNetworkApplianceFirewallOneToOneNatRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/oneToOneNatRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/oneToOneNatRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallPortForwardingRules(self, networkId: str): """ @@ -789,15 +825,13 @@ def getNetworkApplianceFirewallPortForwardingRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'portForwardingRules'], - 'operation': 'getNetworkApplianceFirewallPortForwardingRules' + "tags": ["appliance", "configure", "firewall", "portForwardingRules"], + "operation": "getNetworkApplianceFirewallPortForwardingRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/portForwardingRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/portForwardingRules" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallPortForwardingRules(self, networkId: str, rules: list): """ @@ -811,18 +845,18 @@ def updateNetworkApplianceFirewallPortForwardingRules(self, networkId: str, rule kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'portForwardingRules'], - 'operation': 'updateNetworkApplianceFirewallPortForwardingRules' + "tags": ["appliance", "configure", "firewall", "portForwardingRules"], + "operation": "updateNetworkApplianceFirewallPortForwardingRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/portForwardingRules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/portForwardingRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceFirewallSettings(self, networkId: str): """ @@ -833,15 +867,13 @@ def getNetworkApplianceFirewallSettings(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'settings'], - 'operation': 'getNetworkApplianceFirewallSettings' + "tags": ["appliance", "configure", "firewall", "settings"], + "operation": "getNetworkApplianceFirewallSettings", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/settings' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/settings" return self._session.get(metadata, resource) - - def updateNetworkApplianceFirewallSettings(self, networkId: str, **kwargs): """ @@ -855,18 +887,18 @@ def updateNetworkApplianceFirewallSettings(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'settings'], - 'operation': 'updateNetworkApplianceFirewallSettings' + "tags": ["appliance", "configure", "firewall", "settings"], + "operation": "updateNetworkApplianceFirewallSettings", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/firewall/settings' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/firewall/settings" - body_params = ['spoofingProtection', ] + body_params = [ + "spoofingProtection", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkAppliancePorts(self, networkId: str): """ @@ -877,15 +909,13 @@ def getNetworkAppliancePorts(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'ports'], - 'operation': 'getNetworkAppliancePorts' + "tags": ["appliance", "configure", "ports"], + "operation": "getNetworkAppliancePorts", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/ports' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/ports" return self._session.get(metadata, resource) - - def getNetworkAppliancePort(self, networkId: str, portId: str): """ @@ -897,16 +927,14 @@ def getNetworkAppliancePort(self, networkId: str, portId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'ports'], - 'operation': 'getNetworkAppliancePort' + "tags": ["appliance", "configure", "ports"], + "operation": "getNetworkAppliancePort", } - networkId = urllib.parse.quote(str(networkId), safe='') - portId = urllib.parse.quote(str(portId), safe='') - resource = f'/networks/{networkId}/appliance/ports/{portId}' + networkId = urllib.parse.quote(str(networkId), safe="") + portId = urllib.parse.quote(str(portId), safe="") + resource = f"/networks/{networkId}/appliance/ports/{portId}" return self._session.get(metadata, resource) - - def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs): """ @@ -919,26 +947,31 @@ def updateNetworkAppliancePort(self, networkId: str, portId: str, **kwargs): - dropUntaggedTraffic (boolean): Trunk port can Drop all Untagged traffic. When true, no VLAN is required. Access ports cannot have dropUntaggedTraffic set to true. - type (string): The type of the port: 'access' or 'trunk'. - 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 the VLAN ID's allowed on the port, or 'all' to permit all VLAN's on the port. + - 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. """ kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'ports'], - 'operation': 'updateNetworkAppliancePort' + "tags": ["appliance", "configure", "ports"], + "operation": "updateNetworkAppliancePort", } - networkId = urllib.parse.quote(str(networkId), safe='') - portId = urllib.parse.quote(str(portId), safe='') - resource = f'/networks/{networkId}/appliance/ports/{portId}' + networkId = urllib.parse.quote(str(networkId), safe="") + portId = urllib.parse.quote(str(portId), safe="") + resource = f"/networks/{networkId}/appliance/ports/{portId}" - body_params = ['enabled', 'dropUntaggedTraffic', 'type', 'vlan', 'allowedVlans', 'accessPolicy', ] + body_params = [ + "enabled", + "dropUntaggedTraffic", + "type", + "vlan", + "allowedVlans", + "accessPolicy", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkAppliancePrefixesDelegatedStatics(self, networkId: str): """ @@ -949,15 +982,13 @@ def getNetworkAppliancePrefixesDelegatedStatics(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'prefixes', 'delegated', 'statics'], - 'operation': 'getNetworkAppliancePrefixesDelegatedStatics' + "tags": ["appliance", "configure", "prefixes", "delegated", "statics"], + "operation": "getNetworkAppliancePrefixesDelegatedStatics", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/prefixes/delegated/statics' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/prefixes/delegated/statics" return self._session.get(metadata, resource) - - def createNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, prefix: str, origin: dict, **kwargs): """ @@ -973,18 +1004,20 @@ def createNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, prefix: kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'prefixes', 'delegated', 'statics'], - 'operation': 'createNetworkAppliancePrefixesDelegatedStatic' + "tags": ["appliance", "configure", "prefixes", "delegated", "statics"], + "operation": "createNetworkAppliancePrefixesDelegatedStatic", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/prefixes/delegated/statics' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/prefixes/delegated/statics" - body_params = ['prefix', 'origin', 'description', ] + body_params = [ + "prefix", + "origin", + "description", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDelegatedPrefixId: str): """ @@ -996,16 +1029,14 @@ def getNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDeleg """ metadata = { - 'tags': ['appliance', 'configure', 'prefixes', 'delegated', 'statics'], - 'operation': 'getNetworkAppliancePrefixesDelegatedStatic' + "tags": ["appliance", "configure", "prefixes", "delegated", "statics"], + "operation": "getNetworkAppliancePrefixesDelegatedStatic", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe='') - resource = f'/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe="") + resource = f"/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}" return self._session.get(metadata, resource) - - def updateNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDelegatedPrefixId: str, **kwargs): """ @@ -1022,19 +1053,21 @@ def updateNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDe kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'prefixes', 'delegated', 'statics'], - 'operation': 'updateNetworkAppliancePrefixesDelegatedStatic' + "tags": ["appliance", "configure", "prefixes", "delegated", "statics"], + "operation": "updateNetworkAppliancePrefixesDelegatedStatic", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe='') - resource = f'/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe="") + resource = f"/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}" - body_params = ['prefix', 'origin', 'description', ] + body_params = [ + "prefix", + "origin", + "description", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDelegatedPrefixId: str): """ @@ -1046,16 +1079,14 @@ def deleteNetworkAppliancePrefixesDelegatedStatic(self, networkId: str, staticDe """ metadata = { - 'tags': ['appliance', 'configure', 'prefixes', 'delegated', 'statics'], - 'operation': 'deleteNetworkAppliancePrefixesDelegatedStatic' + "tags": ["appliance", "configure", "prefixes", "delegated", "statics"], + "operation": "deleteNetworkAppliancePrefixesDelegatedStatic", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe='') - resource = f'/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticDelegatedPrefixId = urllib.parse.quote(str(staticDelegatedPrefixId), safe="") + resource = f"/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}" return self._session.delete(metadata, resource) - - def getNetworkApplianceRfProfiles(self, networkId: str): """ @@ -1066,15 +1097,13 @@ def getNetworkApplianceRfProfiles(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'rfProfiles'], - 'operation': 'getNetworkApplianceRfProfiles' + "tags": ["appliance", "configure", "rfProfiles"], + "operation": "getNetworkApplianceRfProfiles", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/rfProfiles' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/rfProfiles" return self._session.get(metadata, resource) - - def createNetworkApplianceRfProfile(self, networkId: str, name: str, **kwargs): """ @@ -1091,18 +1120,21 @@ def createNetworkApplianceRfProfile(self, networkId: str, name: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'rfProfiles'], - 'operation': 'createNetworkApplianceRfProfile' + "tags": ["appliance", "configure", "rfProfiles"], + "operation": "createNetworkApplianceRfProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/rfProfiles' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/rfProfiles" - body_params = ['name', 'twoFourGhzSettings', 'fiveGhzSettings', 'perSsidSettings', ] + body_params = [ + "name", + "twoFourGhzSettings", + "fiveGhzSettings", + "perSsidSettings", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str, **kwargs): """ @@ -1120,19 +1152,22 @@ def updateNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'rfProfiles'], - 'operation': 'updateNetworkApplianceRfProfile' + "tags": ["appliance", "configure", "rfProfiles"], + "operation": "updateNetworkApplianceRfProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - rfProfileId = urllib.parse.quote(str(rfProfileId), safe='') - resource = f'/networks/{networkId}/appliance/rfProfiles/{rfProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + rfProfileId = urllib.parse.quote(str(rfProfileId), safe="") + resource = f"/networks/{networkId}/appliance/rfProfiles/{rfProfileId}" - body_params = ['name', 'twoFourGhzSettings', 'fiveGhzSettings', 'perSsidSettings', ] + body_params = [ + "name", + "twoFourGhzSettings", + "fiveGhzSettings", + "perSsidSettings", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str): """ @@ -1144,16 +1179,14 @@ def deleteNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'rfProfiles'], - 'operation': 'deleteNetworkApplianceRfProfile' + "tags": ["appliance", "configure", "rfProfiles"], + "operation": "deleteNetworkApplianceRfProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - rfProfileId = urllib.parse.quote(str(rfProfileId), safe='') - resource = f'/networks/{networkId}/appliance/rfProfiles/{rfProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + rfProfileId = urllib.parse.quote(str(rfProfileId), safe="") + resource = f"/networks/{networkId}/appliance/rfProfiles/{rfProfileId}" return self._session.delete(metadata, resource) - - def getNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str): """ @@ -1165,16 +1198,14 @@ def getNetworkApplianceRfProfile(self, networkId: str, rfProfileId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'rfProfiles'], - 'operation': 'getNetworkApplianceRfProfile' + "tags": ["appliance", "configure", "rfProfiles"], + "operation": "getNetworkApplianceRfProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - rfProfileId = urllib.parse.quote(str(rfProfileId), safe='') - resource = f'/networks/{networkId}/appliance/rfProfiles/{rfProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + rfProfileId = urllib.parse.quote(str(rfProfileId), safe="") + resource = f"/networks/{networkId}/appliance/rfProfiles/{rfProfileId}" return self._session.get(metadata, resource) - - def updateNetworkApplianceSdwanInternetPolicies(self, networkId: str, **kwargs): """ @@ -1188,20 +1219,20 @@ def updateNetworkApplianceSdwanInternetPolicies(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'sdwan', 'internetPolicies'], - 'operation': 'updateNetworkApplianceSdwanInternetPolicies' + "tags": ["appliance", "configure", "sdwan", "internetPolicies"], + "operation": "updateNetworkApplianceSdwanInternetPolicies", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/sdwan/internetPolicies' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/sdwan/internetPolicies" - body_params = ['wanTrafficUplinkPreferences', ] + body_params = [ + "wanTrafficUplinkPreferences", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - - def getNetworkApplianceSecurityEvents(self, networkId: str, total_pages=1, direction='next', **kwargs): + def getNetworkApplianceSecurityEvents(self, networkId: str, total_pages=1, direction="next", **kwargs): """ **List the security events for a network** https://developer.cisco.com/meraki/api-v1/#!get-network-appliance-security-events @@ -1220,23 +1251,31 @@ def getNetworkApplianceSecurityEvents(self, networkId: str, total_pages=1, direc 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 "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': ['appliance', 'monitor', 'security', 'events'], - 'operation': 'getNetworkApplianceSecurityEvents' + "tags": ["appliance", "monitor", "security", "events"], + "operation": "getNetworkApplianceSecurityEvents", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/security/events' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/security/events" - query_params = ['t0', 't1', 'timespan', 'perPage', 'startingAfter', 'endingBefore', 'sortOrder', ] + query_params = [ + "t0", + "t1", + "timespan", + "perPage", + "startingAfter", + "endingBefore", + "sortOrder", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get_pages(metadata, resource, params, total_pages, direction) - - def getNetworkApplianceSecurityIntrusion(self, networkId: str): """ @@ -1247,15 +1286,13 @@ def getNetworkApplianceSecurityIntrusion(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'security', 'intrusion'], - 'operation': 'getNetworkApplianceSecurityIntrusion' + "tags": ["appliance", "configure", "security", "intrusion"], + "operation": "getNetworkApplianceSecurityIntrusion", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/security/intrusion' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/security/intrusion" return self._session.get(metadata, resource) - - def updateNetworkApplianceSecurityIntrusion(self, networkId: str, **kwargs): """ @@ -1270,26 +1307,30 @@ def updateNetworkApplianceSecurityIntrusion(self, networkId: str, **kwargs): kwargs.update(locals()) - if 'mode' in kwargs: - options = ['detection', 'disabled', 'prevention'] - assert kwargs['mode'] in options, f'''"mode" cannot be "{kwargs['mode']}", & must be set to one of: {options}''' - if 'idsRulesets' in kwargs: - options = ['balanced', 'connectivity', 'security'] - assert kwargs['idsRulesets'] in options, f'''"idsRulesets" cannot be "{kwargs['idsRulesets']}", & must be set to one of: {options}''' + if "mode" in kwargs: + options = ["detection", "disabled", "prevention"] + assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}''' + if "idsRulesets" in kwargs: + options = ["balanced", "connectivity", "security"] + assert kwargs["idsRulesets"] in options, ( + f'''"idsRulesets" cannot be "{kwargs["idsRulesets"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['appliance', 'configure', 'security', 'intrusion'], - 'operation': 'updateNetworkApplianceSecurityIntrusion' + "tags": ["appliance", "configure", "security", "intrusion"], + "operation": "updateNetworkApplianceSecurityIntrusion", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/security/intrusion' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/security/intrusion" - body_params = ['mode', 'idsRulesets', 'protectedNetworks', ] + body_params = [ + "mode", + "idsRulesets", + "protectedNetworks", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceSecurityMalware(self, networkId: str): """ @@ -1300,15 +1341,13 @@ def getNetworkApplianceSecurityMalware(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'security', 'malware'], - 'operation': 'getNetworkApplianceSecurityMalware' + "tags": ["appliance", "configure", "security", "malware"], + "operation": "getNetworkApplianceSecurityMalware", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/security/malware' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/security/malware" return self._session.get(metadata, resource) - - def updateNetworkApplianceSecurityMalware(self, networkId: str, mode: str, **kwargs): """ @@ -1323,23 +1362,25 @@ def updateNetworkApplianceSecurityMalware(self, networkId: str, mode: str, **kwa kwargs.update(locals()) - if 'mode' in kwargs: - options = ['disabled', 'enabled'] - assert kwargs['mode'] in options, f'''"mode" cannot be "{kwargs['mode']}", & must be set to one of: {options}''' + if "mode" in kwargs: + options = ["disabled", "enabled"] + assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}''' metadata = { - 'tags': ['appliance', 'configure', 'security', 'malware'], - 'operation': 'updateNetworkApplianceSecurityMalware' + "tags": ["appliance", "configure", "security", "malware"], + "operation": "updateNetworkApplianceSecurityMalware", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/security/malware' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/security/malware" - body_params = ['mode', 'allowedUrls', 'allowedFiles', ] + body_params = [ + "mode", + "allowedUrls", + "allowedFiles", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceSettings(self, networkId: str): """ @@ -1350,15 +1391,13 @@ def getNetworkApplianceSettings(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'settings'], - 'operation': 'getNetworkApplianceSettings' + "tags": ["appliance", "configure", "settings"], + "operation": "getNetworkApplianceSettings", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/settings' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/settings" return self._session.get(metadata, resource) - - def updateNetworkApplianceSettings(self, networkId: str, **kwargs): """ @@ -1373,26 +1412,32 @@ def updateNetworkApplianceSettings(self, networkId: str, **kwargs): kwargs.update(locals()) - if 'clientTrackingMethod' in kwargs: - options = ['IP address', 'MAC address', 'Unique client identifier'] - assert kwargs['clientTrackingMethod'] in options, f'''"clientTrackingMethod" cannot be "{kwargs['clientTrackingMethod']}", & must be set to one of: {options}''' - if 'deploymentMode' in kwargs: - options = ['passthrough', 'routed'] - assert kwargs['deploymentMode'] in options, f'''"deploymentMode" cannot be "{kwargs['deploymentMode']}", & must be set to one of: {options}''' - - metadata = { - 'tags': ['appliance', 'configure', 'settings'], - 'operation': 'updateNetworkApplianceSettings' - } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/settings' - - body_params = ['clientTrackingMethod', 'deploymentMode', 'dynamicDns', ] + if "clientTrackingMethod" in kwargs: + options = ["IP address", "MAC address", "Unique client identifier"] + assert kwargs["clientTrackingMethod"] in options, ( + f'''"clientTrackingMethod" cannot be "{kwargs["clientTrackingMethod"]}", & must be set to one of: {options}''' + ) + if "deploymentMode" in kwargs: + options = ["passthrough", "routed"] + assert kwargs["deploymentMode"] in options, ( + f'''"deploymentMode" cannot be "{kwargs["deploymentMode"]}", & must be set to one of: {options}''' + ) + + metadata = { + "tags": ["appliance", "configure", "settings"], + "operation": "updateNetworkApplianceSettings", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/settings" + + body_params = [ + "clientTrackingMethod", + "deploymentMode", + "dynamicDns", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceSingleLan(self, networkId: str): """ @@ -1403,15 +1448,13 @@ def getNetworkApplianceSingleLan(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'singleLan'], - 'operation': 'getNetworkApplianceSingleLan' + "tags": ["appliance", "configure", "singleLan"], + "operation": "getNetworkApplianceSingleLan", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/singleLan' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/singleLan" return self._session.get(metadata, resource) - - def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs): """ @@ -1428,18 +1471,21 @@ def updateNetworkApplianceSingleLan(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'singleLan'], - 'operation': 'updateNetworkApplianceSingleLan' + "tags": ["appliance", "configure", "singleLan"], + "operation": "updateNetworkApplianceSingleLan", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/singleLan' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/singleLan" - body_params = ['subnet', 'applianceIp', 'ipv6', 'mandatoryDhcp', ] + body_params = [ + "subnet", + "applianceIp", + "ipv6", + "mandatoryDhcp", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceSsids(self, networkId: str): """ @@ -1450,15 +1496,13 @@ def getNetworkApplianceSsids(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'ssids'], - 'operation': 'getNetworkApplianceSsids' + "tags": ["appliance", "configure", "ssids"], + "operation": "getNetworkApplianceSsids", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/ssids' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/ssids" return self._session.get(metadata, resource) - - def getNetworkApplianceSsid(self, networkId: str, number: str): """ @@ -1470,16 +1514,14 @@ def getNetworkApplianceSsid(self, networkId: str, number: str): """ metadata = { - 'tags': ['appliance', 'configure', 'ssids'], - 'operation': 'getNetworkApplianceSsid' + "tags": ["appliance", "configure", "ssids"], + "operation": "getNetworkApplianceSsid", } - networkId = urllib.parse.quote(str(networkId), safe='') - number = urllib.parse.quote(str(number), safe='') - resource = f'/networks/{networkId}/appliance/ssids/{number}' + networkId = urllib.parse.quote(str(networkId), safe="") + number = urllib.parse.quote(str(number), safe="") + resource = f"/networks/{networkId}/appliance/ssids/{number}" return self._session.get(metadata, resource) - - def updateNetworkApplianceSsid(self, networkId: str, number: str, **kwargs): """ @@ -1497,36 +1539,52 @@ def updateNetworkApplianceSsid(self, networkId: str, number: str, **kwargs): - encryptionMode (string): The psk encryption mode for the SSID ('wep' or 'wpa'). This param is only valid if the authMode is 'psk'. - wpaEncryptionMode (string): The types of WPA encryption. ('WPA1 and WPA2', 'WPA2 only', 'WPA3 Transition Mode' or 'WPA3 only'). This param is only valid if (1) the authMode is 'psk' & the encryptionMode is 'wpa' OR (2) the authMode is '8021x-meraki' OR (3) the authMode is '8021x-radius' - visible (boolean): Boolean indicating whether the MX should advertise or hide this SSID. - - dhcpEnforcedDeauthentication (object): DHCP Enforced Deauthentication enables the disassociation of wireless clients in addition to Mandatory DHCP. This param is only valid on firmware versions >= MX 17.0 where the associated LAN has Mandatory DHCP Enabled + - dhcpEnforcedDeauthentication (object): DHCP Enforced Deauthentication enables the disassociation of wireless clients in addition to Mandatory DHCP. This param is only valid on firmware versions >= MX 17.0 where the associated LAN has Mandatory DHCP Enabled - dot11w (object): The current setting for Protected Management Frames (802.11w). """ kwargs.update(locals()) - if 'authMode' in kwargs: - options = ['8021x-meraki', '8021x-radius', 'open', 'psk'] - assert kwargs['authMode'] in options, f'''"authMode" cannot be "{kwargs['authMode']}", & must be set to one of: {options}''' - if 'encryptionMode' in kwargs: - options = ['wep', 'wpa'] - assert kwargs['encryptionMode'] in options, f'''"encryptionMode" cannot be "{kwargs['encryptionMode']}", & must be set to one of: {options}''' - if 'wpaEncryptionMode' in kwargs: - options = ['WPA1 and WPA2', 'WPA2 only', 'WPA3 Transition Mode', 'WPA3 only'] - assert kwargs['wpaEncryptionMode'] in options, f'''"wpaEncryptionMode" cannot be "{kwargs['wpaEncryptionMode']}", & must be set to one of: {options}''' - - metadata = { - 'tags': ['appliance', 'configure', 'ssids'], - 'operation': 'updateNetworkApplianceSsid' - } - networkId = urllib.parse.quote(str(networkId), safe='') - number = urllib.parse.quote(str(number), safe='') - resource = f'/networks/{networkId}/appliance/ssids/{number}' - - body_params = ['name', 'enabled', 'defaultVlanId', 'authMode', 'psk', 'radiusServers', 'encryptionMode', 'wpaEncryptionMode', 'visible', 'dhcpEnforcedDeauthentication', 'dot11w', ] + if "authMode" in kwargs: + options = ["8021x-meraki", "8021x-radius", "open", "psk"] + assert kwargs["authMode"] in options, ( + f'''"authMode" cannot be "{kwargs["authMode"]}", & must be set to one of: {options}''' + ) + if "encryptionMode" in kwargs: + options = ["wep", "wpa"] + assert kwargs["encryptionMode"] in options, ( + f'''"encryptionMode" cannot be "{kwargs["encryptionMode"]}", & must be set to one of: {options}''' + ) + if "wpaEncryptionMode" in kwargs: + options = ["WPA1 and WPA2", "WPA2 only", "WPA3 Transition Mode", "WPA3 only"] + assert kwargs["wpaEncryptionMode"] in options, ( + f'''"wpaEncryptionMode" cannot be "{kwargs["wpaEncryptionMode"]}", & must be set to one of: {options}''' + ) + + metadata = { + "tags": ["appliance", "configure", "ssids"], + "operation": "updateNetworkApplianceSsid", + } + networkId = urllib.parse.quote(str(networkId), safe="") + number = urllib.parse.quote(str(number), safe="") + resource = f"/networks/{networkId}/appliance/ssids/{number}" + + body_params = [ + "name", + "enabled", + "defaultVlanId", + "authMode", + "psk", + "radiusServers", + "encryptionMode", + "wpaEncryptionMode", + "visible", + "dhcpEnforcedDeauthentication", + "dot11w", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceStaticRoutes(self, networkId: str): """ @@ -1537,15 +1595,13 @@ def getNetworkApplianceStaticRoutes(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'staticRoutes'], - 'operation': 'getNetworkApplianceStaticRoutes' + "tags": ["appliance", "configure", "staticRoutes"], + "operation": "getNetworkApplianceStaticRoutes", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/staticRoutes' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/staticRoutes" return self._session.get(metadata, resource) - - def createNetworkApplianceStaticRoute(self, networkId: str, name: str, subnet: str, gatewayIp: str, **kwargs): """ @@ -1556,24 +1612,27 @@ def createNetworkApplianceStaticRoute(self, networkId: str, name: str, subnet: s - name (string): Name of the route - subnet (string): Subnet of the route - gatewayIp (string): Gateway IP address (next hop) - - gatewayVlanId (string): Gateway VLAN ID + - gatewayVlanId (integer): Gateway VLAN ID """ kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'staticRoutes'], - 'operation': 'createNetworkApplianceStaticRoute' + "tags": ["appliance", "configure", "staticRoutes"], + "operation": "createNetworkApplianceStaticRoute", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/staticRoutes' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/staticRoutes" - body_params = ['name', 'subnet', 'gatewayIp', 'gatewayVlanId', ] + body_params = [ + "name", + "subnet", + "gatewayIp", + "gatewayVlanId", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str): """ @@ -1585,16 +1644,14 @@ def getNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'staticRoutes'], - 'operation': 'getNetworkApplianceStaticRoute' + "tags": ["appliance", "configure", "staticRoutes"], + "operation": "getNetworkApplianceStaticRoute", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticRouteId = urllib.parse.quote(str(staticRouteId), safe='') - resource = f'/networks/{networkId}/appliance/staticRoutes/{staticRouteId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticRouteId = urllib.parse.quote(str(staticRouteId), safe="") + resource = f"/networks/{networkId}/appliance/staticRoutes/{staticRouteId}" return self._session.get(metadata, resource) - - def updateNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str, **kwargs): """ @@ -1606,7 +1663,7 @@ def updateNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str, - name (string): Name of the route - subnet (string): Subnet of the route - gatewayIp (string): Gateway IP address (next hop) - - gatewayVlanId (string): Gateway VLAN ID + - gatewayVlanId (integer): Gateway VLAN ID - enabled (boolean): Whether the route should be enabled or not - fixedIpAssignments (object): Fixed DHCP IP assignments on the route - reservedIpRanges (array): DHCP reserved IP ranges @@ -1615,19 +1672,25 @@ def updateNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str, kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'staticRoutes'], - 'operation': 'updateNetworkApplianceStaticRoute' + "tags": ["appliance", "configure", "staticRoutes"], + "operation": "updateNetworkApplianceStaticRoute", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticRouteId = urllib.parse.quote(str(staticRouteId), safe='') - resource = f'/networks/{networkId}/appliance/staticRoutes/{staticRouteId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticRouteId = urllib.parse.quote(str(staticRouteId), safe="") + resource = f"/networks/{networkId}/appliance/staticRoutes/{staticRouteId}" - body_params = ['name', 'subnet', 'gatewayIp', 'gatewayVlanId', 'enabled', 'fixedIpAssignments', 'reservedIpRanges', ] + body_params = [ + "name", + "subnet", + "gatewayIp", + "gatewayVlanId", + "enabled", + "fixedIpAssignments", + "reservedIpRanges", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str): """ @@ -1639,16 +1702,14 @@ def deleteNetworkApplianceStaticRoute(self, networkId: str, staticRouteId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'staticRoutes'], - 'operation': 'deleteNetworkApplianceStaticRoute' + "tags": ["appliance", "configure", "staticRoutes"], + "operation": "deleteNetworkApplianceStaticRoute", } - networkId = urllib.parse.quote(str(networkId), safe='') - staticRouteId = urllib.parse.quote(str(staticRouteId), safe='') - resource = f'/networks/{networkId}/appliance/staticRoutes/{staticRouteId}' + networkId = urllib.parse.quote(str(networkId), safe="") + staticRouteId = urllib.parse.quote(str(staticRouteId), safe="") + resource = f"/networks/{networkId}/appliance/staticRoutes/{staticRouteId}" return self._session.delete(metadata, resource) - - def getNetworkApplianceTrafficShaping(self, networkId: str): """ @@ -1659,17 +1720,15 @@ def getNetworkApplianceTrafficShaping(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping'], - 'operation': 'getNetworkApplianceTrafficShaping' + "tags": ["appliance", "configure", "trafficShaping"], + "operation": "getNetworkApplianceTrafficShaping", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping" return self._session.get(metadata, resource) - - - def updateNetworkApplianceTrafficShaping(self, networkId: str, **kwargs): + def updateNetworkApplianceTrafficShaping(self, networkId: str, globalBandwidthLimits: dict): """ **Update the traffic shaping settings for an MX network** https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-traffic-shaping @@ -1678,21 +1737,21 @@ def updateNetworkApplianceTrafficShaping(self, networkId: str, **kwargs): - globalBandwidthLimits (object): Global per-client bandwidth limit """ - kwargs.update(locals()) + kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping'], - 'operation': 'updateNetworkApplianceTrafficShaping' + "tags": ["appliance", "configure", "trafficShaping"], + "operation": "updateNetworkApplianceTrafficShaping", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping" - body_params = ['globalBandwidthLimits', ] + body_params = [ + "globalBandwidthLimits", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceTrafficShapingCustomPerformanceClasses(self, networkId: str): """ @@ -1703,15 +1762,13 @@ def getNetworkApplianceTrafficShapingCustomPerformanceClasses(self, networkId: s """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'customPerformanceClasses'], - 'operation': 'getNetworkApplianceTrafficShapingCustomPerformanceClasses' + "tags": ["appliance", "configure", "trafficShaping", "customPerformanceClasses"], + "operation": "getNetworkApplianceTrafficShapingCustomPerformanceClasses", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses" return self._session.get(metadata, resource) - - def createNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: str, name: str, **kwargs): """ @@ -1728,18 +1785,21 @@ def createNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'customPerformanceClasses'], - 'operation': 'createNetworkApplianceTrafficShapingCustomPerformanceClass' + "tags": ["appliance", "configure", "trafficShaping", "customPerformanceClasses"], + "operation": "createNetworkApplianceTrafficShapingCustomPerformanceClass", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses" - body_params = ['name', 'maxLatency', 'maxJitter', 'maxLossPercentage', ] + body_params = [ + "name", + "maxLatency", + "maxJitter", + "maxLossPercentage", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: str, customPerformanceClassId: str): """ @@ -1751,18 +1811,18 @@ def getNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: str """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'customPerformanceClasses'], - 'operation': 'getNetworkApplianceTrafficShapingCustomPerformanceClass' + "tags": ["appliance", "configure", "trafficShaping", "customPerformanceClasses"], + "operation": "getNetworkApplianceTrafficShapingCustomPerformanceClass", } - networkId = urllib.parse.quote(str(networkId), safe='') - customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}' + networkId = urllib.parse.quote(str(networkId), safe="") + customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}" return self._session.get(metadata, resource) - - - def updateNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: str, customPerformanceClassId: str, **kwargs): + def updateNetworkApplianceTrafficShapingCustomPerformanceClass( + self, networkId: str, customPerformanceClassId: str, **kwargs + ): """ **Update a custom performance class for an MX network** https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-traffic-shaping-custom-performance-class @@ -1778,19 +1838,22 @@ def updateNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'customPerformanceClasses'], - 'operation': 'updateNetworkApplianceTrafficShapingCustomPerformanceClass' + "tags": ["appliance", "configure", "trafficShaping", "customPerformanceClasses"], + "operation": "updateNetworkApplianceTrafficShapingCustomPerformanceClass", } - networkId = urllib.parse.quote(str(networkId), safe='') - customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}' + networkId = urllib.parse.quote(str(networkId), safe="") + customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}" - body_params = ['name', 'maxLatency', 'maxJitter', 'maxLossPercentage', ] + body_params = [ + "name", + "maxLatency", + "maxJitter", + "maxLossPercentage", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: str, customPerformanceClassId: str): """ @@ -1802,45 +1865,44 @@ def deleteNetworkApplianceTrafficShapingCustomPerformanceClass(self, networkId: """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'customPerformanceClasses'], - 'operation': 'deleteNetworkApplianceTrafficShapingCustomPerformanceClass' + "tags": ["appliance", "configure", "trafficShaping", "customPerformanceClasses"], + "operation": "deleteNetworkApplianceTrafficShapingCustomPerformanceClass", } - networkId = urllib.parse.quote(str(networkId), safe='') - customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}' + networkId = urllib.parse.quote(str(networkId), safe="") + customPerformanceClassId = urllib.parse.quote(str(customPerformanceClassId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}" return self._session.delete(metadata, resource) - - def updateNetworkApplianceTrafficShapingRules(self, networkId: str, **kwargs): """ - **Update the traffic shaping settings rules for an MX network** - https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-traffic-shaping-rules + **Update the traffic shaping settings rules for an MX network** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-traffic-shaping-rules - - networkId (string): Network ID - - defaultRulesEnabled (boolean): Whether default traffic shaping rules are enabled (true) or disabled (false). There are 4 default rules, which can be seen on your network's traffic shaping page. Note that default rules count against the rule limit of 8. - - rules (array): An array of traffic shaping rules. Rules are applied in the order that - they are specified in. An empty list (or null) means no rules. Note that - you are allowed a maximum of 8 rules. + - networkId (string): Network ID + - defaultRulesEnabled (boolean): Whether default traffic shaping rules are enabled (true) or disabled (false). There are 4 default rules, which can be seen on your network's traffic shaping page. Note that default rules count against the rule limit of 8. + - rules (array): An array of traffic shaping rules. Rules are applied in the order that + they are specified in. An empty list (or null) means no rules. Note that + you are allowed a maximum of 8 rules. """ kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'rules'], - 'operation': 'updateNetworkApplianceTrafficShapingRules' + "tags": ["appliance", "configure", "trafficShaping", "rules"], + "operation": "updateNetworkApplianceTrafficShapingRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/rules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/rules" - body_params = ['defaultRulesEnabled', 'rules', ] + body_params = [ + "defaultRulesEnabled", + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceTrafficShapingRules(self, networkId: str): """ @@ -1851,15 +1913,13 @@ def getNetworkApplianceTrafficShapingRules(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'rules'], - 'operation': 'getNetworkApplianceTrafficShapingRules' + "tags": ["appliance", "configure", "trafficShaping", "rules"], + "operation": "getNetworkApplianceTrafficShapingRules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/rules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/rules" return self._session.get(metadata, resource) - - def getNetworkApplianceTrafficShapingUplinkBandwidth(self, networkId: str): """ @@ -1870,15 +1930,13 @@ def getNetworkApplianceTrafficShapingUplinkBandwidth(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'uplinkBandwidth'], - 'operation': 'getNetworkApplianceTrafficShapingUplinkBandwidth' + "tags": ["appliance", "configure", "trafficShaping", "uplinkBandwidth"], + "operation": "getNetworkApplianceTrafficShapingUplinkBandwidth", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth" return self._session.get(metadata, resource) - - def updateNetworkApplianceTrafficShapingUplinkBandwidth(self, networkId: str, **kwargs): """ @@ -1892,18 +1950,18 @@ def updateNetworkApplianceTrafficShapingUplinkBandwidth(self, networkId: str, ** kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'uplinkBandwidth'], - 'operation': 'updateNetworkApplianceTrafficShapingUplinkBandwidth' + "tags": ["appliance", "configure", "trafficShaping", "uplinkBandwidth"], + "operation": "updateNetworkApplianceTrafficShapingUplinkBandwidth", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth" - body_params = ['bandwidthLimits', ] + body_params = [ + "bandwidthLimits", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceTrafficShapingUplinkSelection(self, networkId: str): """ @@ -1914,15 +1972,13 @@ def getNetworkApplianceTrafficShapingUplinkSelection(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'uplinkSelection'], - 'operation': 'getNetworkApplianceTrafficShapingUplinkSelection' + "tags": ["appliance", "configure", "trafficShaping", "uplinkSelection"], + "operation": "getNetworkApplianceTrafficShapingUplinkSelection", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/uplinkSelection' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/uplinkSelection" return self._session.get(metadata, resource) - - def updateNetworkApplianceTrafficShapingUplinkSelection(self, networkId: str, **kwargs): """ @@ -1940,23 +1996,24 @@ def updateNetworkApplianceTrafficShapingUplinkSelection(self, networkId: str, ** kwargs.update(locals()) - if 'defaultUplink' in kwargs: - options = ['wan1', 'wan2'] - assert kwargs['defaultUplink'] in options, f'''"defaultUplink" cannot be "{kwargs['defaultUplink']}", & must be set to one of: {options}''' - metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'uplinkSelection'], - 'operation': 'updateNetworkApplianceTrafficShapingUplinkSelection' + "tags": ["appliance", "configure", "trafficShaping", "uplinkSelection"], + "operation": "updateNetworkApplianceTrafficShapingUplinkSelection", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/uplinkSelection' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/uplinkSelection" - body_params = ['activeActiveAutoVpnEnabled', 'defaultUplink', 'loadBalancingEnabled', 'failoverAndFailback', 'wanTrafficUplinkPreferences', 'vpnTrafficUplinkPreferences', ] + body_params = [ + "activeActiveAutoVpnEnabled", + "defaultUplink", + "loadBalancingEnabled", + "failoverAndFailback", + "wanTrafficUplinkPreferences", + "vpnTrafficUplinkPreferences", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kwargs): """ @@ -1971,18 +2028,19 @@ def updateNetworkApplianceTrafficShapingVpnExclusions(self, networkId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'vpnExclusions'], - 'operation': 'updateNetworkApplianceTrafficShapingVpnExclusions' + "tags": ["appliance", "configure", "trafficShaping", "vpnExclusions"], + "operation": "updateNetworkApplianceTrafficShapingVpnExclusions", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/trafficShaping/vpnExclusions' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/trafficShaping/vpnExclusions" - body_params = ['custom', 'majorApplications', ] + body_params = [ + "custom", + "majorApplications", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def connectNetworkApplianceUmbrellaAccount(self, networkId: str, api: dict): """ @@ -1996,18 +2054,18 @@ def connectNetworkApplianceUmbrellaAccount(self, networkId: str, api: dict): kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'umbrella', 'account'], - 'operation': 'connectNetworkApplianceUmbrellaAccount' + "tags": ["appliance", "configure", "umbrella", "account"], + "operation": "connectNetworkApplianceUmbrellaAccount", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/umbrella/account/connect' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/umbrella/account/connect" - body_params = ['api', ] + body_params = [ + "api", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def disconnectNetworkApplianceUmbrellaAccount(self, networkId: str): """ @@ -2018,15 +2076,38 @@ def disconnectNetworkApplianceUmbrellaAccount(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'umbrella', 'account'], - 'operation': 'disconnectNetworkApplianceUmbrellaAccount' + "tags": ["appliance", "configure", "umbrella", "account"], + "operation": "disconnectNetworkApplianceUmbrellaAccount", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/umbrella/account/disconnect' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/umbrella/account/disconnect" return self._session.post(metadata, resource) - + def updateNetworkApplianceUplinksNat(self, networkId: str, uplinks: list): + """ + **Update uplink NAT settings of the specified network** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-uplinks-nat + + - networkId (string): Network ID + - uplinks (array): Per-uplink NAT exception configuration on the network. + """ + + kwargs = locals() + + metadata = { + "tags": ["appliance", "configure", "uplinks", "nat"], + "operation": "updateNetworkApplianceUplinksNat", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/uplinks/nat" + + body_params = [ + "uplinks", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) def getNetworkApplianceUplinksUsageHistory(self, networkId: str, **kwargs): """ @@ -2043,18 +2124,21 @@ def getNetworkApplianceUplinksUsageHistory(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'uplinks', 'usageHistory'], - 'operation': 'getNetworkApplianceUplinksUsageHistory' + "tags": ["appliance", "monitor", "uplinks", "usageHistory"], + "operation": "getNetworkApplianceUplinksUsageHistory", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/uplinks/usageHistory' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/uplinks/usageHistory" - query_params = ['t0', 't1', 'timespan', 'resolution', ] + query_params = [ + "t0", + "t1", + "timespan", + "resolution", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getNetworkApplianceVlans(self, networkId: str): """ @@ -2065,15 +2149,13 @@ def getNetworkApplianceVlans(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vlans'], - 'operation': 'getNetworkApplianceVlans' + "tags": ["appliance", "configure", "vlans"], + "operation": "getNetworkApplianceVlans", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vlans' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vlans" return self._session.get(metadata, resource) - - def createNetworkApplianceVlan(self, networkId: str, id: str, name: str, **kwargs): """ @@ -2098,33 +2180,57 @@ 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. + - uplinks (array): Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions. """ kwargs.update(locals()) - if 'templateVlanType' in kwargs: - options = ['same', 'unique'] - assert kwargs['templateVlanType'] in options, f'''"templateVlanType" cannot be "{kwargs['templateVlanType']}", & must be set to one of: {options}''' - if 'dhcpHandling' in kwargs: - options = ['Do not respond to DHCP requests', 'Relay DHCP to another server', 'Run a DHCP server'] - assert kwargs['dhcpHandling'] in options, f'''"dhcpHandling" cannot be "{kwargs['dhcpHandling']}", & must be set to one of: {options}''' - if 'dhcpLeaseTime' in kwargs: - options = ['1 day', '1 hour', '1 week', '12 hours', '30 minutes', '4 hours'] - assert kwargs['dhcpLeaseTime'] in options, f'''"dhcpLeaseTime" cannot be "{kwargs['dhcpLeaseTime']}", & must be set to one of: {options}''' - - metadata = { - 'tags': ['appliance', 'configure', 'vlans'], - 'operation': 'createNetworkApplianceVlan' - } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vlans' - - body_params = ['id', 'name', 'subnet', 'applianceIp', 'groupPolicyId', 'templateVlanType', 'cidr', 'mask', 'ipv6', 'dhcpHandling', 'dhcpRelayServerIps', 'dhcpLeaseTime', 'mandatoryDhcp', 'dhcpBootOptionsEnabled', 'dhcpBootNextServer', 'dhcpBootFilename', 'dhcpOptions', ] + if "templateVlanType" in kwargs: + options = ["same", "unique"] + assert kwargs["templateVlanType"] in options, ( + f'''"templateVlanType" cannot be "{kwargs["templateVlanType"]}", & must be set to one of: {options}''' + ) + if "dhcpHandling" in kwargs: + options = ["Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server"] + assert kwargs["dhcpHandling"] in options, ( + f'''"dhcpHandling" cannot be "{kwargs["dhcpHandling"]}", & must be set to one of: {options}''' + ) + if "dhcpLeaseTime" in kwargs: + options = ["1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours"] + assert kwargs["dhcpLeaseTime"] in options, ( + f'''"dhcpLeaseTime" cannot be "{kwargs["dhcpLeaseTime"]}", & must be set to one of: {options}''' + ) + + metadata = { + "tags": ["appliance", "configure", "vlans"], + "operation": "createNetworkApplianceVlan", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vlans" + + body_params = [ + "id", + "name", + "subnet", + "applianceIp", + "groupPolicyId", + "templateVlanType", + "cidr", + "mask", + "ipv6", + "dhcpHandling", + "dhcpRelayServerIps", + "dhcpLeaseTime", + "mandatoryDhcp", + "dhcpBootOptionsEnabled", + "dhcpBootNextServer", + "dhcpBootFilename", + "dhcpOptions", + "uplinks", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkApplianceVlansSettings(self, networkId: str): """ @@ -2135,15 +2241,13 @@ def getNetworkApplianceVlansSettings(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vlans', 'settings'], - 'operation': 'getNetworkApplianceVlansSettings' + "tags": ["appliance", "configure", "vlans", "settings"], + "operation": "getNetworkApplianceVlansSettings", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vlans/settings' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vlans/settings" return self._session.get(metadata, resource) - - def updateNetworkApplianceVlansSettings(self, networkId: str, **kwargs): """ @@ -2157,18 +2261,18 @@ def updateNetworkApplianceVlansSettings(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'vlans', 'settings'], - 'operation': 'updateNetworkApplianceVlansSettings' + "tags": ["appliance", "configure", "vlans", "settings"], + "operation": "updateNetworkApplianceVlansSettings", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vlans/settings' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vlans/settings" - body_params = ['vlansEnabled', ] + body_params = [ + "vlansEnabled", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceVlan(self, networkId: str, vlanId: str): """ @@ -2180,16 +2284,14 @@ def getNetworkApplianceVlan(self, networkId: str, vlanId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vlans'], - 'operation': 'getNetworkApplianceVlan' + "tags": ["appliance", "configure", "vlans"], + "operation": "getNetworkApplianceVlan", } - networkId = urllib.parse.quote(str(networkId), safe='') - vlanId = urllib.parse.quote(str(vlanId), safe='') - resource = f'/networks/{networkId}/appliance/vlans/{vlanId}' + networkId = urllib.parse.quote(str(networkId), safe="") + vlanId = urllib.parse.quote(str(vlanId), safe="") + resource = f"/networks/{networkId}/appliance/vlans/{vlanId}" return self._session.get(metadata, resource) - - def updateNetworkApplianceVlan(self, networkId: str, vlanId: str, **kwargs): """ @@ -2218,34 +2320,61 @@ 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 + - uplinks (array): Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions. """ kwargs.update(locals()) - if 'dhcpHandling' in kwargs: - options = ['Do not respond to DHCP requests', 'Relay DHCP to another server', 'Run a DHCP server'] - assert kwargs['dhcpHandling'] in options, f'''"dhcpHandling" cannot be "{kwargs['dhcpHandling']}", & must be set to one of: {options}''' - if 'dhcpLeaseTime' in kwargs: - options = ['1 day', '1 hour', '1 week', '12 hours', '30 minutes', '4 hours'] - assert kwargs['dhcpLeaseTime'] in options, f'''"dhcpLeaseTime" cannot be "{kwargs['dhcpLeaseTime']}", & must be set to one of: {options}''' - if 'templateVlanType' in kwargs: - options = ['same', 'unique'] - assert kwargs['templateVlanType'] in options, f'''"templateVlanType" cannot be "{kwargs['templateVlanType']}", & must be set to one of: {options}''' - - metadata = { - 'tags': ['appliance', 'configure', 'vlans'], - 'operation': 'updateNetworkApplianceVlan' - } - networkId = urllib.parse.quote(str(networkId), safe='') - vlanId = urllib.parse.quote(str(vlanId), safe='') - resource = f'/networks/{networkId}/appliance/vlans/{vlanId}' - - body_params = ['name', 'subnet', 'applianceIp', 'groupPolicyId', 'vpnNatSubnet', 'dhcpHandling', 'dhcpRelayServerIps', 'dhcpLeaseTime', 'dhcpBootOptionsEnabled', 'dhcpBootNextServer', 'dhcpBootFilename', 'fixedIpAssignments', 'reservedIpRanges', 'dnsNameservers', 'dhcpOptions', 'templateVlanType', 'cidr', 'mask', 'ipv6', 'mandatoryDhcp', ] + if "dhcpHandling" in kwargs: + options = ["Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server"] + assert kwargs["dhcpHandling"] in options, ( + f'''"dhcpHandling" cannot be "{kwargs["dhcpHandling"]}", & must be set to one of: {options}''' + ) + if "dhcpLeaseTime" in kwargs: + options = ["1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours"] + assert kwargs["dhcpLeaseTime"] in options, ( + f'''"dhcpLeaseTime" cannot be "{kwargs["dhcpLeaseTime"]}", & must be set to one of: {options}''' + ) + if "templateVlanType" in kwargs: + options = ["same", "unique"] + assert kwargs["templateVlanType"] in options, ( + f'''"templateVlanType" cannot be "{kwargs["templateVlanType"]}", & must be set to one of: {options}''' + ) + + metadata = { + "tags": ["appliance", "configure", "vlans"], + "operation": "updateNetworkApplianceVlan", + } + networkId = urllib.parse.quote(str(networkId), safe="") + vlanId = urllib.parse.quote(str(vlanId), safe="") + resource = f"/networks/{networkId}/appliance/vlans/{vlanId}" + + body_params = [ + "name", + "subnet", + "applianceIp", + "groupPolicyId", + "vpnNatSubnet", + "dhcpHandling", + "dhcpRelayServerIps", + "dhcpLeaseTime", + "dhcpBootOptionsEnabled", + "dhcpBootNextServer", + "dhcpBootFilename", + "fixedIpAssignments", + "reservedIpRanges", + "dnsNameservers", + "dhcpOptions", + "templateVlanType", + "cidr", + "mask", + "ipv6", + "mandatoryDhcp", + "uplinks", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkApplianceVlan(self, networkId: str, vlanId: str): """ @@ -2257,16 +2386,14 @@ def deleteNetworkApplianceVlan(self, networkId: str, vlanId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vlans'], - 'operation': 'deleteNetworkApplianceVlan' + "tags": ["appliance", "configure", "vlans"], + "operation": "deleteNetworkApplianceVlan", } - networkId = urllib.parse.quote(str(networkId), safe='') - vlanId = urllib.parse.quote(str(vlanId), safe='') - resource = f'/networks/{networkId}/appliance/vlans/{vlanId}' + networkId = urllib.parse.quote(str(networkId), safe="") + vlanId = urllib.parse.quote(str(vlanId), safe="") + resource = f"/networks/{networkId}/appliance/vlans/{vlanId}" return self._session.delete(metadata, resource) - - def getNetworkApplianceVpnBgp(self, networkId: str): """ @@ -2277,15 +2404,13 @@ def getNetworkApplianceVpnBgp(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'bgp'], - 'operation': 'getNetworkApplianceVpnBgp' + "tags": ["appliance", "configure", "vpn", "bgp"], + "operation": "getNetworkApplianceVpnBgp", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vpn/bgp' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vpn/bgp" return self._session.get(metadata, resource) - - def updateNetworkApplianceVpnBgp(self, networkId: str, enabled: bool, **kwargs): """ @@ -2296,24 +2421,29 @@ def updateNetworkApplianceVpnBgp(self, networkId: str, enabled: bool, **kwargs): - enabled (boolean): Boolean value to enable or disable the BGP configuration. When BGP is enabled, the asNumber (ASN) will be autopopulated with the preconfigured ASN at other Hubs or a default value if there is no ASN configured. - asNumber (integer): An Autonomous System Number (ASN) is required if you are to run BGP and peer with another BGP Speaker outside of the Auto VPN domain. This ASN will be applied to the entire Auto VPN domain. The entire 4-byte ASN range is supported. So, the ASN must be an integer between 1 and 4294967295. When absent, this field is not updated. If no value exists then it defaults to 64512. - ibgpHoldTimer (integer): The iBGP holdtimer in seconds. The iBGP holdtimer must be an integer between 12 and 240. When absent, this field is not updated. If no value exists then it defaults to 240. + - routerId (string): The router ID of the appliance - neighbors (array): List of BGP neighbors. This list replaces the existing set of neighbors. When absent, this field is not updated. """ kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'bgp'], - 'operation': 'updateNetworkApplianceVpnBgp' + "tags": ["appliance", "configure", "vpn", "bgp"], + "operation": "updateNetworkApplianceVpnBgp", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vpn/bgp' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vpn/bgp" - body_params = ['enabled', 'asNumber', 'ibgpHoldTimer', 'neighbors', ] + body_params = [ + "enabled", + "asNumber", + "ibgpHoldTimer", + "routerId", + "neighbors", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceVpnSiteToSiteVpn(self, networkId: str): """ @@ -2324,15 +2454,13 @@ def getNetworkApplianceVpnSiteToSiteVpn(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'siteToSiteVpn'], - 'operation': 'getNetworkApplianceVpnSiteToSiteVpn' + "tags": ["appliance", "configure", "vpn", "siteToSiteVpn"], + "operation": "getNetworkApplianceVpnSiteToSiteVpn", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vpn/siteToSiteVpn' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vpn/siteToSiteVpn" return self._session.get(metadata, resource) - - def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kwargs): """ @@ -2344,27 +2472,32 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw - 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. - 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 """ kwargs.update(locals()) - if 'mode' in kwargs: - options = ['hub', 'none', 'spoke'] - assert kwargs['mode'] in options, f'''"mode" cannot be "{kwargs['mode']}", & must be set to one of: {options}''' + if "mode" in kwargs: + options = ["hub", "none", "spoke"] + assert kwargs["mode"] in options, f'''"mode" cannot be "{kwargs["mode"]}", & must be set to one of: {options}''' metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'siteToSiteVpn'], - 'operation': 'updateNetworkApplianceVpnSiteToSiteVpn' + "tags": ["appliance", "configure", "vpn", "siteToSiteVpn"], + "operation": "updateNetworkApplianceVpnSiteToSiteVpn", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/vpn/siteToSiteVpn' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/vpn/siteToSiteVpn" - body_params = ['mode', 'hubs', 'subnets', 'subnet', ] + body_params = [ + "mode", + "hubs", + "subnets", + "subnet", + "hostTranslations", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkApplianceWarmSpare(self, networkId: str): """ @@ -2375,15 +2508,13 @@ def getNetworkApplianceWarmSpare(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'warmSpare'], - 'operation': 'getNetworkApplianceWarmSpare' + "tags": ["appliance", "configure", "warmSpare"], + "operation": "getNetworkApplianceWarmSpare", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/warmSpare' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/warmSpare" return self._session.get(metadata, resource) - - def updateNetworkApplianceWarmSpare(self, networkId: str, enabled: bool, **kwargs): """ @@ -2401,18 +2532,22 @@ def updateNetworkApplianceWarmSpare(self, networkId: str, enabled: bool, **kwarg kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'warmSpare'], - 'operation': 'updateNetworkApplianceWarmSpare' + "tags": ["appliance", "configure", "warmSpare"], + "operation": "updateNetworkApplianceWarmSpare", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/warmSpare' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/warmSpare" - body_params = ['enabled', 'spareSerial', 'uplinkMode', 'virtualIp1', 'virtualIp2', ] + body_params = [ + "enabled", + "spareSerial", + "uplinkMode", + "virtualIp1", + "virtualIp2", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def swapNetworkApplianceWarmSpare(self, networkId: str): """ @@ -2423,15 +2558,46 @@ def swapNetworkApplianceWarmSpare(self, networkId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'warmSpare'], - 'operation': 'swapNetworkApplianceWarmSpare' + "tags": ["appliance", "configure", "warmSpare"], + "operation": "swapNetworkApplianceWarmSpare", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/appliance/warmSpare/swap' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/warmSpare/swap" return self._session.post(metadata, resource) - + 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} + + return self._session.get_pages(metadata, resource, params, total_pages, direction) def getOrganizationApplianceDnsLocalProfiles(self, organizationId: str, **kwargs): """ @@ -2445,24 +2611,26 @@ def getOrganizationApplianceDnsLocalProfiles(self, organizationId: str, **kwargs kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], - 'operation': 'getOrganizationApplianceDnsLocalProfiles' + "tags": ["appliance", "configure", "dns", "local", "profiles"], + "operation": "getOrganizationApplianceDnsLocalProfiles", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles" - query_params = ['profileIds', ] + query_params = [ + "profileIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['profileIds', ] + array_params = [ + "profileIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def createOrganizationApplianceDnsLocalProfile(self, organizationId: str, name: str): """ @@ -2476,18 +2644,18 @@ def createOrganizationApplianceDnsLocalProfile(self, organizationId: str, name: kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], - 'operation': 'createOrganizationApplianceDnsLocalProfile' + "tags": ["appliance", "configure", "dns", "local", "profiles"], + "operation": "createOrganizationApplianceDnsLocalProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles" - body_params = ['name', ] + body_params = [ + "name", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getOrganizationApplianceDnsLocalProfilesAssignments(self, organizationId: str, **kwargs): """ @@ -2502,24 +2670,28 @@ def getOrganizationApplianceDnsLocalProfilesAssignments(self, organizationId: st kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments'], - 'operation': 'getOrganizationApplianceDnsLocalProfilesAssignments' + "tags": ["appliance", "configure", "dns", "local", "profiles", "assignments"], + "operation": "getOrganizationApplianceDnsLocalProfilesAssignments", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles/assignments" - query_params = ['profileIds', 'networkIds', ] + query_params = [ + "profileIds", + "networkIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['profileIds', 'networkIds', ] + array_params = [ + "profileIds", + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def bulkOrganizationApplianceDnsLocalProfilesAssignmentsCreate(self, organizationId: str, items: list): """ @@ -2533,18 +2705,18 @@ def bulkOrganizationApplianceDnsLocalProfilesAssignmentsCreate(self, organizatio kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments'], - 'operation': 'bulkOrganizationApplianceDnsLocalProfilesAssignmentsCreate' + "tags": ["appliance", "configure", "dns", "local", "profiles", "assignments"], + "operation": "bulkOrganizationApplianceDnsLocalProfilesAssignmentsCreate", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkCreate' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkCreate" - body_params = ['items', ] + body_params = [ + "items", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete(self, organizationId: str, items: list): """ @@ -2558,18 +2730,18 @@ def createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete(self, organ kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments', 'bulkDelete'], - 'operation': 'createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete' + "tags": ["appliance", "configure", "dns", "local", "profiles", "assignments", "bulkDelete"], + "operation": "createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkDelete' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkDelete" - body_params = ['items', ] + body_params = [ + "items", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateOrganizationApplianceDnsLocalProfile(self, organizationId: str, profileId: str, name: str): """ @@ -2584,19 +2756,19 @@ def updateOrganizationApplianceDnsLocalProfile(self, organizationId: str, profil kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], - 'operation': 'updateOrganizationApplianceDnsLocalProfile' + "tags": ["appliance", "configure", "dns", "local", "profiles"], + "operation": "updateOrganizationApplianceDnsLocalProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - profileId = urllib.parse.quote(str(profileId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + profileId = urllib.parse.quote(str(profileId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}" - body_params = ['name', ] + body_params = [ + "name", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteOrganizationApplianceDnsLocalProfile(self, organizationId: str, profileId: str): """ @@ -2608,16 +2780,14 @@ def deleteOrganizationApplianceDnsLocalProfile(self, organizationId: str, profil """ metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], - 'operation': 'deleteOrganizationApplianceDnsLocalProfile' + "tags": ["appliance", "configure", "dns", "local", "profiles"], + "operation": "deleteOrganizationApplianceDnsLocalProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - profileId = urllib.parse.quote(str(profileId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + profileId = urllib.parse.quote(str(profileId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}" return self._session.delete(metadata, resource) - - def getOrganizationApplianceDnsLocalRecords(self, organizationId: str, **kwargs): """ @@ -2631,24 +2801,26 @@ def getOrganizationApplianceDnsLocalRecords(self, organizationId: str, **kwargs) kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], - 'operation': 'getOrganizationApplianceDnsLocalRecords' + "tags": ["appliance", "configure", "dns", "local", "records"], + "operation": "getOrganizationApplianceDnsLocalRecords", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/records' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/records" - query_params = ['profileIds', ] + query_params = [ + "profileIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['profileIds', ] + array_params = [ + "profileIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def createOrganizationApplianceDnsLocalRecord(self, organizationId: str, hostname: str, address: str, profile: dict): """ @@ -2664,18 +2836,20 @@ def createOrganizationApplianceDnsLocalRecord(self, organizationId: str, hostnam kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], - 'operation': 'createOrganizationApplianceDnsLocalRecord' + "tags": ["appliance", "configure", "dns", "local", "records"], + "operation": "createOrganizationApplianceDnsLocalRecord", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/records' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/records" - body_params = ['hostname', 'address', 'profile', ] + body_params = [ + "hostname", + "address", + "profile", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordId: str, **kwargs): """ @@ -2692,19 +2866,21 @@ def updateOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordI kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], - 'operation': 'updateOrganizationApplianceDnsLocalRecord' + "tags": ["appliance", "configure", "dns", "local", "records"], + "operation": "updateOrganizationApplianceDnsLocalRecord", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - recordId = urllib.parse.quote(str(recordId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/records/{recordId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + recordId = urllib.parse.quote(str(recordId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/records/{recordId}" - body_params = ['hostname', 'address', 'profile', ] + body_params = [ + "hostname", + "address", + "profile", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordId: str): """ @@ -2716,16 +2892,14 @@ def deleteOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordI """ metadata = { - 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], - 'operation': 'deleteOrganizationApplianceDnsLocalRecord' + "tags": ["appliance", "configure", "dns", "local", "records"], + "operation": "deleteOrganizationApplianceDnsLocalRecord", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - recordId = urllib.parse.quote(str(recordId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/local/records/{recordId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + recordId = urllib.parse.quote(str(recordId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/local/records/{recordId}" return self._session.delete(metadata, resource) - - def getOrganizationApplianceDnsSplitProfiles(self, organizationId: str, **kwargs): """ @@ -2739,24 +2913,26 @@ def getOrganizationApplianceDnsSplitProfiles(self, organizationId: str, **kwargs kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], - 'operation': 'getOrganizationApplianceDnsSplitProfiles' + "tags": ["appliance", "configure", "dns", "split", "profiles"], + "operation": "getOrganizationApplianceDnsSplitProfiles", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles" - query_params = ['profileIds', ] + query_params = [ + "profileIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['profileIds', ] + array_params = [ + "profileIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def createOrganizationApplianceDnsSplitProfile(self, organizationId: str, name: str, hostnames: list, nameservers: dict): """ @@ -2772,18 +2948,20 @@ def createOrganizationApplianceDnsSplitProfile(self, organizationId: str, name: kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], - 'operation': 'createOrganizationApplianceDnsSplitProfile' + "tags": ["appliance", "configure", "dns", "split", "profiles"], + "operation": "createOrganizationApplianceDnsSplitProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles" - body_params = ['name', 'hostnames', 'nameservers', ] + body_params = [ + "name", + "hostnames", + "nameservers", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getOrganizationApplianceDnsSplitProfilesAssignments(self, organizationId: str, **kwargs): """ @@ -2798,24 +2976,28 @@ def getOrganizationApplianceDnsSplitProfilesAssignments(self, organizationId: st kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments'], - 'operation': 'getOrganizationApplianceDnsSplitProfilesAssignments' + "tags": ["appliance", "configure", "dns", "split", "profiles", "assignments"], + "operation": "getOrganizationApplianceDnsSplitProfilesAssignments", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles/assignments" - query_params = ['profileIds', 'networkIds', ] + query_params = [ + "profileIds", + "networkIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['profileIds', 'networkIds', ] + array_params = [ + "profileIds", + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate(self, organizationId: str, items: list): """ @@ -2829,18 +3011,18 @@ def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate(self, organ kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments', 'bulkCreate'], - 'operation': 'createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate' + "tags": ["appliance", "configure", "dns", "split", "profiles", "assignments", "bulkCreate"], + "operation": "createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkCreate' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkCreate" - body_params = ['items', ] + body_params = [ + "items", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete(self, organizationId: str, items: list): """ @@ -2854,18 +3036,18 @@ def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete(self, organ kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments', 'bulkDelete'], - 'operation': 'createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete' + "tags": ["appliance", "configure", "dns", "split", "profiles", "assignments", "bulkDelete"], + "operation": "createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkDelete' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkDelete" - body_params = ['items', ] + body_params = [ + "items", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateOrganizationApplianceDnsSplitProfile(self, organizationId: str, profileId: str, **kwargs): """ @@ -2882,19 +3064,21 @@ def updateOrganizationApplianceDnsSplitProfile(self, organizationId: str, profil kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], - 'operation': 'updateOrganizationApplianceDnsSplitProfile' + "tags": ["appliance", "configure", "dns", "split", "profiles"], + "operation": "updateOrganizationApplianceDnsSplitProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - profileId = urllib.parse.quote(str(profileId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + profileId = urllib.parse.quote(str(profileId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}" - body_params = ['name', 'hostnames', 'nameservers', ] + body_params = [ + "name", + "hostnames", + "nameservers", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteOrganizationApplianceDnsSplitProfile(self, organizationId: str, profileId: str): """ @@ -2906,18 +3090,18 @@ def deleteOrganizationApplianceDnsSplitProfile(self, organizationId: str, profil """ metadata = { - 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], - 'operation': 'deleteOrganizationApplianceDnsSplitProfile' + "tags": ["appliance", "configure", "dns", "split", "profiles"], + "operation": "deleteOrganizationApplianceDnsSplitProfile", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - profileId = urllib.parse.quote(str(profileId), safe='') - resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + profileId = urllib.parse.quote(str(profileId), safe="") + resource = f"/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}" return self._session.delete(metadata, resource) - - - def getOrganizationApplianceFirewallMulticastForwardingByNetwork(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationApplianceFirewallMulticastForwardingByNetwork( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): """ **List Static Multicasting forwarding settings for MX networks** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-firewall-multicast-forwarding-by-network @@ -2934,26 +3118,31 @@ def getOrganizationApplianceFirewallMulticastForwardingByNetwork(self, organizat kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'firewall', 'multicastForwarding', 'byNetwork'], - 'operation': 'getOrganizationApplianceFirewallMulticastForwardingByNetwork' + "tags": ["appliance", "configure", "firewall", "multicastForwarding", "byNetwork"], + "operation": "getOrganizationApplianceFirewallMulticastForwardingByNetwork", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork" - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', ] + 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', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - - def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **List the security events for an organization** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-security-events @@ -2972,23 +3161,31 @@ def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_page 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 "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': ['appliance', 'monitor', 'security', 'events'], - 'operation': 'getOrganizationApplianceSecurityEvents' + "tags": ["appliance", "monitor", "security", "events"], + "operation": "getOrganizationApplianceSecurityEvents", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/security/events' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/security/events" - query_params = ['t0', 't1', 'timespan', 'perPage', 'startingAfter', 'endingBefore', 'sortOrder', ] + query_params = [ + "t0", + "t1", + "timespan", + "perPage", + "startingAfter", + "endingBefore", + "sortOrder", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get_pages(metadata, resource, params, total_pages, direction) - - def getOrganizationApplianceSecurityIntrusion(self, organizationId: str): """ @@ -2999,15 +3196,13 @@ def getOrganizationApplianceSecurityIntrusion(self, organizationId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'security', 'intrusion'], - 'operation': 'getOrganizationApplianceSecurityIntrusion' + "tags": ["appliance", "configure", "security", "intrusion"], + "operation": "getOrganizationApplianceSecurityIntrusion", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/security/intrusion' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/security/intrusion" return self._session.get(metadata, resource) - - def updateOrganizationApplianceSecurityIntrusion(self, organizationId: str, allowedRules: list): """ @@ -3021,20 +3216,22 @@ def updateOrganizationApplianceSecurityIntrusion(self, organizationId: str, allo kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'security', 'intrusion'], - 'operation': 'updateOrganizationApplianceSecurityIntrusion' + "tags": ["appliance", "configure", "security", "intrusion"], + "operation": "updateOrganizationApplianceSecurityIntrusion", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/security/intrusion' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/security/intrusion" - body_params = ['allowedRules', ] + body_params = [ + "allowedRules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - - def getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): """ **Display VPN exclusion rules for MX networks.** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-traffic-shaping-vpn-exclusions-by-network @@ -3051,26 +3248,31 @@ def getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork(self, organizat kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'trafficShaping', 'vpnExclusions', 'byNetwork'], - 'operation': 'getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork' + "tags": ["appliance", "configure", "trafficShaping", "vpnExclusions", "byNetwork"], + "operation": "getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/trafficShaping/vpnExclusions/byNetwork' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/trafficShaping/vpnExclusions/byNetwork" - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', ] + 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', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - - def getOrganizationApplianceUplinkStatuses(self, organizationId: str, total_pages=1, direction='next', **kwargs): + 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** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-uplink-statuses @@ -3089,24 +3291,77 @@ def getOrganizationApplianceUplinkStatuses(self, organizationId: str, total_page kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'uplinks', 'statuses'], - 'operation': 'getOrganizationApplianceUplinkStatuses' + "tags": ["appliance", "monitor", "uplinks", "statuses"], + "operation": "getOrganizationApplianceUplinkStatuses", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/uplink/statuses' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/uplink/statuses" - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', 'serials', 'iccids', ] + query_params = [ + "perPage", + "startingAfter", + "endingBefore", + "networkIds", + "serials", + "iccids", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['networkIds', 'serials', 'iccids', ] + array_params = [ + "networkIds", + "serials", + "iccids", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - + def getOrganizationApplianceUplinksNatByNetwork(self, organizationId: str, total_pages=1, direction="next", **kwargs): + """ + **Fetch uplink NAT settings of each network in the organization** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-uplinks-nat-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 the results by the included set of network IDs + - interfaces (array): Optional parameter to filter the results by the included set of interfaces + - 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. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "uplinks", "nat", "byNetwork"], + "operation": "getOrganizationApplianceUplinksNatByNetwork", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/uplinks/nat/byNetwork" + + query_params = [ + "networkIds", + "interfaces", + "perPage", + "startingAfter", + "endingBefore", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = [ + "networkIds", + "interfaces", + ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f"{k.strip()}[]"] = kwargs[f"{k}"] + params.pop(k.strip()) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) def getOrganizationApplianceUplinksStatusesOverview(self, organizationId: str, **kwargs): """ @@ -3120,24 +3375,26 @@ def getOrganizationApplianceUplinksStatusesOverview(self, organizationId: str, * kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'uplinks', 'statuses', 'overview'], - 'operation': 'getOrganizationApplianceUplinksStatusesOverview' + "tags": ["appliance", "monitor", "uplinks", "statuses", "overview"], + "operation": "getOrganizationApplianceUplinksStatusesOverview", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/uplinks/statuses/overview' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/uplinks/statuses/overview" - query_params = ['networkIds', ] + query_params = [ + "networkIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['networkIds', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def getOrganizationApplianceUplinksUsageByNetwork(self, organizationId: str, **kwargs): """ @@ -3153,18 +3410,20 @@ def getOrganizationApplianceUplinksUsageByNetwork(self, organizationId: str, **k kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'uplinks', 'usage', 'byNetwork'], - 'operation': 'getOrganizationApplianceUplinksUsageByNetwork' + "tags": ["appliance", "monitor", "uplinks", "usage", "byNetwork"], + "operation": "getOrganizationApplianceUplinksUsageByNetwork", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/uplinks/usage/byNetwork' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/uplinks/usage/byNetwork" - query_params = ['t0', 't1', 'timespan', ] + query_params = [ + "t0", + "t1", + "timespan", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: str): """ @@ -3175,15 +3434,13 @@ def getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: st """ metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'siteToSite', 'ipsec', 'peers', 'slas'], - 'operation': 'getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas' + "tags": ["appliance", "configure", "vpn", "siteToSite", "ipsec", "peers", "slas"], + "operation": "getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/siteToSite/ipsec/peers/slas' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/siteToSite/ipsec/peers/slas" return self._session.get(metadata, resource) - - def updateOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: str, **kwargs): """ @@ -3197,20 +3454,20 @@ def updateOrganizationApplianceVpnSiteToSiteIpsecPeersSlas(self, organizationId: kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'siteToSite', 'ipsec', 'peers', 'slas'], - 'operation': 'updateOrganizationApplianceVpnSiteToSiteIpsecPeersSlas' + "tags": ["appliance", "configure", "vpn", "siteToSite", "ipsec", "peers", "slas"], + "operation": "updateOrganizationApplianceVpnSiteToSiteIpsecPeersSlas", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/siteToSite/ipsec/peers/slas' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/siteToSite/ipsec/peers/slas" - body_params = ['items', ] + body_params = [ + "items", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - - def getOrganizationApplianceVpnStats(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationApplianceVpnStats(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **Show VPN history stat for networks in an organization** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-stats @@ -3230,26 +3487,34 @@ def getOrganizationApplianceVpnStats(self, organizationId: str, total_pages=1, d kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'vpn', 'stats'], - 'operation': 'getOrganizationApplianceVpnStats' + "tags": ["appliance", "monitor", "vpn", "stats"], + "operation": "getOrganizationApplianceVpnStats", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/stats' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/stats" - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', 't0', 't1', 'timespan', ] + query_params = [ + "perPage", + "startingAfter", + "endingBefore", + "networkIds", + "t0", + "t1", + "timespan", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['networkIds', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - - def getOrganizationApplianceVpnStatuses(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationApplianceVpnStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **Show VPN status for networks in an organization** https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-vpn-statuses @@ -3266,24 +3531,29 @@ def getOrganizationApplianceVpnStatuses(self, organizationId: str, total_pages=1 kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'monitor', 'vpn', 'statuses'], - 'operation': 'getOrganizationApplianceVpnStatuses' + "tags": ["appliance", "monitor", "vpn", "statuses"], + "operation": "getOrganizationApplianceVpnStatuses", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/statuses' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/statuses" - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', ] + 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', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - def getOrganizationApplianceVpnThirdPartyVPNPeers(self, organizationId: str): """ @@ -3294,15 +3564,13 @@ def getOrganizationApplianceVpnThirdPartyVPNPeers(self, organizationId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'thirdPartyVPNPeers'], - 'operation': 'getOrganizationApplianceVpnThirdPartyVPNPeers' + "tags": ["appliance", "configure", "vpn", "thirdPartyVPNPeers"], + "operation": "getOrganizationApplianceVpnThirdPartyVPNPeers", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers" return self._session.get(metadata, resource) - - def updateOrganizationApplianceVpnThirdPartyVPNPeers(self, organizationId: str, peers: list): """ @@ -3316,18 +3584,18 @@ def updateOrganizationApplianceVpnThirdPartyVPNPeers(self, organizationId: str, kwargs = locals() metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'thirdPartyVPNPeers'], - 'operation': 'updateOrganizationApplianceVpnThirdPartyVPNPeers' + "tags": ["appliance", "configure", "vpn", "thirdPartyVPNPeers"], + "operation": "updateOrganizationApplianceVpnThirdPartyVPNPeers", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers" - body_params = ['peers', ] + body_params = [ + "peers", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getOrganizationApplianceVpnVpnFirewallRules(self, organizationId: str): """ @@ -3338,15 +3606,13 @@ def getOrganizationApplianceVpnVpnFirewallRules(self, organizationId: str): """ metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'vpnFirewallRules'], - 'operation': 'getOrganizationApplianceVpnVpnFirewallRules' + "tags": ["appliance", "configure", "vpn", "vpnFirewallRules"], + "operation": "getOrganizationApplianceVpnVpnFirewallRules", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/vpnFirewallRules' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/vpnFirewallRules" return self._session.get(metadata, resource) - - def updateOrganizationApplianceVpnVpnFirewallRules(self, organizationId: str, **kwargs): """ @@ -3361,14 +3627,167 @@ def updateOrganizationApplianceVpnVpnFirewallRules(self, organizationId: str, ** kwargs.update(locals()) metadata = { - 'tags': ['appliance', 'configure', 'vpn', 'vpnFirewallRules'], - 'operation': 'updateOrganizationApplianceVpnVpnFirewallRules' + "tags": ["appliance", "configure", "vpn", "vpnFirewallRules"], + "operation": "updateOrganizationApplianceVpnVpnFirewallRules", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/appliance/vpn/vpnFirewallRules' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/vpn/vpnFirewallRules" - body_params = ['rules', 'syslogDefaultRule', ] + body_params = [ + "rules", + "syslogDefaultRule", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - + + def assignOrganizationPoliciesGlobalGroupPoliciesApplianceVlans(self, organizationId: str, policy: dict, vlans: list): + """ + **Assign VLANs to a policy** + https://developer.cisco.com/meraki/api-v1/#!assign-organization-policies-global-group-policies-appliance-vlans + + - organizationId (string): Organization ID + - policy (object): Policy to assign VLANs to + - vlans (array): VLANs to assign + """ + + kwargs = locals() + + metadata = { + "tags": ["appliance", "configure", "policies", "global", "group", "vlans"], + "operation": "assignOrganizationPoliciesGlobalGroupPoliciesApplianceVlans", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assign" + + body_params = [ + "policy", + "vlans", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + def getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignments( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): + """ + **List appliance VLAN policy assignments** + https://developer.cisco.com/meraki/api-v1/#!get-organization-policies-global-group-policies-appliance-vlans-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 + - assignmentIds (array): Filter assignments by assignment IDs + - policyIds (array): Filter assignments by policy IDs + - interfaceIds (array): Filter assignments by interface 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. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "policies", "global", "group", "vlans", "assignments"], + "operation": "getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignments", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assignments" + + query_params = [ + "assignmentIds", + "policyIds", + "interfaceIds", + "perPage", + "startingAfter", + "endingBefore", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = [ + "assignmentIds", + "policyIds", + "interfaceIds", + ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f"{k.strip()}[]"] = kwargs[f"{k}"] + params.pop(k.strip()) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) + + def getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignmentsByVlan( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): + """ + **List policies by appliance VLANs** + https://developer.cisco.com/meraki/api-v1/#!get-organization-policies-global-group-policies-appliance-vlans-assignments-by-vlan + + - organizationId (string): Organization ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - search (string): Search term for filtering policies + - vlanIds (array): Filter by VLAN IDs + - interfaceIds (array): Filter by interface IDs + - 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. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "policies", "global", "group", "vlans", "assignments", "byVlan"], + "operation": "getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignmentsByVlan", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assignments/byVlan" + + query_params = [ + "search", + "vlanIds", + "interfaceIds", + "perPage", + "startingAfter", + "endingBefore", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = [ + "vlanIds", + "interfaceIds", + ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f"{k.strip()}[]"] = kwargs[f"{k}"] + params.pop(k.strip()) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) + + def removeOrganizationPoliciesGlobalGroupPoliciesApplianceVlans(self, organizationId: str, policy: dict, vlans: list): + """ + **Remove VLANs from a policy** + https://developer.cisco.com/meraki/api-v1/#!remove-organization-policies-global-group-policies-appliance-vlans + + - organizationId (string): Organization ID + - policy (object): Policy to remove VLANs from + - vlans (array): VLANs to remove + """ + + kwargs = locals() + + metadata = { + "tags": ["appliance", "configure", "policies", "global", "group", "vlans"], + "operation": "removeOrganizationPoliciesGlobalGroupPoliciesApplianceVlans", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/remove" + + body_params = [ + "policy", + "vlans", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) diff --git a/meraki/aio/api/camera.py b/meraki/aio/api/camera.py index 1b69d09..72ded3f 100644 --- a/meraki/aio/api/camera.py +++ b/meraki/aio/api/camera.py @@ -5,8 +5,6 @@ class AsyncCamera: def __init__(self, session): super().__init__() self._session = session - - def getDeviceCameraAnalyticsLive(self, serial: str): """ @@ -17,15 +15,13 @@ def getDeviceCameraAnalyticsLive(self, serial: str): """ metadata = { - 'tags': ['camera', 'monitor', 'analytics', 'live'], - 'operation': 'getDeviceCameraAnalyticsLive' + "tags": ["camera", "monitor", "analytics", "live"], + "operation": "getDeviceCameraAnalyticsLive", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/analytics/live' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/analytics/live" return self._session.get(metadata, resource) - - def getDeviceCameraAnalyticsOverview(self, serial: str, **kwargs): """ @@ -41,23 +37,28 @@ def getDeviceCameraAnalyticsOverview(self, serial: str, **kwargs): kwargs.update(locals()) - if 'objectType' in kwargs: - options = ['person', 'vehicle'] - assert kwargs['objectType'] in options, f'''"objectType" cannot be "{kwargs['objectType']}", & must be set to one of: {options}''' + if "objectType" in kwargs: + options = ["person", "vehicle"] + assert kwargs["objectType"] in options, ( + f'''"objectType" cannot be "{kwargs["objectType"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['camera', 'monitor', 'analytics', 'overview'], - 'operation': 'getDeviceCameraAnalyticsOverview' + "tags": ["camera", "monitor", "analytics", "overview"], + "operation": "getDeviceCameraAnalyticsOverview", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/analytics/overview' - - query_params = ['t0', 't1', 'timespan', 'objectType', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/analytics/overview" + + query_params = [ + "t0", + "t1", + "timespan", + "objectType", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getDeviceCameraAnalyticsRecent(self, serial: str, **kwargs): """ @@ -70,23 +71,25 @@ def getDeviceCameraAnalyticsRecent(self, serial: str, **kwargs): kwargs.update(locals()) - if 'objectType' in kwargs: - options = ['person', 'vehicle'] - assert kwargs['objectType'] in options, f'''"objectType" cannot be "{kwargs['objectType']}", & must be set to one of: {options}''' + if "objectType" in kwargs: + options = ["person", "vehicle"] + assert kwargs["objectType"] in options, ( + f'''"objectType" cannot be "{kwargs["objectType"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['camera', 'monitor', 'analytics', 'recent'], - 'operation': 'getDeviceCameraAnalyticsRecent' + "tags": ["camera", "monitor", "analytics", "recent"], + "operation": "getDeviceCameraAnalyticsRecent", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/analytics/recent' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/analytics/recent" - query_params = ['objectType', ] + query_params = [ + "objectType", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getDeviceCameraAnalyticsZones(self, serial: str): """ @@ -97,15 +100,13 @@ def getDeviceCameraAnalyticsZones(self, serial: str): """ metadata = { - 'tags': ['camera', 'monitor', 'analytics', 'zones'], - 'operation': 'getDeviceCameraAnalyticsZones' + "tags": ["camera", "monitor", "analytics", "zones"], + "operation": "getDeviceCameraAnalyticsZones", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/analytics/zones' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/analytics/zones" return self._session.get(metadata, resource) - - def getDeviceCameraAnalyticsZoneHistory(self, serial: str, zoneId: str, **kwargs): """ @@ -123,24 +124,59 @@ def getDeviceCameraAnalyticsZoneHistory(self, serial: str, zoneId: str, **kwargs kwargs.update(locals()) - if 'objectType' in kwargs: - options = ['person', 'vehicle'] - assert kwargs['objectType'] in options, f'''"objectType" cannot be "{kwargs['objectType']}", & must be set to one of: {options}''' + if "objectType" in kwargs: + options = ["person", "vehicle"] + assert kwargs["objectType"] in options, ( + f'''"objectType" cannot be "{kwargs["objectType"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['camera', 'monitor', 'analytics', 'zones', 'history'], - 'operation': 'getDeviceCameraAnalyticsZoneHistory' + "tags": ["camera", "monitor", "analytics", "zones", "history"], + "operation": "getDeviceCameraAnalyticsZoneHistory", } - serial = urllib.parse.quote(str(serial), safe='') - zoneId = urllib.parse.quote(str(zoneId), safe='') - resource = f'/devices/{serial}/camera/analytics/zones/{zoneId}/history' - - query_params = ['t0', 't1', 'timespan', 'resolution', 'objectType', ] + serial = urllib.parse.quote(str(serial), safe="") + zoneId = urllib.parse.quote(str(zoneId), safe="") + resource = f"/devices/{serial}/camera/analytics/zones/{zoneId}/history" + + query_params = [ + "t0", + "t1", + "timespan", + "resolution", + "objectType", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - + def clipDeviceCamera(self, serial: str, startTimestamp: str, endTimestamp: str, **kwargs): + """ + **Generate a video clip of up to 5 minutes long.** + https://developer.cisco.com/meraki/api-v1/#!clip-device-camera + + - serial (string): Serial + - startTimestamp (string): The start time for the clip. The timestamp is expected to be in ISO 8601 format. + - endTimestamp (string): The end time for the clip. The timestamp is expected to be in ISO 8601 format. + - imagerId (integer): For multi-imager cameras, the imager ID to query. Defaults to '1' if omitted. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["camera", "monitor"], + "operation": "clipDeviceCamera", + } + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/clip" + + query_params = [ + "startTimestamp", + "endTimestamp", + "imagerId", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + return self._session.get(metadata, resource, params) def getDeviceCameraCustomAnalytics(self, serial: str): """ @@ -151,15 +187,13 @@ def getDeviceCameraCustomAnalytics(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'customAnalytics'], - 'operation': 'getDeviceCameraCustomAnalytics' + "tags": ["camera", "configure", "customAnalytics"], + "operation": "getDeviceCameraCustomAnalytics", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/customAnalytics' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/customAnalytics" return self._session.get(metadata, resource) - - def updateDeviceCameraCustomAnalytics(self, serial: str, **kwargs): """ @@ -175,18 +209,20 @@ def updateDeviceCameraCustomAnalytics(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'customAnalytics'], - 'operation': 'updateDeviceCameraCustomAnalytics' + "tags": ["camera", "configure", "customAnalytics"], + "operation": "updateDeviceCameraCustomAnalytics", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/customAnalytics' - - body_params = ['enabled', 'artifactId', 'parameters', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/customAnalytics" + + body_params = [ + "enabled", + "artifactId", + "parameters", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def generateDeviceCameraSnapshot(self, serial: str, **kwargs): """ @@ -201,18 +237,19 @@ def generateDeviceCameraSnapshot(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['camera', 'monitor'], - 'operation': 'generateDeviceCameraSnapshot' + "tags": ["camera", "monitor"], + "operation": "generateDeviceCameraSnapshot", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/generateSnapshot' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/generateSnapshot" - body_params = ['timestamp', 'fullframe', ] + body_params = [ + "timestamp", + "fullframe", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceCameraQualityAndRetention(self, serial: str): """ @@ -223,15 +260,13 @@ def getDeviceCameraQualityAndRetention(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'qualityAndRetention'], - 'operation': 'getDeviceCameraQualityAndRetention' + "tags": ["camera", "configure", "qualityAndRetention"], + "operation": "getDeviceCameraQualityAndRetention", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/qualityAndRetention' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/qualityAndRetention" return self._session.get(metadata, resource) - - def updateDeviceCameraQualityAndRetention(self, serial: str, **kwargs): """ @@ -250,29 +285,41 @@ def updateDeviceCameraQualityAndRetention(self, serial: str, **kwargs): kwargs.update(locals()) - if 'quality' in kwargs: - options = ['Enhanced', 'High', 'Standard', 'Ultra'] - assert kwargs['quality'] in options, f'''"quality" cannot be "{kwargs['quality']}", & must be set to one of: {options}''' - if 'resolution' in kwargs: - options = ['1080x1080', '1280x720', '1920x1080', '2112x2112', '2688x1512', '2880x2880', '3840x2160'] - assert kwargs['resolution'] in options, f'''"resolution" cannot be "{kwargs['resolution']}", & must be set to one of: {options}''' - if 'motionDetectorVersion' in kwargs: + if "quality" in kwargs: + options = ["Enhanced", "High", "Standard", "Ultra"] + assert kwargs["quality"] in options, ( + f'''"quality" cannot be "{kwargs["quality"]}", & must be set to one of: {options}''' + ) + if "resolution" in kwargs: + options = ["1080x1080", "1280x720", "1920x1080", "2112x2112", "2688x1512", "2880x2880", "3840x2160"] + assert kwargs["resolution"] in options, ( + f'''"resolution" cannot be "{kwargs["resolution"]}", & must be set to one of: {options}''' + ) + if "motionDetectorVersion" in kwargs: options = [1, 2] - assert kwargs['motionDetectorVersion'] in options, f'''"motionDetectorVersion" cannot be "{kwargs['motionDetectorVersion']}", & must be set to one of: {options}''' + assert kwargs["motionDetectorVersion"] in options, ( + f'''"motionDetectorVersion" cannot be "{kwargs["motionDetectorVersion"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['camera', 'configure', 'qualityAndRetention'], - 'operation': 'updateDeviceCameraQualityAndRetention' + "tags": ["camera", "configure", "qualityAndRetention"], + "operation": "updateDeviceCameraQualityAndRetention", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/qualityAndRetention' - - body_params = ['profileId', 'motionBasedRetentionEnabled', 'audioRecordingEnabled', 'restrictedBandwidthModeEnabled', 'quality', 'resolution', 'motionDetectorVersion', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/qualityAndRetention" + + body_params = [ + "profileId", + "motionBasedRetentionEnabled", + "audioRecordingEnabled", + "restrictedBandwidthModeEnabled", + "quality", + "resolution", + "motionDetectorVersion", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceCameraSense(self, serial: str): """ @@ -283,15 +330,13 @@ def getDeviceCameraSense(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'sense'], - 'operation': 'getDeviceCameraSense' + "tags": ["camera", "configure", "sense"], + "operation": "getDeviceCameraSense", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/sense' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/sense" return self._session.get(metadata, resource) - - def updateDeviceCameraSense(self, serial: str, **kwargs): """ @@ -308,18 +353,21 @@ def updateDeviceCameraSense(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'sense'], - 'operation': 'updateDeviceCameraSense' + "tags": ["camera", "configure", "sense"], + "operation": "updateDeviceCameraSense", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/sense' - - body_params = ['senseEnabled', 'mqttBrokerId', 'audioDetection', 'detectionModelId', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/sense" + + body_params = [ + "senseEnabled", + "mqttBrokerId", + "audioDetection", + "detectionModelId", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceCameraSenseObjectDetectionModels(self, serial: str): """ @@ -330,15 +378,13 @@ def getDeviceCameraSenseObjectDetectionModels(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'sense', 'objectDetectionModels'], - 'operation': 'getDeviceCameraSenseObjectDetectionModels' + "tags": ["camera", "configure", "sense", "objectDetectionModels"], + "operation": "getDeviceCameraSenseObjectDetectionModels", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/sense/objectDetectionModels' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/sense/objectDetectionModels" return self._session.get(metadata, resource) - - def getDeviceCameraVideoSettings(self, serial: str): """ @@ -349,15 +395,13 @@ def getDeviceCameraVideoSettings(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'video', 'settings'], - 'operation': 'getDeviceCameraVideoSettings' + "tags": ["camera", "configure", "video", "settings"], + "operation": "getDeviceCameraVideoSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/video/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/video/settings" return self._session.get(metadata, resource) - - def updateDeviceCameraVideoSettings(self, serial: str, **kwargs): """ @@ -371,18 +415,18 @@ def updateDeviceCameraVideoSettings(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'video', 'settings'], - 'operation': 'updateDeviceCameraVideoSettings' + "tags": ["camera", "configure", "video", "settings"], + "operation": "updateDeviceCameraVideoSettings", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/video/settings' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/video/settings" - body_params = ['externalRtspEnabled', ] + body_params = [ + "externalRtspEnabled", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceCameraVideoLink(self, serial: str, **kwargs): """ @@ -396,18 +440,18 @@ def getDeviceCameraVideoLink(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'videoLink'], - 'operation': 'getDeviceCameraVideoLink' + "tags": ["camera", "configure", "videoLink"], + "operation": "getDeviceCameraVideoLink", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/videoLink' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/videoLink" - query_params = ['timestamp', ] + query_params = [ + "timestamp", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getDeviceCameraWirelessProfiles(self, serial: str): """ @@ -418,15 +462,13 @@ def getDeviceCameraWirelessProfiles(self, serial: str): """ metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'getDeviceCameraWirelessProfiles' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "getDeviceCameraWirelessProfiles", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/wirelessProfiles' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/wirelessProfiles" return self._session.get(metadata, resource) - - def updateDeviceCameraWirelessProfiles(self, serial: str, ids: dict): """ @@ -440,18 +482,18 @@ def updateDeviceCameraWirelessProfiles(self, serial: str, ids: dict): kwargs = locals() metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'updateDeviceCameraWirelessProfiles' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "updateDeviceCameraWirelessProfiles", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/camera/wirelessProfiles' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/camera/wirelessProfiles" - body_params = ['ids', ] + body_params = [ + "ids", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkCameraQualityRetentionProfiles(self, networkId: str): """ @@ -462,15 +504,13 @@ def getNetworkCameraQualityRetentionProfiles(self, networkId: str): """ metadata = { - 'tags': ['camera', 'configure', 'qualityRetentionProfiles'], - 'operation': 'getNetworkCameraQualityRetentionProfiles' + "tags": ["camera", "configure", "qualityRetentionProfiles"], + "operation": "getNetworkCameraQualityRetentionProfiles", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/camera/qualityRetentionProfiles' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/camera/qualityRetentionProfiles" return self._session.get(metadata, resource) - - def createNetworkCameraQualityRetentionProfile(self, networkId: str, name: str, **kwargs): """ @@ -493,18 +533,27 @@ def createNetworkCameraQualityRetentionProfile(self, networkId: str, name: str, kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'qualityRetentionProfiles'], - 'operation': 'createNetworkCameraQualityRetentionProfile' + "tags": ["camera", "configure", "qualityRetentionProfiles"], + "operation": "createNetworkCameraQualityRetentionProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/camera/qualityRetentionProfiles' - - body_params = ['name', 'motionBasedRetentionEnabled', 'restrictedBandwidthModeEnabled', 'audioRecordingEnabled', 'cloudArchiveEnabled', 'motionDetectorVersion', 'smartRetention', 'scheduleId', 'maxRetentionDays', 'videoSettings', ] + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/camera/qualityRetentionProfiles" + + body_params = [ + "name", + "motionBasedRetentionEnabled", + "restrictedBandwidthModeEnabled", + "audioRecordingEnabled", + "cloudArchiveEnabled", + "motionDetectorVersion", + "smartRetention", + "scheduleId", + "maxRetentionDays", + "videoSettings", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRetentionProfileId: str): """ @@ -516,16 +565,14 @@ def getNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRetenti """ metadata = { - 'tags': ['camera', 'configure', 'qualityRetentionProfiles'], - 'operation': 'getNetworkCameraQualityRetentionProfile' + "tags": ["camera", "configure", "qualityRetentionProfiles"], + "operation": "getNetworkCameraQualityRetentionProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe='') - resource = f'/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe="") + resource = f"/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}" return self._session.get(metadata, resource) - - def updateNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRetentionProfileId: str, **kwargs): """ @@ -549,19 +596,28 @@ def updateNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRete kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'qualityRetentionProfiles'], - 'operation': 'updateNetworkCameraQualityRetentionProfile' + "tags": ["camera", "configure", "qualityRetentionProfiles"], + "operation": "updateNetworkCameraQualityRetentionProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe='') - resource = f'/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}' - - body_params = ['name', 'motionBasedRetentionEnabled', 'restrictedBandwidthModeEnabled', 'audioRecordingEnabled', 'cloudArchiveEnabled', 'motionDetectorVersion', 'smartRetention', 'scheduleId', 'maxRetentionDays', 'videoSettings', ] + networkId = urllib.parse.quote(str(networkId), safe="") + qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe="") + resource = f"/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}" + + body_params = [ + "name", + "motionBasedRetentionEnabled", + "restrictedBandwidthModeEnabled", + "audioRecordingEnabled", + "cloudArchiveEnabled", + "motionDetectorVersion", + "smartRetention", + "scheduleId", + "maxRetentionDays", + "videoSettings", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRetentionProfileId: str): """ @@ -573,16 +629,14 @@ def deleteNetworkCameraQualityRetentionProfile(self, networkId: str, qualityRete """ metadata = { - 'tags': ['camera', 'configure', 'qualityRetentionProfiles'], - 'operation': 'deleteNetworkCameraQualityRetentionProfile' + "tags": ["camera", "configure", "qualityRetentionProfiles"], + "operation": "deleteNetworkCameraQualityRetentionProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe='') - resource = f'/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + qualityRetentionProfileId = urllib.parse.quote(str(qualityRetentionProfileId), safe="") + resource = f"/networks/{networkId}/camera/qualityRetentionProfiles/{qualityRetentionProfileId}" return self._session.delete(metadata, resource) - - def getNetworkCameraSchedules(self, networkId: str): """ @@ -593,15 +647,13 @@ def getNetworkCameraSchedules(self, networkId: str): """ metadata = { - 'tags': ['camera', 'configure', 'schedules'], - 'operation': 'getNetworkCameraSchedules' + "tags": ["camera", "configure", "schedules"], + "operation": "getNetworkCameraSchedules", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/camera/schedules' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/camera/schedules" return self._session.get(metadata, resource) - - def createNetworkCameraWirelessProfile(self, networkId: str, name: str, ssid: dict, **kwargs): """ @@ -617,18 +669,20 @@ def createNetworkCameraWirelessProfile(self, networkId: str, name: str, ssid: di kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'createNetworkCameraWirelessProfile' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "createNetworkCameraWirelessProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/camera/wirelessProfiles' - - body_params = ['name', 'ssid', 'identity', ] + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/camera/wirelessProfiles" + + body_params = [ + "name", + "ssid", + "identity", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getNetworkCameraWirelessProfiles(self, networkId: str): """ @@ -639,15 +693,13 @@ def getNetworkCameraWirelessProfiles(self, networkId: str): """ metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'getNetworkCameraWirelessProfiles' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "getNetworkCameraWirelessProfiles", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/camera/wirelessProfiles' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/camera/wirelessProfiles" return self._session.get(metadata, resource) - - def getNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: str): """ @@ -659,16 +711,14 @@ def getNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: str """ metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'getNetworkCameraWirelessProfile' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "getNetworkCameraWirelessProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe='') - resource = f'/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe="") + resource = f"/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}" return self._session.get(metadata, resource) - - def updateNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: str, **kwargs): """ @@ -685,19 +735,21 @@ def updateNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'updateNetworkCameraWirelessProfile' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "updateNetworkCameraWirelessProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe='') - resource = f'/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}' - - body_params = ['name', 'ssid', 'identity', ] + networkId = urllib.parse.quote(str(networkId), safe="") + wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe="") + resource = f"/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}" + + body_params = [ + "name", + "ssid", + "identity", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: str): """ @@ -709,16 +761,14 @@ def deleteNetworkCameraWirelessProfile(self, networkId: str, wirelessProfileId: """ metadata = { - 'tags': ['camera', 'configure', 'wirelessProfiles'], - 'operation': 'deleteNetworkCameraWirelessProfile' + "tags": ["camera", "configure", "wirelessProfiles"], + "operation": "deleteNetworkCameraWirelessProfile", } - networkId = urllib.parse.quote(str(networkId), safe='') - wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe='') - resource = f'/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}' + networkId = urllib.parse.quote(str(networkId), safe="") + wirelessProfileId = urllib.parse.quote(str(wirelessProfileId), safe="") + resource = f"/networks/{networkId}/camera/wirelessProfiles/{wirelessProfileId}" return self._session.delete(metadata, resource) - - def getOrganizationCameraBoundariesAreasByDevice(self, organizationId: str, **kwargs): """ @@ -732,24 +782,26 @@ def getOrganizationCameraBoundariesAreasByDevice(self, organizationId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'boundaries', 'areas', 'byDevice'], - 'operation': 'getOrganizationCameraBoundariesAreasByDevice' + "tags": ["camera", "configure", "boundaries", "areas", "byDevice"], + "operation": "getOrganizationCameraBoundariesAreasByDevice", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/boundaries/areas/byDevice' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/boundaries/areas/byDevice" - query_params = ['serials', ] + query_params = [ + "serials", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['serials', ] + array_params = [ + "serials", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def getOrganizationCameraBoundariesLinesByDevice(self, organizationId: str, **kwargs): """ @@ -763,24 +815,26 @@ def getOrganizationCameraBoundariesLinesByDevice(self, organizationId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'boundaries', 'lines', 'byDevice'], - 'operation': 'getOrganizationCameraBoundariesLinesByDevice' + "tags": ["camera", "configure", "boundaries", "lines", "byDevice"], + "operation": "getOrganizationCameraBoundariesLinesByDevice", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/boundaries/lines/byDevice' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/boundaries/lines/byDevice" - query_params = ['serials', ] + query_params = [ + "serials", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['serials', ] + array_params = [ + "serials", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def getOrganizationCameraCustomAnalyticsArtifacts(self, organizationId: str): """ @@ -791,15 +845,13 @@ def getOrganizationCameraCustomAnalyticsArtifacts(self, organizationId: str): """ metadata = { - 'tags': ['camera', 'configure', 'customAnalytics', 'artifacts'], - 'operation': 'getOrganizationCameraCustomAnalyticsArtifacts' + "tags": ["camera", "configure", "customAnalytics", "artifacts"], + "operation": "getOrganizationCameraCustomAnalyticsArtifacts", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/customAnalytics/artifacts' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/customAnalytics/artifacts" return self._session.get(metadata, resource) - - def createOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, **kwargs): """ @@ -813,18 +865,18 @@ def createOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, * kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'customAnalytics', 'artifacts'], - 'operation': 'createOrganizationCameraCustomAnalyticsArtifact' + "tags": ["camera", "configure", "customAnalytics", "artifacts"], + "operation": "createOrganizationCameraCustomAnalyticsArtifact", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/customAnalytics/artifacts' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/customAnalytics/artifacts" - body_params = ['name', ] + body_params = [ + "name", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, artifactId: str): """ @@ -836,16 +888,14 @@ def getOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, arti """ metadata = { - 'tags': ['camera', 'configure', 'customAnalytics', 'artifacts'], - 'operation': 'getOrganizationCameraCustomAnalyticsArtifact' + "tags": ["camera", "configure", "customAnalytics", "artifacts"], + "operation": "getOrganizationCameraCustomAnalyticsArtifact", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - artifactId = urllib.parse.quote(str(artifactId), safe='') - resource = f'/organizations/{organizationId}/camera/customAnalytics/artifacts/{artifactId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + artifactId = urllib.parse.quote(str(artifactId), safe="") + resource = f"/organizations/{organizationId}/camera/customAnalytics/artifacts/{artifactId}" return self._session.get(metadata, resource) - - def deleteOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, artifactId: str): """ @@ -857,25 +907,24 @@ def deleteOrganizationCameraCustomAnalyticsArtifact(self, organizationId: str, a """ metadata = { - 'tags': ['camera', 'configure', 'customAnalytics', 'artifacts'], - 'operation': 'deleteOrganizationCameraCustomAnalyticsArtifact' + "tags": ["camera", "configure", "customAnalytics", "artifacts"], + "operation": "deleteOrganizationCameraCustomAnalyticsArtifact", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - artifactId = urllib.parse.quote(str(artifactId), safe='') - resource = f'/organizations/{organizationId}/camera/customAnalytics/artifacts/{artifactId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + artifactId = urllib.parse.quote(str(artifactId), safe="") + resource = f"/organizations/{organizationId}/camera/customAnalytics/artifacts/{artifactId}" return self._session.delete(metadata, resource) - - - def getOrganizationCameraDetectionsHistoryByBoundaryByInterval(self, organizationId: str, boundaryIds: list, ranges: list, total_pages=1, direction='next', **kwargs): + def getOrganizationCameraDetectionsHistoryByBoundaryByInterval( + self, organizationId: str, boundaryIds: list, total_pages=1, direction="next", **kwargs + ): """ **Returns analytics data for timespans** https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-detections-history-by-boundary-by-interval - organizationId (string): Organization ID - boundaryIds (array): A list of boundary ids. The returned cameras will be filtered to only include these ids. - - ranges (array): A list of time ranges with intervals - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages - direction (string): direction to paginate, either "next" (default) or "prev" page - duration (integer): The minimum time, in seconds, that the person or car remains in the area to be counted. Defaults to boundary configuration or 60. @@ -886,24 +935,30 @@ def getOrganizationCameraDetectionsHistoryByBoundaryByInterval(self, organizatio kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'detections', 'history', 'byBoundary', 'byInterval'], - 'operation': 'getOrganizationCameraDetectionsHistoryByBoundaryByInterval' + "tags": ["camera", "configure", "detections", "history", "byBoundary", "byInterval"], + "operation": "getOrganizationCameraDetectionsHistoryByBoundaryByInterval", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/detections/history/byBoundary/byInterval' - - query_params = ['boundaryIds', 'ranges', 'duration', 'perPage', 'boundaryTypes', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/detections/history/byBoundary/byInterval" + + query_params = [ + "boundaryIds", + "duration", + "perPage", + "boundaryTypes", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['boundaryIds', 'ranges', 'boundaryTypes', ] + array_params = [ + "boundaryIds", + "boundaryTypes", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - def getOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwargs): """ @@ -918,24 +973,28 @@ def getOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwargs) kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'onboarding', 'statuses'], - 'operation': 'getOrganizationCameraOnboardingStatuses' + "tags": ["camera", "configure", "onboarding", "statuses"], + "operation": "getOrganizationCameraOnboardingStatuses", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/onboarding/statuses' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/onboarding/statuses" - query_params = ['serials', 'networkIds', ] + query_params = [ + "serials", + "networkIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['serials', 'networkIds', ] + array_params = [ + "serials", + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def updateOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwargs): """ @@ -950,18 +1009,19 @@ def updateOrganizationCameraOnboardingStatuses(self, organizationId: str, **kwar kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'onboarding', 'statuses'], - 'operation': 'updateOrganizationCameraOnboardingStatuses' + "tags": ["camera", "configure", "onboarding", "statuses"], + "operation": "updateOrganizationCameraOnboardingStatuses", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/onboarding/statuses' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/onboarding/statuses" - body_params = ['serial', 'wirelessCredentialsSent', ] + body_params = [ + "serial", + "wirelessCredentialsSent", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getOrganizationCameraPermissions(self, organizationId: str): """ @@ -972,15 +1032,13 @@ def getOrganizationCameraPermissions(self, organizationId: str): """ metadata = { - 'tags': ['camera', 'configure', 'permissions'], - 'operation': 'getOrganizationCameraPermissions' + "tags": ["camera", "configure", "permissions"], + "operation": "getOrganizationCameraPermissions", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/permissions' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/permissions" return self._session.get(metadata, resource) - - def getOrganizationCameraPermission(self, organizationId: str, permissionScopeId: str): """ @@ -992,16 +1050,14 @@ def getOrganizationCameraPermission(self, organizationId: str, permissionScopeId """ metadata = { - 'tags': ['camera', 'configure', 'permissions'], - 'operation': 'getOrganizationCameraPermission' + "tags": ["camera", "configure", "permissions"], + "operation": "getOrganizationCameraPermission", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - permissionScopeId = urllib.parse.quote(str(permissionScopeId), safe='') - resource = f'/organizations/{organizationId}/camera/permissions/{permissionScopeId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + permissionScopeId = urllib.parse.quote(str(permissionScopeId), safe="") + resource = f"/organizations/{organizationId}/camera/permissions/{permissionScopeId}" return self._session.get(metadata, resource) - - def getOrganizationCameraRoles(self, organizationId: str): """ @@ -1012,15 +1068,13 @@ def getOrganizationCameraRoles(self, organizationId: str): """ metadata = { - 'tags': ['camera', 'configure', 'roles'], - 'operation': 'getOrganizationCameraRoles' + "tags": ["camera", "configure", "roles"], + "operation": "getOrganizationCameraRoles", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/roles' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/roles" return self._session.get(metadata, resource) - - def createOrganizationCameraRole(self, organizationId: str, name: str, **kwargs): """ @@ -1037,18 +1091,21 @@ def createOrganizationCameraRole(self, organizationId: str, name: str, **kwargs) kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'roles'], - 'operation': 'createOrganizationCameraRole' + "tags": ["camera", "configure", "roles"], + "operation": "createOrganizationCameraRole", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/camera/roles' - - body_params = ['name', 'appliedOnDevices', 'appliedOnNetworks', 'appliedOrgWide', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/camera/roles" + + body_params = [ + "name", + "appliedOnDevices", + "appliedOnNetworks", + "appliedOrgWide", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getOrganizationCameraRole(self, organizationId: str, roleId: str): """ @@ -1060,16 +1117,14 @@ def getOrganizationCameraRole(self, organizationId: str, roleId: str): """ metadata = { - 'tags': ['camera', 'configure', 'roles'], - 'operation': 'getOrganizationCameraRole' + "tags": ["camera", "configure", "roles"], + "operation": "getOrganizationCameraRole", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - roleId = urllib.parse.quote(str(roleId), safe='') - resource = f'/organizations/{organizationId}/camera/roles/{roleId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + roleId = urllib.parse.quote(str(roleId), safe="") + resource = f"/organizations/{organizationId}/camera/roles/{roleId}" return self._session.get(metadata, resource) - - def deleteOrganizationCameraRole(self, organizationId: str, roleId: str): """ @@ -1081,16 +1136,14 @@ def deleteOrganizationCameraRole(self, organizationId: str, roleId: str): """ metadata = { - 'tags': ['camera', 'configure', 'roles'], - 'operation': 'deleteOrganizationCameraRole' + "tags": ["camera", "configure", "roles"], + "operation": "deleteOrganizationCameraRole", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - roleId = urllib.parse.quote(str(roleId), safe='') - resource = f'/organizations/{organizationId}/camera/roles/{roleId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + roleId = urllib.parse.quote(str(roleId), safe="") + resource = f"/organizations/{organizationId}/camera/roles/{roleId}" return self._session.delete(metadata, resource) - - def updateOrganizationCameraRole(self, organizationId: str, roleId: str, **kwargs): """ @@ -1108,15 +1161,19 @@ def updateOrganizationCameraRole(self, organizationId: str, roleId: str, **kwarg kwargs.update(locals()) metadata = { - 'tags': ['camera', 'configure', 'roles'], - 'operation': 'updateOrganizationCameraRole' + "tags": ["camera", "configure", "roles"], + "operation": "updateOrganizationCameraRole", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - roleId = urllib.parse.quote(str(roleId), safe='') - resource = f'/organizations/{organizationId}/camera/roles/{roleId}' - - body_params = ['name', 'appliedOnDevices', 'appliedOnNetworks', 'appliedOrgWide', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + roleId = urllib.parse.quote(str(roleId), safe="") + resource = f"/organizations/{organizationId}/camera/roles/{roleId}" + + body_params = [ + "name", + "appliedOnDevices", + "appliedOnNetworks", + "appliedOrgWide", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - diff --git a/meraki/aio/api/campusGateway.py b/meraki/aio/api/campusGateway.py index 731b876..e0b3d28 100644 --- a/meraki/aio/api/campusGateway.py +++ b/meraki/aio/api/campusGateway.py @@ -5,10 +5,10 @@ class AsyncCampusGateway: def __init__(self, session): super().__init__() self._session = session - - - def createNetworkCampusGatewayCluster(self, networkId: str, name: str, uplinks: list, tunnels: list, nameservers: dict, portChannels: list, **kwargs): + def createNetworkCampusGatewayCluster( + self, networkId: str, name: str, uplinks: list, tunnels: list, nameservers: dict, portChannels: list, **kwargs + ): """ **Create a cluster and add campus gateways to it** https://developer.cisco.com/meraki/api-v1/#!create-network-campus-gateway-cluster @@ -26,18 +26,24 @@ def createNetworkCampusGatewayCluster(self, networkId: str, name: str, uplinks: kwargs.update(locals()) metadata = { - 'tags': ['campusGateway', 'configure', 'clusters'], - 'operation': 'createNetworkCampusGatewayCluster' + "tags": ["campusGateway", "configure", "clusters"], + "operation": "createNetworkCampusGatewayCluster", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/campusGateway/clusters' - - body_params = ['name', 'uplinks', 'tunnels', 'nameservers', 'portChannels', 'devices', 'notes', ] + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/campusGateway/clusters" + + body_params = [ + "name", + "uplinks", + "tunnels", + "nameservers", + "portChannels", + "devices", + "notes", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateNetworkCampusGatewayCluster(self, networkId: str, clusterId: str, **kwargs): """ @@ -58,21 +64,27 @@ def updateNetworkCampusGatewayCluster(self, networkId: str, clusterId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['campusGateway', 'configure', 'clusters'], - 'operation': 'updateNetworkCampusGatewayCluster' + "tags": ["campusGateway", "configure", "clusters"], + "operation": "updateNetworkCampusGatewayCluster", } - networkId = urllib.parse.quote(str(networkId), safe='') - clusterId = urllib.parse.quote(str(clusterId), safe='') - resource = f'/networks/{networkId}/campusGateway/clusters/{clusterId}' - - body_params = ['name', 'uplinks', 'tunnels', 'nameservers', 'portChannels', 'devices', 'notes', ] + networkId = urllib.parse.quote(str(networkId), safe="") + clusterId = urllib.parse.quote(str(clusterId), safe="") + resource = f"/networks/{networkId}/campusGateway/clusters/{clusterId}" + + body_params = [ + "name", + "uplinks", + "tunnels", + "nameservers", + "portChannels", + "devices", + "notes", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - - def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **Get the details of campus gateway clusters** https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-clusters @@ -89,26 +101,33 @@ def getOrganizationCampusGatewayClusters(self, organizationId: str, total_pages= kwargs.update(locals()) metadata = { - 'tags': ['campusGateway', 'configure', 'clusters'], - 'operation': 'getOrganizationCampusGatewayClusters' + "tags": ["campusGateway", "configure", "clusters"], + "operation": "getOrganizationCampusGatewayClusters", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/campusGateway/clusters' - - query_params = ['networkIds', 'perPage', 'startingAfter', 'endingBefore', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/campusGateway/clusters" + + 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', ] + array_params = [ + "networkIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - - - def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): """ **Uplink overrides configured locally on Campus Gateway devices in an organization.** https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-devices-uplinks-local-overrides-by-device @@ -125,20 +144,26 @@ def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice(self, organ kwargs.update(locals()) metadata = { - 'tags': ['campusGateway', 'configure', 'devices', 'uplinks', 'localOverrides', 'byDevice'], - 'operation': 'getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice' + "tags": ["campusGateway", "configure", "devices", "uplinks", "localOverrides", "byDevice"], + "operation": "getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/campusGateway/devices/uplinks/localOverrides/byDevice' - - query_params = ['serials', 'perPage', 'startingAfter', 'endingBefore', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/campusGateway/devices/uplinks/localOverrides/byDevice" + + query_params = [ + "serials", + "perPage", + "startingAfter", + "endingBefore", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['serials', ] + array_params = [ + "serials", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - diff --git a/meraki/aio/api/cellularGateway.py b/meraki/aio/api/cellularGateway.py index 22188a5..b426dee 100644 --- a/meraki/aio/api/cellularGateway.py +++ b/meraki/aio/api/cellularGateway.py @@ -5,8 +5,6 @@ class AsyncCellularGateway: def __init__(self, session): super().__init__() self._session = session - - def getDeviceCellularGatewayLan(self, serial: str): """ @@ -17,15 +15,13 @@ def getDeviceCellularGatewayLan(self, serial: str): """ metadata = { - 'tags': ['cellularGateway', 'configure', 'lan'], - 'operation': 'getDeviceCellularGatewayLan' + "tags": ["cellularGateway", "configure", "lan"], + "operation": "getDeviceCellularGatewayLan", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellularGateway/lan' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellularGateway/lan" return self._session.get(metadata, resource) - - def updateDeviceCellularGatewayLan(self, serial: str, **kwargs): """ @@ -40,18 +36,19 @@ def updateDeviceCellularGatewayLan(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'lan'], - 'operation': 'updateDeviceCellularGatewayLan' + "tags": ["cellularGateway", "configure", "lan"], + "operation": "updateDeviceCellularGatewayLan", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellularGateway/lan' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellularGateway/lan" - body_params = ['reservedIpRanges', 'fixedIpAssignments', ] + body_params = [ + "reservedIpRanges", + "fixedIpAssignments", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceCellularGatewayPortForwardingRules(self, serial: str): """ @@ -62,15 +59,13 @@ def getDeviceCellularGatewayPortForwardingRules(self, serial: str): """ metadata = { - 'tags': ['cellularGateway', 'configure', 'portForwardingRules'], - 'operation': 'getDeviceCellularGatewayPortForwardingRules' + "tags": ["cellularGateway", "configure", "portForwardingRules"], + "operation": "getDeviceCellularGatewayPortForwardingRules", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellularGateway/portForwardingRules' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellularGateway/portForwardingRules" return self._session.get(metadata, resource) - - def updateDeviceCellularGatewayPortForwardingRules(self, serial: str, **kwargs): """ @@ -84,18 +79,18 @@ def updateDeviceCellularGatewayPortForwardingRules(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'portForwardingRules'], - 'operation': 'updateDeviceCellularGatewayPortForwardingRules' + "tags": ["cellularGateway", "configure", "portForwardingRules"], + "operation": "updateDeviceCellularGatewayPortForwardingRules", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellularGateway/portForwardingRules' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellularGateway/portForwardingRules" - body_params = ['rules', ] + body_params = [ + "rules", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkCellularGatewayConnectivityMonitoringDestinations(self, networkId: str): """ @@ -106,15 +101,13 @@ def getNetworkCellularGatewayConnectivityMonitoringDestinations(self, networkId: """ metadata = { - 'tags': ['cellularGateway', 'configure', 'connectivityMonitoringDestinations'], - 'operation': 'getNetworkCellularGatewayConnectivityMonitoringDestinations' + "tags": ["cellularGateway", "configure", "connectivityMonitoringDestinations"], + "operation": "getNetworkCellularGatewayConnectivityMonitoringDestinations", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/connectivityMonitoringDestinations' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/connectivityMonitoringDestinations" return self._session.get(metadata, resource) - - def updateNetworkCellularGatewayConnectivityMonitoringDestinations(self, networkId: str, **kwargs): """ @@ -128,18 +121,18 @@ def updateNetworkCellularGatewayConnectivityMonitoringDestinations(self, network kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'connectivityMonitoringDestinations'], - 'operation': 'updateNetworkCellularGatewayConnectivityMonitoringDestinations' + "tags": ["cellularGateway", "configure", "connectivityMonitoringDestinations"], + "operation": "updateNetworkCellularGatewayConnectivityMonitoringDestinations", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/connectivityMonitoringDestinations' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/connectivityMonitoringDestinations" - body_params = ['destinations', ] + body_params = [ + "destinations", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkCellularGatewayDhcp(self, networkId: str): """ @@ -150,15 +143,13 @@ def getNetworkCellularGatewayDhcp(self, networkId: str): """ metadata = { - 'tags': ['cellularGateway', 'configure', 'dhcp'], - 'operation': 'getNetworkCellularGatewayDhcp' + "tags": ["cellularGateway", "configure", "dhcp"], + "operation": "getNetworkCellularGatewayDhcp", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/dhcp' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/dhcp" return self._session.get(metadata, resource) - - def updateNetworkCellularGatewayDhcp(self, networkId: str, **kwargs): """ @@ -174,18 +165,20 @@ def updateNetworkCellularGatewayDhcp(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'dhcp'], - 'operation': 'updateNetworkCellularGatewayDhcp' + "tags": ["cellularGateway", "configure", "dhcp"], + "operation": "updateNetworkCellularGatewayDhcp", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/dhcp' - - body_params = ['dhcpLeaseTime', 'dnsNameservers', 'dnsCustomNameservers', ] + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/dhcp" + + body_params = [ + "dhcpLeaseTime", + "dnsNameservers", + "dnsCustomNameservers", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkCellularGatewaySubnetPool(self, networkId: str): """ @@ -196,15 +189,13 @@ def getNetworkCellularGatewaySubnetPool(self, networkId: str): """ metadata = { - 'tags': ['cellularGateway', 'configure', 'subnetPool'], - 'operation': 'getNetworkCellularGatewaySubnetPool' + "tags": ["cellularGateway", "configure", "subnetPool"], + "operation": "getNetworkCellularGatewaySubnetPool", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/subnetPool' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/subnetPool" return self._session.get(metadata, resource) - - def updateNetworkCellularGatewaySubnetPool(self, networkId: str, **kwargs): """ @@ -219,18 +210,19 @@ def updateNetworkCellularGatewaySubnetPool(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'subnetPool'], - 'operation': 'updateNetworkCellularGatewaySubnetPool' + "tags": ["cellularGateway", "configure", "subnetPool"], + "operation": "updateNetworkCellularGatewaySubnetPool", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/subnetPool' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/subnetPool" - body_params = ['mask', 'cidr', ] + body_params = [ + "mask", + "cidr", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getNetworkCellularGatewayUplink(self, networkId: str): """ @@ -241,15 +233,13 @@ def getNetworkCellularGatewayUplink(self, networkId: str): """ metadata = { - 'tags': ['cellularGateway', 'configure', 'uplink'], - 'operation': 'getNetworkCellularGatewayUplink' + "tags": ["cellularGateway", "configure", "uplink"], + "operation": "getNetworkCellularGatewayUplink", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/uplink' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/uplink" return self._session.get(metadata, resource) - - def updateNetworkCellularGatewayUplink(self, networkId: str, **kwargs): """ @@ -263,18 +253,18 @@ def updateNetworkCellularGatewayUplink(self, networkId: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'uplink'], - 'operation': 'updateNetworkCellularGatewayUplink' + "tags": ["cellularGateway", "configure", "uplink"], + "operation": "updateNetworkCellularGatewayUplink", } - networkId = urllib.parse.quote(str(networkId), safe='') - resource = f'/networks/{networkId}/cellularGateway/uplink' + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/cellularGateway/uplink" - body_params = ['bandwidthLimits', ] + body_params = [ + "bandwidthLimits", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getOrganizationCellularGatewayEsimsInventory(self, organizationId: str, **kwargs): """ @@ -288,24 +278,26 @@ def getOrganizationCellularGatewayEsimsInventory(self, organizationId: str, **kw kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'inventory'], - 'operation': 'getOrganizationCellularGatewayEsimsInventory' + "tags": ["cellularGateway", "configure", "esims", "inventory"], + "operation": "getOrganizationCellularGatewayEsimsInventory", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/inventory' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/inventory" - query_params = ['eids', ] + query_params = [ + "eids", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['eids', ] + array_params = [ + "eids", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def updateOrganizationCellularGatewayEsimsInventory(self, organizationId: str, id: str, **kwargs): """ @@ -320,19 +312,19 @@ def updateOrganizationCellularGatewayEsimsInventory(self, organizationId: str, i kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'inventory'], - 'operation': 'updateOrganizationCellularGatewayEsimsInventory' + "tags": ["cellularGateway", "configure", "esims", "inventory"], + "operation": "updateOrganizationCellularGatewayEsimsInventory", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - id = urllib.parse.quote(str(id), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/inventory/{id}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + id = urllib.parse.quote(str(id), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/inventory/{id}" - body_params = ['status', ] + body_params = [ + "status", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getOrganizationCellularGatewayEsimsServiceProviders(self, organizationId: str): """ @@ -343,15 +335,13 @@ def getOrganizationCellularGatewayEsimsServiceProviders(self, organizationId: st """ metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders'], - 'operation': 'getOrganizationCellularGatewayEsimsServiceProviders' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders"], + "operation": "getOrganizationCellularGatewayEsimsServiceProviders", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders" return self._session.get(metadata, resource) - - def getOrganizationCellularGatewayEsimsServiceProvidersAccounts(self, organizationId: str, **kwargs): """ @@ -365,26 +355,30 @@ def getOrganizationCellularGatewayEsimsServiceProvidersAccounts(self, organizati kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts'], - 'operation': 'getOrganizationCellularGatewayEsimsServiceProvidersAccounts' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts"], + "operation": "getOrganizationCellularGatewayEsimsServiceProvidersAccounts", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts" - query_params = ['accountIds', ] + query_params = [ + "accountIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['accountIds', ] + array_params = [ + "accountIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - - def createOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organizationId: str, accountId: str, apiKey: str, serviceProvider: dict, title: str, username: str): + def createOrganizationCellularGatewayEsimsServiceProvidersAccount( + self, organizationId: str, accountId: str, apiKey: str, serviceProvider: dict, title: str, username: str + ): """ **Add a service provider account.** https://developer.cisco.com/meraki/api-v1/#!create-organization-cellular-gateway-esims-service-providers-account @@ -400,20 +394,26 @@ def createOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organiza kwargs = locals() metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts'], - 'operation': 'createOrganizationCellularGatewayEsimsServiceProvidersAccount' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts"], + "operation": "createOrganizationCellularGatewayEsimsServiceProvidersAccount", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts' - - body_params = ['accountId', 'apiKey', 'serviceProvider', 'title', 'username', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts" + + body_params = [ + "accountId", + "apiKey", + "serviceProvider", + "title", + "username", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - - def getOrganizationCellularGatewayEsimsServiceProvidersAccountsCommunicationPlans(self, organizationId: str, accountIds: list): + def getOrganizationCellularGatewayEsimsServiceProvidersAccountsCommunicationPlans( + self, organizationId: str, accountIds: list + ): """ **The communication plans available for a given provider.** https://developer.cisco.com/meraki/api-v1/#!get-organization-cellular-gateway-esims-service-providers-accounts-communication-plans @@ -425,24 +425,26 @@ def getOrganizationCellularGatewayEsimsServiceProvidersAccountsCommunicationPlan kwargs = locals() metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts', 'communicationPlans'], - 'operation': 'getOrganizationCellularGatewayEsimsServiceProvidersAccountsCommunicationPlans' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts", "communicationPlans"], + "operation": "getOrganizationCellularGatewayEsimsServiceProvidersAccountsCommunicationPlans", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/communicationPlans' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/communicationPlans" - query_params = ['accountIds', ] + query_params = [ + "accountIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['accountIds', ] + array_params = [ + "accountIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def getOrganizationCellularGatewayEsimsServiceProvidersAccountsRatePlans(self, organizationId: str, accountIds: list): """ @@ -456,24 +458,26 @@ def getOrganizationCellularGatewayEsimsServiceProvidersAccountsRatePlans(self, o kwargs = locals() metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts', 'ratePlans'], - 'operation': 'getOrganizationCellularGatewayEsimsServiceProvidersAccountsRatePlans' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts", "ratePlans"], + "operation": "getOrganizationCellularGatewayEsimsServiceProvidersAccountsRatePlans", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/ratePlans' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/ratePlans" - query_params = ['accountIds', ] + query_params = [ + "accountIds", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['accountIds', ] + array_params = [ + "accountIds", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - def updateOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organizationId: str, accountId: str, **kwargs): """ @@ -489,19 +493,20 @@ def updateOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organiza kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts'], - 'operation': 'updateOrganizationCellularGatewayEsimsServiceProvidersAccount' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts"], + "operation": "updateOrganizationCellularGatewayEsimsServiceProvidersAccount", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - accountId = urllib.parse.quote(str(accountId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/{accountId}' - - body_params = ['title', 'apiKey', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + accountId = urllib.parse.quote(str(accountId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/{accountId}" + + body_params = [ + "title", + "apiKey", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organizationId: str, accountId: str): """ @@ -513,16 +518,14 @@ def deleteOrganizationCellularGatewayEsimsServiceProvidersAccount(self, organiza """ metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'serviceProviders', 'accounts'], - 'operation': 'deleteOrganizationCellularGatewayEsimsServiceProvidersAccount' + "tags": ["cellularGateway", "configure", "esims", "serviceProviders", "accounts"], + "operation": "deleteOrganizationCellularGatewayEsimsServiceProvidersAccount", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - accountId = urllib.parse.quote(str(accountId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/{accountId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + accountId = urllib.parse.quote(str(accountId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/serviceProviders/accounts/{accountId}" return self._session.delete(metadata, resource) - - def createOrganizationCellularGatewayEsimsSwap(self, organizationId: str, swaps: list): """ @@ -536,18 +539,18 @@ def createOrganizationCellularGatewayEsimsSwap(self, organizationId: str, swaps: kwargs = locals() metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'swap'], - 'operation': 'createOrganizationCellularGatewayEsimsSwap' + "tags": ["cellularGateway", "configure", "esims", "swap"], + "operation": "createOrganizationCellularGatewayEsimsSwap", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/swap' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/swap" - body_params = ['swaps', ] + body_params = [ + "swaps", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def updateOrganizationCellularGatewayEsimsSwap(self, id: str, organizationId: str): """ @@ -559,18 +562,16 @@ def updateOrganizationCellularGatewayEsimsSwap(self, id: str, organizationId: st """ metadata = { - 'tags': ['cellularGateway', 'configure', 'esims', 'swap'], - 'operation': 'updateOrganizationCellularGatewayEsimsSwap' + "tags": ["cellularGateway", "configure", "esims", "swap"], + "operation": "updateOrganizationCellularGatewayEsimsSwap", } - id = urllib.parse.quote(str(id), safe='') - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/esims/swap/{id}' + id = urllib.parse.quote(str(id), safe="") + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/esims/swap/{id}" return self._session.put(metadata, resource) - - - def getOrganizationCellularGatewayUplinkStatuses(self, organizationId: str, total_pages=1, direction='next', **kwargs): + def getOrganizationCellularGatewayUplinkStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **List the uplink status of every Meraki MG cellular gateway in the organization** https://developer.cisco.com/meraki/api-v1/#!get-organization-cellular-gateway-uplink-statuses @@ -589,20 +590,30 @@ def getOrganizationCellularGatewayUplinkStatuses(self, organizationId: str, tota kwargs.update(locals()) metadata = { - 'tags': ['cellularGateway', 'monitor', 'uplink', 'statuses'], - 'operation': 'getOrganizationCellularGatewayUplinkStatuses' + "tags": ["cellularGateway", "monitor", "uplink", "statuses"], + "operation": "getOrganizationCellularGatewayUplinkStatuses", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/cellularGateway/uplink/statuses' - - query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', 'serials', 'iccids', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/cellularGateway/uplink/statuses" + + query_params = [ + "perPage", + "startingAfter", + "endingBefore", + "networkIds", + "serials", + "iccids", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['networkIds', 'serials', 'iccids', ] + array_params = [ + "networkIds", + "serials", + "iccids", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get_pages(metadata, resource, params, total_pages, direction) - diff --git a/meraki/aio/api/devices.py b/meraki/aio/api/devices.py index 7bb85fe..3a31aef 100644 --- a/meraki/aio/api/devices.py +++ b/meraki/aio/api/devices.py @@ -5,8 +5,6 @@ class AsyncDevices: def __init__(self, session): super().__init__() self._session = session - - def getDevice(self, serial: str): """ @@ -17,15 +15,13 @@ def getDevice(self, serial: str): """ metadata = { - 'tags': ['devices', 'configure'], - 'operation': 'getDevice' + "tags": ["devices", "configure"], + "operation": "getDevice", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}" return self._session.get(metadata, resource) - - def updateDevice(self, serial: str, **kwargs): """ @@ -47,18 +43,26 @@ def updateDevice(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'configure'], - 'operation': 'updateDevice' + "tags": ["devices", "configure"], + "operation": "updateDevice", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}' - - body_params = ['name', 'tags', 'lat', 'lng', 'address', 'notes', 'moveMapMarker', 'switchProfileId', 'floorPlanId', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}" + + body_params = [ + "name", + "tags", + "lat", + "lng", + "address", + "notes", + "moveMapMarker", + "switchProfileId", + "floorPlanId", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def blinkDeviceLeds(self, serial: str, **kwargs): """ @@ -74,18 +78,20 @@ def blinkDeviceLeds(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools'], - 'operation': 'blinkDeviceLeds' + "tags": ["devices", "liveTools"], + "operation": "blinkDeviceLeds", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/blinkLeds' - - body_params = ['duration', 'period', 'duty', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/blinkLeds" + + body_params = [ + "duration", + "period", + "duty", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceCellularSims(self, serial: str): """ @@ -96,15 +102,13 @@ def getDeviceCellularSims(self, serial: str): """ metadata = { - 'tags': ['devices', 'configure', 'cellular', 'sims'], - 'operation': 'getDeviceCellularSims' + "tags": ["devices", "configure", "cellular", "sims"], + "operation": "getDeviceCellularSims", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellular/sims' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellular/sims" return self._session.get(metadata, resource) - - def updateDeviceCellularSims(self, serial: str, **kwargs): """ @@ -120,18 +124,20 @@ def updateDeviceCellularSims(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'configure', 'cellular', 'sims'], - 'operation': 'updateDeviceCellularSims' + "tags": ["devices", "configure", "cellular", "sims"], + "operation": "updateDeviceCellularSims", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/cellular/sims' - - body_params = ['sims', 'simOrdering', 'simFailover', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/cellular/sims" + + body_params = [ + "sims", + "simOrdering", + "simFailover", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def getDeviceClients(self, serial: str, **kwargs): """ @@ -146,18 +152,19 @@ def getDeviceClients(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'monitor', 'clients'], - 'operation': 'getDeviceClients' + "tags": ["devices", "monitor", "clients"], + "operation": "getDeviceClients", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/clients' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/clients" - query_params = ['t0', 'timespan', ] + query_params = [ + "t0", + "timespan", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def createDeviceLiveToolsArpTable(self, serial: str, **kwargs): """ @@ -171,18 +178,18 @@ def createDeviceLiveToolsArpTable(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'arpTable'], - 'operation': 'createDeviceLiveToolsArpTable' + "tags": ["devices", "liveTools", "arpTable"], + "operation": "createDeviceLiveToolsArpTable", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/arpTable' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/arpTable" - body_params = ['callback', ] + body_params = [ + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsArpTable(self, serial: str, arpTableId: str): """ @@ -194,16 +201,14 @@ def getDeviceLiveToolsArpTable(self, serial: str, arpTableId: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'arpTable'], - 'operation': 'getDeviceLiveToolsArpTable' + "tags": ["devices", "liveTools", "arpTable"], + "operation": "getDeviceLiveToolsArpTable", } - serial = urllib.parse.quote(str(serial), safe='') - arpTableId = urllib.parse.quote(str(arpTableId), safe='') - resource = f'/devices/{serial}/liveTools/arpTable/{arpTableId}' + serial = urllib.parse.quote(str(serial), safe="") + arpTableId = urllib.parse.quote(str(arpTableId), safe="") + resource = f"/devices/{serial}/liveTools/arpTable/{arpTableId}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsCableTest(self, serial: str, ports: list, **kwargs): """ @@ -218,18 +223,19 @@ def createDeviceLiveToolsCableTest(self, serial: str, ports: list, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'cableTest'], - 'operation': 'createDeviceLiveToolsCableTest' + "tags": ["devices", "liveTools", "cableTest"], + "operation": "createDeviceLiveToolsCableTest", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/cableTest' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/cableTest" - body_params = ['ports', 'callback', ] + body_params = [ + "ports", + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsCableTest(self, serial: str, id: str): """ @@ -241,16 +247,14 @@ def getDeviceLiveToolsCableTest(self, serial: str, id: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'cableTest'], - 'operation': 'getDeviceLiveToolsCableTest' + "tags": ["devices", "liveTools", "cableTest"], + "operation": "getDeviceLiveToolsCableTest", } - serial = urllib.parse.quote(str(serial), safe='') - id = urllib.parse.quote(str(id), safe='') - resource = f'/devices/{serial}/liveTools/cableTest/{id}' + serial = urllib.parse.quote(str(serial), safe="") + id = urllib.parse.quote(str(id), safe="") + resource = f"/devices/{serial}/liveTools/cableTest/{id}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs): """ @@ -265,18 +269,19 @@ def createDeviceLiveToolsLedsBlink(self, serial: str, duration: int, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'leds', 'blink'], - 'operation': 'createDeviceLiveToolsLedsBlink' + "tags": ["devices", "liveTools", "leds", "blink"], + "operation": "createDeviceLiveToolsLedsBlink", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/leds/blink' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/leds/blink" - body_params = ['duration', 'callback', ] + body_params = [ + "duration", + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsLedsBlink(self, serial: str, ledsBlinkId: str): """ @@ -288,16 +293,14 @@ def getDeviceLiveToolsLedsBlink(self, serial: str, ledsBlinkId: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'leds', 'blink'], - 'operation': 'getDeviceLiveToolsLedsBlink' + "tags": ["devices", "liveTools", "leds", "blink"], + "operation": "getDeviceLiveToolsLedsBlink", } - serial = urllib.parse.quote(str(serial), safe='') - ledsBlinkId = urllib.parse.quote(str(ledsBlinkId), safe='') - resource = f'/devices/{serial}/liveTools/leds/blink/{ledsBlinkId}' + serial = urllib.parse.quote(str(serial), safe="") + ledsBlinkId = urllib.parse.quote(str(ledsBlinkId), safe="") + resource = f"/devices/{serial}/liveTools/leds/blink/{ledsBlinkId}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsMacTable(self, serial: str, **kwargs): """ @@ -311,18 +314,18 @@ def createDeviceLiveToolsMacTable(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'macTable'], - 'operation': 'createDeviceLiveToolsMacTable' + "tags": ["devices", "liveTools", "macTable"], + "operation": "createDeviceLiveToolsMacTable", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/macTable' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/macTable" - body_params = ['callback', ] + body_params = [ + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsMacTable(self, serial: str, macTableId: str): """ @@ -334,16 +337,14 @@ def getDeviceLiveToolsMacTable(self, serial: str, macTableId: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'macTable'], - 'operation': 'getDeviceLiveToolsMacTable' + "tags": ["devices", "liveTools", "macTable"], + "operation": "getDeviceLiveToolsMacTable", } - serial = urllib.parse.quote(str(serial), safe='') - macTableId = urllib.parse.quote(str(macTableId), safe='') - resource = f'/devices/{serial}/liveTools/macTable/{macTableId}' + serial = urllib.parse.quote(str(serial), safe="") + macTableId = urllib.parse.quote(str(macTableId), safe="") + resource = f"/devices/{serial}/liveTools/macTable/{macTableId}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsMulticastRouting(self, serial: str, **kwargs): """ @@ -357,18 +358,18 @@ def createDeviceLiveToolsMulticastRouting(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'multicastRouting'], - 'operation': 'createDeviceLiveToolsMulticastRouting' + "tags": ["devices", "liveTools", "multicastRouting"], + "operation": "createDeviceLiveToolsMulticastRouting", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/multicastRouting' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/multicastRouting" - body_params = ['callback', ] + body_params = [ + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsMulticastRouting(self, serial: str, multicastRoutingId: str): """ @@ -380,16 +381,14 @@ def getDeviceLiveToolsMulticastRouting(self, serial: str, multicastRoutingId: st """ metadata = { - 'tags': ['devices', 'liveTools', 'multicastRouting'], - 'operation': 'getDeviceLiveToolsMulticastRouting' + "tags": ["devices", "liveTools", "multicastRouting"], + "operation": "getDeviceLiveToolsMulticastRouting", } - serial = urllib.parse.quote(str(serial), safe='') - multicastRoutingId = urllib.parse.quote(str(multicastRoutingId), safe='') - resource = f'/devices/{serial}/liveTools/multicastRouting/{multicastRoutingId}' + serial = urllib.parse.quote(str(serial), safe="") + multicastRoutingId = urllib.parse.quote(str(multicastRoutingId), safe="") + resource = f"/devices/{serial}/liveTools/multicastRouting/{multicastRoutingId}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsPing(self, serial: str, target: str, **kwargs): """ @@ -405,18 +404,20 @@ def createDeviceLiveToolsPing(self, serial: str, target: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'ping'], - 'operation': 'createDeviceLiveToolsPing' + "tags": ["devices", "liveTools", "ping"], + "operation": "createDeviceLiveToolsPing", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/ping' - - body_params = ['target', 'count', 'callback', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/ping" + + body_params = [ + "target", + "count", + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsPing(self, serial: str, id: str): """ @@ -428,16 +429,14 @@ def getDeviceLiveToolsPing(self, serial: str, id: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'ping'], - 'operation': 'getDeviceLiveToolsPing' + "tags": ["devices", "liveTools", "ping"], + "operation": "getDeviceLiveToolsPing", } - serial = urllib.parse.quote(str(serial), safe='') - id = urllib.parse.quote(str(id), safe='') - resource = f'/devices/{serial}/liveTools/ping/{id}' + serial = urllib.parse.quote(str(serial), safe="") + id = urllib.parse.quote(str(id), safe="") + resource = f"/devices/{serial}/liveTools/ping/{id}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsPingDevice(self, serial: str, **kwargs): """ @@ -452,18 +451,19 @@ def createDeviceLiveToolsPingDevice(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'pingDevice'], - 'operation': 'createDeviceLiveToolsPingDevice' + "tags": ["devices", "liveTools", "pingDevice"], + "operation": "createDeviceLiveToolsPingDevice", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/pingDevice' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/pingDevice" - body_params = ['count', 'callback', ] + body_params = [ + "count", + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsPingDevice(self, serial: str, id: str): """ @@ -475,16 +475,60 @@ def getDeviceLiveToolsPingDevice(self, serial: str, id: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'pingDevice'], - 'operation': 'getDeviceLiveToolsPingDevice' + "tags": ["devices", "liveTools", "pingDevice"], + "operation": "getDeviceLiveToolsPingDevice", } - serial = urllib.parse.quote(str(serial), safe='') - id = urllib.parse.quote(str(id), safe='') - resource = f'/devices/{serial}/liveTools/pingDevice/{id}' + serial = urllib.parse.quote(str(serial), safe="") + id = urllib.parse.quote(str(id), safe="") + resource = f"/devices/{serial}/liveTools/pingDevice/{id}" 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** + https://developer.cisco.com/meraki/api-v1/#!create-device-live-tools-ports-cycle + + - serial (string): Serial + - ports (array): A list of ports to cycle. For Catalyst switches, IOS interface names are also supported, such as "GigabitEthernet1/0/8", "Gi1/0/8", or even "1/0/8". + - callback (object): Details for the callback. Please include either an httpServerId OR url and sharedSecret + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["devices", "liveTools", "ports", "cycle"], + "operation": "createDeviceLiveToolsPortsCycle", + } + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/ports/cycle" + + body_params = [ + "ports", + "callback", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + def getDeviceLiveToolsPortsCycle(self, serial: str, id: str): + """ + **Return a cycle port live tool job.** + https://developer.cisco.com/meraki/api-v1/#!get-device-live-tools-ports-cycle + + - serial (string): Serial + - id (string): ID + """ + + metadata = { + "tags": ["devices", "liveTools", "ports", "cycle"], + "operation": "getDeviceLiveToolsPortsCycle", + } + serial = urllib.parse.quote(str(serial), safe="") + id = urllib.parse.quote(str(id), safe="") + resource = f"/devices/{serial}/liveTools/ports/cycle/{id}" + + return self._session.get(metadata, resource) def createDeviceLiveToolsThroughputTest(self, serial: str, **kwargs): """ @@ -498,18 +542,18 @@ def createDeviceLiveToolsThroughputTest(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'throughputTest'], - 'operation': 'createDeviceLiveToolsThroughputTest' + "tags": ["devices", "liveTools", "throughputTest"], + "operation": "createDeviceLiveToolsThroughputTest", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/throughputTest' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/throughputTest" - body_params = ['callback', ] + body_params = [ + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsThroughputTest(self, serial: str, throughputTestId: str): """ @@ -521,16 +565,14 @@ def getDeviceLiveToolsThroughputTest(self, serial: str, throughputTestId: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'throughputTest'], - 'operation': 'getDeviceLiveToolsThroughputTest' + "tags": ["devices", "liveTools", "throughputTest"], + "operation": "getDeviceLiveToolsThroughputTest", } - serial = urllib.parse.quote(str(serial), safe='') - throughputTestId = urllib.parse.quote(str(throughputTestId), safe='') - resource = f'/devices/{serial}/liveTools/throughputTest/{throughputTestId}' + serial = urllib.parse.quote(str(serial), safe="") + throughputTestId = urllib.parse.quote(str(throughputTestId), safe="") + resource = f"/devices/{serial}/liveTools/throughputTest/{throughputTestId}" return self._session.get(metadata, resource) - - def createDeviceLiveToolsWakeOnLan(self, serial: str, vlanId: int, mac: str, **kwargs): """ @@ -546,18 +588,20 @@ def createDeviceLiveToolsWakeOnLan(self, serial: str, vlanId: int, mac: str, **k kwargs.update(locals()) metadata = { - 'tags': ['devices', 'liveTools', 'wakeOnLan'], - 'operation': 'createDeviceLiveToolsWakeOnLan' + "tags": ["devices", "liveTools", "wakeOnLan"], + "operation": "createDeviceLiveToolsWakeOnLan", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/liveTools/wakeOnLan' - - body_params = ['vlanId', 'mac', 'callback', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/liveTools/wakeOnLan" + + body_params = [ + "vlanId", + "mac", + "callback", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getDeviceLiveToolsWakeOnLan(self, serial: str, wakeOnLanId: str): """ @@ -569,16 +613,14 @@ def getDeviceLiveToolsWakeOnLan(self, serial: str, wakeOnLanId: str): """ metadata = { - 'tags': ['devices', 'liveTools', 'wakeOnLan'], - 'operation': 'getDeviceLiveToolsWakeOnLan' + "tags": ["devices", "liveTools", "wakeOnLan"], + "operation": "getDeviceLiveToolsWakeOnLan", } - serial = urllib.parse.quote(str(serial), safe='') - wakeOnLanId = urllib.parse.quote(str(wakeOnLanId), safe='') - resource = f'/devices/{serial}/liveTools/wakeOnLan/{wakeOnLanId}' + serial = urllib.parse.quote(str(serial), safe="") + wakeOnLanId = urllib.parse.quote(str(wakeOnLanId), safe="") + resource = f"/devices/{serial}/liveTools/wakeOnLan/{wakeOnLanId}" return self._session.get(metadata, resource) - - def getDeviceLldpCdp(self, serial: str): """ @@ -589,15 +631,13 @@ def getDeviceLldpCdp(self, serial: str): """ metadata = { - 'tags': ['devices', 'monitor', 'lldpCdp'], - 'operation': 'getDeviceLldpCdp' + "tags": ["devices", "monitor", "lldpCdp"], + "operation": "getDeviceLldpCdp", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/lldpCdp' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/lldpCdp" return self._session.get(metadata, resource) - - def getDeviceLossAndLatencyHistory(self, serial: str, ip: str, **kwargs): """ @@ -610,28 +650,35 @@ def getDeviceLossAndLatencyHistory(self, serial: str, ip: str, **kwargs): - 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. - resolution (integer): The time resolution in seconds for returned data. The valid resolutions are: 60, 600, 3600, 86400. The default is 60. - - uplink (string): The WAN uplink used to obtain the requested stats. Valid uplinks are wan1, wan2, wan3, cellular. The default is wan1. + - uplink (string): The WAN uplink used to obtain the requested stats. Valid uplinks are wan1, wan2, wan3, cellular, wan4. The default is wan1. """ kwargs.update(locals()) - if 'uplink' in kwargs: - options = ['cellular', 'wan1', 'wan2', 'wan3'] - assert kwargs['uplink'] in options, f'''"uplink" cannot be "{kwargs['uplink']}", & must be set to one of: {options}''' + if "uplink" in kwargs: + options = ["cellular", "wan1", "wan2", "wan3", "wan4"] + assert kwargs["uplink"] in options, ( + f'''"uplink" cannot be "{kwargs["uplink"]}", & must be set to one of: {options}''' + ) metadata = { - 'tags': ['devices', 'monitor', 'uplinks', 'lossAndLatencyHistory'], - 'operation': 'getDeviceLossAndLatencyHistory' + "tags": ["devices", "monitor", "uplinks", "lossAndLatencyHistory"], + "operation": "getDeviceLossAndLatencyHistory", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/lossAndLatencyHistory' - - query_params = ['t0', 't1', 'timespan', 'resolution', 'uplink', 'ip', ] + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/lossAndLatencyHistory" + + query_params = [ + "t0", + "t1", + "timespan", + "resolution", + "uplink", + "ip", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getDeviceManagementInterface(self, serial: str): """ @@ -642,15 +689,13 @@ def getDeviceManagementInterface(self, serial: str): """ metadata = { - 'tags': ['devices', 'configure', 'managementInterface'], - 'operation': 'getDeviceManagementInterface' + "tags": ["devices", "configure", "managementInterface"], + "operation": "getDeviceManagementInterface", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/managementInterface' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/managementInterface" return self._session.get(metadata, resource) - - def updateDeviceManagementInterface(self, serial: str, **kwargs): """ @@ -665,18 +710,19 @@ def updateDeviceManagementInterface(self, serial: str, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['devices', 'configure', 'managementInterface'], - 'operation': 'updateDeviceManagementInterface' + "tags": ["devices", "configure", "managementInterface"], + "operation": "updateDeviceManagementInterface", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/managementInterface' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/managementInterface" - body_params = ['wan1', 'wan2', ] + body_params = [ + "wan1", + "wan2", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def rebootDevice(self, serial: str): """ @@ -687,11 +733,10 @@ def rebootDevice(self, serial: str): """ metadata = { - 'tags': ['devices', 'liveTools'], - 'operation': 'rebootDevice' + "tags": ["devices", "liveTools"], + "operation": "rebootDevice", } - serial = urllib.parse.quote(str(serial), safe='') - resource = f'/devices/{serial}/reboot' + serial = urllib.parse.quote(str(serial), safe="") + resource = f"/devices/{serial}/reboot" return self._session.post(metadata, resource) - diff --git a/meraki/aio/api/insight.py b/meraki/aio/api/insight.py index 025fd83..1c786c0 100644 --- a/meraki/aio/api/insight.py +++ b/meraki/aio/api/insight.py @@ -5,8 +5,6 @@ class AsyncInsight: def __init__(self, session): super().__init__() self._session = session - - def getNetworkInsightApplicationHealthByTime(self, networkId: str, applicationId: str, **kwargs): """ @@ -24,19 +22,22 @@ def getNetworkInsightApplicationHealthByTime(self, networkId: str, applicationId kwargs.update(locals()) metadata = { - 'tags': ['insight', 'monitor', 'applications', 'healthByTime'], - 'operation': 'getNetworkInsightApplicationHealthByTime' + "tags": ["insight", "monitor", "applications", "healthByTime"], + "operation": "getNetworkInsightApplicationHealthByTime", } - networkId = urllib.parse.quote(str(networkId), safe='') - applicationId = urllib.parse.quote(str(applicationId), safe='') - resource = f'/networks/{networkId}/insight/applications/{applicationId}/healthByTime' - - query_params = ['t0', 't1', 'timespan', 'resolution', ] + networkId = urllib.parse.quote(str(networkId), safe="") + applicationId = urllib.parse.quote(str(applicationId), safe="") + resource = f"/networks/{networkId}/insight/applications/{applicationId}/healthByTime" + + query_params = [ + "t0", + "t1", + "timespan", + "resolution", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} return self._session.get(metadata, resource, params) - - def getOrganizationInsightApplications(self, organizationId: str): """ @@ -47,15 +48,13 @@ def getOrganizationInsightApplications(self, organizationId: str): """ metadata = { - 'tags': ['insight', 'configure', 'applications'], - 'operation': 'getOrganizationInsightApplications' + "tags": ["insight", "configure", "applications"], + "operation": "getOrganizationInsightApplications", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/insight/applications' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/insight/applications" return self._session.get(metadata, resource) - - def getOrganizationInsightMonitoredMediaServers(self, organizationId: str): """ @@ -66,15 +65,13 @@ def getOrganizationInsightMonitoredMediaServers(self, organizationId: str): """ metadata = { - 'tags': ['insight', 'configure', 'monitoredMediaServers'], - 'operation': 'getOrganizationInsightMonitoredMediaServers' + "tags": ["insight", "configure", "monitoredMediaServers"], + "operation": "getOrganizationInsightMonitoredMediaServers", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/insight/monitoredMediaServers' + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/insight/monitoredMediaServers" return self._session.get(metadata, resource) - - def createOrganizationInsightMonitoredMediaServer(self, organizationId: str, name: str, address: str, **kwargs): """ @@ -90,18 +87,20 @@ def createOrganizationInsightMonitoredMediaServer(self, organizationId: str, nam kwargs.update(locals()) metadata = { - 'tags': ['insight', 'configure', 'monitoredMediaServers'], - 'operation': 'createOrganizationInsightMonitoredMediaServer' + "tags": ["insight", "configure", "monitoredMediaServers"], + "operation": "createOrganizationInsightMonitoredMediaServer", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - resource = f'/organizations/{organizationId}/insight/monitoredMediaServers' - - body_params = ['name', 'address', 'bestEffortMonitoringEnabled', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/insight/monitoredMediaServers" + + body_params = [ + "name", + "address", + "bestEffortMonitoringEnabled", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.post(metadata, resource, payload) - - def getOrganizationInsightMonitoredMediaServer(self, organizationId: str, monitoredMediaServerId: str): """ @@ -113,16 +112,14 @@ def getOrganizationInsightMonitoredMediaServer(self, organizationId: str, monito """ metadata = { - 'tags': ['insight', 'configure', 'monitoredMediaServers'], - 'operation': 'getOrganizationInsightMonitoredMediaServer' + "tags": ["insight", "configure", "monitoredMediaServers"], + "operation": "getOrganizationInsightMonitoredMediaServer", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe='') - resource = f'/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe="") + resource = f"/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}" return self._session.get(metadata, resource) - - def updateOrganizationInsightMonitoredMediaServer(self, organizationId: str, monitoredMediaServerId: str, **kwargs): """ @@ -139,19 +136,21 @@ def updateOrganizationInsightMonitoredMediaServer(self, organizationId: str, mon kwargs.update(locals()) metadata = { - 'tags': ['insight', 'configure', 'monitoredMediaServers'], - 'operation': 'updateOrganizationInsightMonitoredMediaServer' + "tags": ["insight", "configure", "monitoredMediaServers"], + "operation": "updateOrganizationInsightMonitoredMediaServer", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe='') - resource = f'/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}' - - body_params = ['name', 'address', 'bestEffortMonitoringEnabled', ] + organizationId = urllib.parse.quote(str(organizationId), safe="") + monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe="") + resource = f"/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}" + + body_params = [ + "name", + "address", + "bestEffortMonitoringEnabled", + ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) - - def deleteOrganizationInsightMonitoredMediaServer(self, organizationId: str, monitoredMediaServerId: str): """ @@ -163,12 +162,11 @@ def deleteOrganizationInsightMonitoredMediaServer(self, organizationId: str, mon """ metadata = { - 'tags': ['insight', 'configure', 'monitoredMediaServers'], - 'operation': 'deleteOrganizationInsightMonitoredMediaServer' + "tags": ["insight", "configure", "monitoredMediaServers"], + "operation": "deleteOrganizationInsightMonitoredMediaServer", } - organizationId = urllib.parse.quote(str(organizationId), safe='') - monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe='') - resource = f'/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}' + organizationId = urllib.parse.quote(str(organizationId), safe="") + monitoredMediaServerId = urllib.parse.quote(str(monitoredMediaServerId), safe="") + resource = f"/organizations/{organizationId}/insight/monitoredMediaServers/{monitoredMediaServerId}" return self._session.delete(metadata, resource) - diff --git a/meraki/aio/api/licensing.py b/meraki/aio/api/licensing.py index 7b654fa..3856062 100644 --- a/meraki/aio/api/licensing.py +++ b/meraki/aio/api/licensing.py @@ -5,8 +5,6 @@ class AsyncLicensing: def __init__(self, session): super().__init__() self._session = session - - def getAdministeredLicensingSubscriptionEntitlements(self, **kwargs): """ @@ -19,25 +17,29 @@ def getAdministeredLicensingSubscriptionEntitlements(self, **kwargs): kwargs.update(locals()) metadata = { - 'tags': ['licensing', 'configure', 'subscription', 'entitlements'], - 'operation': 'getAdministeredLicensingSubscriptionEntitlements' + "tags": ["licensing", "configure", "subscription", "entitlements"], + "operation": "getAdministeredLicensingSubscriptionEntitlements", } - resource = f'/administered/licensing/subscription/entitlements' + resource = "/administered/licensing/subscription/entitlements" - query_params = ['skus', ] + query_params = [ + "skus", + ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} - array_params = ['skus', ] + array_params = [ + "skus", + ] for k, v in kwargs.items(): if k.strip() in array_params: - params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params[f"{k.strip()}[]"] = kwargs[f"{k}"] params.pop(k.strip()) return self._session.get(metadata, resource, params) - - - def getAdministeredLicensingSubscriptionSubscriptions(self, organizationIds: list, total_pages=1, direction='next', **kwargs): + def getAdministeredLicensingSubscriptionSubscriptions( + self, organizationIds: list, total_pages=1, direction="next", **kwargs + ): """ **List available subscriptions** https://developer.cisco.com/meraki/api-v1/#!get-administered-licensing-subscription-subscriptions @@ -49,34 +51,50 @@ def getAdministeredLicensingSubscriptionSubscriptions(self, organizationIds: lis - startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - subscriptionIds (array): List of subscription ids to fetch + - startDate (string): Filter subscriptions by start date, ISO 8601 format. To filter with a range of dates, use 'startDate[