diff --git a/docs/generation-report.md b/docs/generation-report.md index ffc35b2..3196bdd 100644 --- a/docs/generation-report.md +++ b/docs/generation-report.md @@ -1,5 +1,11 @@ # Generation Report +## 2026-07-16 | Library v4.3.1 | API 1.72.0 + + +No Python keyword parameter conflicts detected. + + ## 2026-07-09 | Library v4.3.0 | API 1.72.0 diff --git a/meraki/_version.py b/meraki/_version.py index 111dc91..ed48cda 100644 --- a/meraki/_version.py +++ b/meraki/_version.py @@ -1 +1 @@ -__version__ = "4.3.0" +__version__ = "4.3.1" diff --git a/meraki/aio/api/licensing.py b/meraki/aio/api/licensing.py index 962e765..553f47e 100644 --- a/meraki/aio/api/licensing.py +++ b/meraki/aio/api/licensing.py @@ -132,6 +132,11 @@ def claimAdministeredLicensingSubscriptionSubscriptions(self, claimKey: str, org } resource = "/administered/licensing/subscription/subscriptions/claim" + query_params = [ + "validate", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "claimKey", "organizationId", @@ -141,14 +146,14 @@ def claimAdministeredLicensingSubscriptionSubscriptions(self, claimKey: str, org payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning( f"claimAdministeredLicensingSubscriptionSubscriptions: ignoring unrecognized kwargs: {invalid}" ) - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def validateAdministeredLicensingSubscriptionSubscriptionsClaimKey(self, claimKey: str, **kwargs): """ @@ -242,20 +247,25 @@ def bindAdministeredLicensingSubscriptionSubscription(self, subscriptionId: str, subscriptionId = urllib.parse.quote(str(subscriptionId), safe="") resource = f"/administered/licensing/subscription/subscriptions/{subscriptionId}/bind" + query_params = [ + "validate", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "networkIds", ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning( f"bindAdministeredLicensingSubscriptionSubscription: ignoring unrecognized kwargs: {invalid}" ) - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def getOrganizationLicensingCotermLicenses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ diff --git a/meraki/aio/api/networks.py b/meraki/aio/api/networks.py index 83c085c..34865da 100644 --- a/meraki/aio/api/networks.py +++ b/meraki/aio/api/networks.py @@ -806,6 +806,11 @@ def claimNetworkDevices(self, networkId: str, serials: list, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/devices/claim" + query_params = [ + "addAtomically", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "serials", "detailsByDevice", @@ -813,12 +818,12 @@ def claimNetworkDevices(self, networkId: str, serials: list, **kwargs): payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning(f"claimNetworkDevices: ignoring unrecognized kwargs: {invalid}") - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def vmxNetworkDevicesClaim(self, networkId: str, size: str, **kwargs): """ diff --git a/meraki/aio/api/switch.py b/meraki/aio/api/switch.py index 21dcc76..ab988ac 100644 --- a/meraki/aio/api/switch.py +++ b/meraki/aio/api/switch.py @@ -2096,6 +2096,11 @@ def updateNetworkSwitchRoutingOspf(self, networkId: str, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/switch/routing/ospf" + query_params = [ + "vrf", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "enabled", "helloTimerInSeconds", @@ -2108,12 +2113,12 @@ def updateNetworkSwitchRoutingOspf(self, networkId: str, **kwargs): payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning(f"updateNetworkSwitchRoutingOspf: ignoring unrecognized kwargs: {invalid}") - return self._session.put(metadata, resource, payload) + return self._session.put(metadata, resource, payload, params=params) def getNetworkSwitchSettings(self, networkId: str): """ diff --git a/meraki/api/batch/networks.py b/meraki/api/batch/networks.py index b40f4cc..c711374 100644 --- a/meraki/api/batch/networks.py +++ b/meraki/api/batch/networks.py @@ -1,5 +1,7 @@ import urllib +import httpx + class ActionBatchNetworks(object): def __init__(self): @@ -137,6 +139,14 @@ def claimNetworkDevices(self, networkId: str, serials: list, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/devices/claim" + query_params = [ + "addAtomically", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if params: + resource += f"?{httpx.QueryParams(params)}" + body_params = [ "serials", "detailsByDevice", @@ -652,6 +662,14 @@ def deleteNetworkGroupPolicy(self, networkId: str, groupPolicyId: str, **kwargs) groupPolicyId = urllib.parse.quote(str(groupPolicyId), safe="") resource = f"/networks/{networkId}/groupPolicies/{groupPolicyId}" + query_params = [ + "force", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if params: + resource += f"?{httpx.QueryParams(params)}" + action = { "resource": resource, "operation": "destroy", @@ -717,6 +735,14 @@ def deleteNetworkMerakiAuthUser(self, networkId: str, merakiAuthUserId: str, **k merakiAuthUserId = urllib.parse.quote(str(merakiAuthUserId), safe="") resource = f"/networks/{networkId}/merakiAuthUsers/{merakiAuthUserId}" + query_params = [ + "delete", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if params: + resource += f"?{httpx.QueryParams(params)}" + action = { "resource": resource, "operation": "destroy", diff --git a/meraki/api/batch/switch.py b/meraki/api/batch/switch.py index 670ef83..9c0662b 100644 --- a/meraki/api/batch/switch.py +++ b/meraki/api/batch/switch.py @@ -1,5 +1,7 @@ import urllib +import httpx + class ActionBatchSwitch(object): def __init__(self): @@ -1191,6 +1193,14 @@ def updateNetworkSwitchRoutingOspf(self, networkId: str, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/switch/routing/ospf" + query_params = [ + "vrf", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if params: + resource += f"?{httpx.QueryParams(params)}" + body_params = [ "enabled", "helloTimerInSeconds", diff --git a/meraki/api/licensing.py b/meraki/api/licensing.py index df89824..15d31df 100644 --- a/meraki/api/licensing.py +++ b/meraki/api/licensing.py @@ -132,6 +132,11 @@ def claimAdministeredLicensingSubscriptionSubscriptions(self, claimKey: str, org } resource = "/administered/licensing/subscription/subscriptions/claim" + query_params = [ + "validate", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "claimKey", "organizationId", @@ -141,14 +146,14 @@ def claimAdministeredLicensingSubscriptionSubscriptions(self, claimKey: str, org payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning( f"claimAdministeredLicensingSubscriptionSubscriptions: ignoring unrecognized kwargs: {invalid}" ) - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def validateAdministeredLicensingSubscriptionSubscriptionsClaimKey(self, claimKey: str, **kwargs): """ @@ -242,20 +247,25 @@ def bindAdministeredLicensingSubscriptionSubscription(self, subscriptionId: str, subscriptionId = urllib.parse.quote(str(subscriptionId), safe="") resource = f"/administered/licensing/subscription/subscriptions/{subscriptionId}/bind" + query_params = [ + "validate", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "networkIds", ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning( f"bindAdministeredLicensingSubscriptionSubscription: ignoring unrecognized kwargs: {invalid}" ) - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def getOrganizationLicensingCotermLicenses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ diff --git a/meraki/api/networks.py b/meraki/api/networks.py index c1858a7..ea29c61 100644 --- a/meraki/api/networks.py +++ b/meraki/api/networks.py @@ -806,6 +806,11 @@ def claimNetworkDevices(self, networkId: str, serials: list, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/devices/claim" + query_params = [ + "addAtomically", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "serials", "detailsByDevice", @@ -813,12 +818,12 @@ def claimNetworkDevices(self, networkId: str, serials: list, **kwargs): payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning(f"claimNetworkDevices: ignoring unrecognized kwargs: {invalid}") - return self._session.post(metadata, resource, payload) + return self._session.post(metadata, resource, payload, params=params) def vmxNetworkDevicesClaim(self, networkId: str, size: str, **kwargs): """ diff --git a/meraki/api/switch.py b/meraki/api/switch.py index 86ac6cc..4004ce5 100644 --- a/meraki/api/switch.py +++ b/meraki/api/switch.py @@ -2096,6 +2096,11 @@ def updateNetworkSwitchRoutingOspf(self, networkId: str, **kwargs): networkId = urllib.parse.quote(str(networkId), safe="") resource = f"/networks/{networkId}/switch/routing/ospf" + query_params = [ + "vrf", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + body_params = [ "enabled", "helloTimerInSeconds", @@ -2108,12 +2113,12 @@ def updateNetworkSwitchRoutingOspf(self, networkId: str, **kwargs): payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} if self._session._validate_kwargs: - all_params = [] + body_params + all_params = query_params + body_params invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] if invalid and self._session._logger: self._session._logger.warning(f"updateNetworkSwitchRoutingOspf: ignoring unrecognized kwargs: {invalid}") - return self._session.put(metadata, resource, payload) + return self._session.put(metadata, resource, payload, params=params) def getNetworkSwitchSettings(self, networkId: str): """ diff --git a/pyproject.toml b/pyproject.toml index 0bc0861..fa88ea5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "meraki" -version = "4.3.0" +version = "4.3.1" description = "Cisco Meraki Dashboard API library" authors = [ {name = "Cisco Meraki", email = "api-feedback@meraki.net"} diff --git a/uv.lock b/uv.lock index 701593d..498e026 100644 --- a/uv.lock +++ b/uv.lock @@ -363,7 +363,7 @@ wheels = [ [[package]] name = "meraki" -version = "4.3.0" +version = "4.3.1" source = { editable = "." } dependencies = [ { name = "httpx" },