From 4b6d54ccdfeedbb24fedcad7135baec7c6da410b Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 17 Oct 2026 14:15:53 +0000 Subject: [PATCH] Auto-generated library v4.6.1b0 for API v1.75.1-beta.0. --- docs/generation-report.md | 6 + meraki/__init__.py | 2 +- meraki/_version.py | 2 +- meraki/aio/api/appliance.py | 90 ++++++++++++ meraki/aio/api/assistant.py | 26 +++- meraki/aio/api/nac.py | 4 + meraki/aio/api/organizations.py | 221 ++++++++++++++++++++++++++++-- meraki/aio/api/wireless.py | 2 +- meraki/api/appliance.py | 90 ++++++++++++ meraki/api/assistant.py | 26 +++- meraki/api/batch/appliance.py | 31 +++++ meraki/api/batch/organizations.py | 105 ++++++++++++++ meraki/api/nac.py | 4 + meraki/api/organizations.py | 221 ++++++++++++++++++++++++++++-- meraki/api/wireless.py | 2 +- pyproject.toml | 2 +- uv.lock | 4 +- 17 files changed, 807 insertions(+), 31 deletions(-) diff --git a/docs/generation-report.md b/docs/generation-report.md index 3a3eac9..56d1196 100644 --- a/docs/generation-report.md +++ b/docs/generation-report.md @@ -1,5 +1,11 @@ # Generation Report +## 2026-10-17 | Library v4.6.1b0 | API 1.75.1-beta.0 + + +No Python keyword parameter conflicts detected. + + ## 2026-10-14 | Library v4.6.0b1 | API 1.75.0-beta.1 diff --git a/meraki/__init__.py b/meraki/__init__.py index 9a78f30..9c4ad52 100644 --- a/meraki/__init__.py +++ b/meraki/__init__.py @@ -57,7 +57,7 @@ from meraki.exceptions import APIError, APIKeyError, APIResponseError, AsyncAPIError from meraki.rest_session import RestSession -__api_version__ = "1.75.0-beta.1" +__api_version__ = "1.75.1-beta.0" __all__ = [ "APIError", diff --git a/meraki/_version.py b/meraki/_version.py index 1a15616..9699292 100644 --- a/meraki/_version.py +++ b/meraki/_version.py @@ -1 +1 @@ -__version__ = "4.6.0b1" +__version__ = "4.6.1b0" diff --git a/meraki/aio/api/appliance.py b/meraki/aio/api/appliance.py index 2668903..be1f630 100644 --- a/meraki/aio/api/appliance.py +++ b/meraki/aio/api/appliance.py @@ -319,6 +319,45 @@ def createDeviceApplianceVmxAuthenticationToken(self, serial: str): return self._session.post(metadata, resource) + def updateNetworkApplianceAlternateManagementInterface(self, networkId: str, **kwargs): + """ + **Update Secure Router alternate management interface settings for a network** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-alternate-management-interface + + - networkId (string): Network ID + - enabled (boolean): Whether the alternate management interface is enabled + - primary (object): Primary alternate management interface addresses + - addressPool (object): Address pool reserved for alternate management interface addresses + - vrf (object): VRF assignment for the alternate management interface. This beta operation currently ignores the requested VRF ID and always uses the default VRF. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "alternateManagementInterface"], + "operation": "updateNetworkApplianceAlternateManagementInterface", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/alternateManagementInterface" + + body_params = [ + "enabled", + "primary", + "addressPool", + "vrf", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"updateNetworkApplianceAlternateManagementInterface: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.put(metadata, resource, payload) + def getNetworkApplianceClientSecurityEvents( self, networkId: str, clientId: str, total_pages=1, direction="next", **kwargs ): @@ -3523,6 +3562,57 @@ def swapNetworkApplianceWarmSpare(self, networkId: str): return self._session.post(metadata, resource) + def getOrganizationApplianceAlternateManagementInterfacesByNetwork( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): + """ + **List Secure Router alternate management interface settings by network** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-alternate-management-interfaces-by-network + + - organizationId (string): Organization ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10. + - startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - networkIds (array): Optional parameter to filter the results by network IDs. Matches are exact. Maximum array size is 100 + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "alternateManagementInterfaces", "byNetwork"], + "operation": "getOrganizationApplianceAlternateManagementInterfacesByNetwork", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/alternateManagementInterfaces/byNetwork" + + query_params = [ + "perPage", + "startingAfter", + "endingBefore", + "networkIds", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = [ + "networkIds", + ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f"{k.strip()}[]"] = kwargs[f"{k}"] + params.pop(k.strip()) + + if self._session._validate_kwargs: + all_params = query_params + array_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"getOrganizationApplianceAlternateManagementInterfacesByNetwork: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) + def getOrganizationApplianceDevicesInterfacesL3(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **List L3 interfaces across networks for the organization** diff --git a/meraki/aio/api/assistant.py b/meraki/aio/api/assistant.py index 6c71759..a0ac4a6 100644 --- a/meraki/aio/api/assistant.py +++ b/meraki/aio/api/assistant.py @@ -641,7 +641,9 @@ def getOrganizationAssistantChatThreadMessage(self, organizationId: str, threadI return self._session.get(metadata, resource) - def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str, threadId: str, messageId: str): + def getOrganizationAssistantChatThreadMessageArtifacts( + self, organizationId: str, threadId: str, messageId: str, total_pages=1, direction="next", **kwargs + ): """ **List artifacts attached to a specific message** https://developer.cisco.com/meraki/api-v1/#!get-organization-assistant-chat-thread-message-artifacts @@ -649,8 +651,14 @@ def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str - organizationId (string): Organization ID - threadId (string): Thread ID - messageId (string): Message ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - perPage (integer): Number of entries per page. Defaults to 100. + - offset (integer): Number of artifacts to skip before returning results. Defaults to 0. """ + kwargs.update(locals()) + metadata = { "tags": ["assistant", "configure", "chat", "threads", "messages", "artifacts"], "operation": "getOrganizationAssistantChatThreadMessageArtifacts", @@ -660,7 +668,21 @@ def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str messageId = urllib.parse.quote(str(messageId), safe="") resource = f"/organizations/{organizationId}/assistant/chat/threads/{threadId}/messages/{messageId}/artifacts" - return self._session.get(metadata, resource) + query_params = [ + "perPage", + "offset", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if self._session._validate_kwargs: + all_params = query_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"getOrganizationAssistantChatThreadMessageArtifacts: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) def getOrganizationAssistantChatThreadMessageArtifact( self, organizationId: str, threadId: str, messageId: str, artifactId: str, total_pages=1, direction="next", **kwargs diff --git a/meraki/aio/api/nac.py b/meraki/aio/api/nac.py index 8080582..33719e7 100644 --- a/meraki/aio/api/nac.py +++ b/meraki/aio/api/nac.py @@ -554,6 +554,7 @@ def getOrganizationNacClients(self, organizationId: str, total_pages=1, directio - groupIds (array): List of group ids for client retrieval by group - lastNetworkName (array): List of network names for client retrieval by last login network name - ssid (array): List of SSID's to filter + - excludeGroups (boolean): When true, omit the items array from each client's groups association while preserving totalCount and nextLink metadata. - classification (object): Classification filters for client retrieval - ipskConfigured (boolean): Filter clients by Identity Pre-Shared Key (iPSK) configuration status. true returns only clients with a per-client iPSK passphrase set; false returns only clients without one. Omit to return all clients regardless of iPSK status. When combined with other filters (clientIds, groupIds, search, classification, ssid, lastNetworkName), all conditions are applied together (logical AND). """ @@ -589,6 +590,7 @@ def getOrganizationNacClients(self, organizationId: str, total_pages=1, directio "groupIds", "lastNetworkName", "ssid", + "excludeGroups", "classification", "ipskConfigured", ] @@ -786,6 +788,7 @@ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, di - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - search (string): Optional parameter to fuzzy search on client groups. - groupIds (array): List of ids for specific group retrieval + - excludeMembers (boolean): When true, omit the items array from each client group's members association while preserving totalCount and nextLink metadata. """ kwargs.update(locals()) @@ -816,6 +819,7 @@ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, di "endingBefore", "search", "groupIds", + "excludeMembers", ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} diff --git a/meraki/aio/api/organizations.py b/meraki/aio/api/organizations.py index ac96eaf..5ba1442 100644 --- a/meraki/aio/api/organizations.py +++ b/meraki/aio/api/organizations.py @@ -9755,6 +9755,193 @@ def getAccount(self, organizationId: str, accountId: str): return self._session.get(metadata, resource) + def listAutovpnConnectors(self, organizationId: str): + """ + **Lists the organization's MCN AutoVPN connectors.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-connectors + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "connectors"], + "operation": "listAutovpnConnectors", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/connectors" + + return self._session.get(metadata, resource) + + def syncAutovpnConnectors(self, organizationId: str): + """ + **Starts asynchronous reconciliation of MCN AutoVPN connectors and available regions.** + https://developer.cisco.com/meraki/api-v1/#!sync-autovpn-connectors + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "connectors"], + "operation": "syncAutovpnConnectors", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/connectors/sync" + + return self._session.post(metadata, resource) + + def disableAutovpnSiteToCloud(self, organizationId: str): + """ + **Starts asynchronous organization-wide AutoVPN site-to-cloud offboarding.** + https://developer.cisco.com/meraki/api-v1/#!disable-autovpn-site-to-cloud + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn"], + "operation": "disableAutovpnSiteToCloud", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/siteToCloud" + + return self._session.delete(metadata, resource) + + def listAutovpnSites(self, organizationId: str): + """ + **Lists Meraki networks discoverable for AutoVPN site-to-cloud connectivity.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-sites + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites"], + "operation": "listAutovpnSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites" + + return self._session.get(metadata, resource) + + def listAutovpnEnrollableSites(self, organizationId: str): + """ + **Lists Meraki networks eligible for AutoVPN site-to-cloud onboarding.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-enrollable-sites + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites", "enrollable"], + "operation": "listAutovpnEnrollableSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites/enrollable" + + return self._session.get(metadata, resource) + + def onboardAutovpnSites(self, organizationId: str, **kwargs): + """ + **Starts asynchronous AutoVPN site-to-cloud onboarding for the requested spoke networks.** + https://developer.cisco.com/meraki/api-v1/#!onboard-autovpn-sites + + - organizationId (string): Organization ID + - spokes (array): Optional spoke networks and their desired MCN regions. Omit this field to perform hub-only onboarding. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites"], + "operation": "onboardAutovpnSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites/onboard" + + body_params = [ + "spokes", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning(f"onboardAutovpnSites: ignoring unrecognized kwargs: {invalid}") + + return self._session.post(metadata, resource, payload) + + def offboardAutovpnSpoke(self, organizationId: str, networkId: str): + """ + **Detaches a Meraki AutoVPN spoke from its MCN regions.** + https://developer.cisco.com/meraki/api-v1/#!offboard-autovpn-spoke + + - organizationId (string): Organization ID + - networkId (string): Network ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes"], + "operation": "offboardAutovpnSpoke", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}" + + return self._session.delete(metadata, resource) + + def getAutovpnSpokeHubBudget(self, organizationId: str, networkId: str): + """ + **Returns the AutoVPN hub budget for a Meraki spoke network.** + https://developer.cisco.com/meraki/api-v1/#!get-autovpn-spoke-hub-budget + + - organizationId (string): Organization ID + - networkId (string): Network ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes", "hubBudget"], + "operation": "getAutovpnSpokeHubBudget", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}/hubBudget" + + return self._session.get(metadata, resource) + + def replaceAutovpnSpokeRegions(self, organizationId: str, networkId: str, regionIds: list, **kwargs): + """ + **Replaces the complete desired MCN region set for a Meraki AutoVPN spoke.** + https://developer.cisco.com/meraki/api-v1/#!replace-autovpn-spoke-regions + + - organizationId (string): Organization ID + - networkId (string): Network ID + - regionIds (array): Complete desired set of MCN region identifiers. + """ + + kwargs = locals() + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes", "regions"], + "operation": "replaceAutovpnSpokeRegions", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}/regions" + + body_params = [ + "regionIds", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning(f"replaceAutovpnSpokeRegions: ignoring unrecognized kwargs: {invalid}") + + return self._session.put(metadata, resource, payload) + def getBgpSessionStatus(self, organizationId: str, **kwargs): """ **Returns aligned aggregate and member BGP-session-health series for @@ -9879,13 +10066,17 @@ def listEventLogs(self, organizationId: str, total_pages=1, direction="next", ** - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10026,13 +10217,17 @@ def getEventLogFacets(self, organizationId: str, **kwargs): - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10168,13 +10363,17 @@ def getEventLogHistogram(self, organizationId: str, **kwargs): - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10604,8 +10803,9 @@ def listRegions(self, organizationId: str, total_pages=1, direction="next", **kw - `ipsec` — The region has an eligible IPsec vPOP address. This value selects a connection type and does not identify the cloud-integration provider. If omitted, regions are not restricted by connection type. - - hasOnboardedNetworks (boolean): Deprecated: Use `hasOnboardedVpcs`. When `true`, returns only regions associated with at least one successfully onboarded legacy Network for the organization; when `false`, it adds no filter. If both parameters are supplied, `hasOnboardedVpcs` takes precedence. - - hasOnboardedVpcs (boolean): When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. This preferred field takes precedence over `hasOnboardedNetworks` when both are supplied. + - active (boolean): When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. If supplied, this parameter takes precedence over the deprecated `hasOnboardedVpcs` and `hasOnboardedNetworks` aliases, including when its value is `false`. If omitted, the aliases remain available for compatibility. + - hasOnboardedNetworks (boolean): Deprecated: Use `active`. When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false`, it adds no filter. This alias is applied only when both `active` and `hasOnboardedVpcs` are omitted. + - hasOnboardedVpcs (boolean): Deprecated: Use `active`. When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. This alias is applied only when `active` is omitted and takes precedence over `hasOnboardedNetworks`, including when its value is `false`. - perPage (integer): Requested maximum number of matching resources to return. The default and maximum, and whether this parameter is applied, are defined by the operation. A response can contain fewer resources than requested. - startingAfter (string): Forward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. - endingBefore (string): Backward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. @@ -10627,6 +10827,7 @@ def listRegions(self, organizationId: str, total_pages=1, direction="next", **kw query_params = [ "provider", "type", + "active", "hasOnboardedNetworks", "hasOnboardedVpcs", "perPage", @@ -10820,15 +11021,15 @@ def confirmRemovedResource(self, organizationId: str, resourceType: str, resourc def listSites(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ - **Returns Meraki network records represented as MCN Sites for site-to-cloud connectivity in the specified organization** + **Returns Meraki and Manual IPsec records represented as MCN Sites for site-to-cloud connectivity in the specified organization** https://developer.cisco.com/meraki/api-v1/#!list-sites - organizationId (string): Organization ID - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages - direction (string): direction to paginate, either "next" (default) or "prev" page - - onboarded (boolean): When `true`, return only Sites currently marked as onboarded. When `false`, return only Sites not currently marked as onboarded. Omit to include both. - - accountId (string): MCN-assigned UUID of the MCN-managed Meraki account whose Sites are returned. - - integrationId (string): MCN-assigned UUID of the MCN-managed Meraki integration whose Sites are returned. + - onboarded (boolean): When `true`, return only Sites currently marked as onboarded. When `false`, return only Sites not currently marked as onboarded, including a Manual IPsec Site whose lifecycle record does not yet exist. Omit to include both. + - accountId (string): MCN-assigned UUID of the MCN-managed Meraki account whose Sites are returned. Because Manual IPsec Sites are accountless, supplying this filter excludes them. + - integrationId (string): MCN-assigned UUID of the MCN-managed Meraki integration whose Sites are returned. Because Manual IPsec Sites have no integration, supplying this filter excludes them. - perPage (integer): Requested maximum number of matching resources to return. The default and maximum, and whether this parameter is applied, are defined by the operation. A response can contain fewer resources than requested. - startingAfter (string): Forward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. - endingBefore (string): Backward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. @@ -10921,7 +11122,7 @@ def getSiteSubnet(self, organizationId: str, subnetId: str): def getSite(self, organizationId: str, siteId: str): """ - **Returns one organization-owned Meraki network represented as an MCN Site, including subnet and tag associations stored by MCN** + **Returns one organization-owned Meraki or Manual IPsec record represented as an MCN Site** https://developer.cisco.com/meraki/api-v1/#!get-site - organizationId (string): Organization ID diff --git a/meraki/aio/api/wireless.py b/meraki/aio/api/wireless.py index 834044d..ddad390 100644 --- a/meraki/aio/api/wireless.py +++ b/meraki/aio/api/wireless.py @@ -8450,7 +8450,7 @@ def getOrganizationWirelessDevicesDataRateByClient(self, organizationId: str, to def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ - **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.** + **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices** https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses - organizationId (string): Organization ID diff --git a/meraki/api/appliance.py b/meraki/api/appliance.py index e207aad..f345e23 100644 --- a/meraki/api/appliance.py +++ b/meraki/api/appliance.py @@ -319,6 +319,45 @@ def createDeviceApplianceVmxAuthenticationToken(self, serial: str): return self._session.post(metadata, resource) + def updateNetworkApplianceAlternateManagementInterface(self, networkId: str, **kwargs): + """ + **Update Secure Router alternate management interface settings for a network** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-alternate-management-interface + + - networkId (string): Network ID + - enabled (boolean): Whether the alternate management interface is enabled + - primary (object): Primary alternate management interface addresses + - addressPool (object): Address pool reserved for alternate management interface addresses + - vrf (object): VRF assignment for the alternate management interface. This beta operation currently ignores the requested VRF ID and always uses the default VRF. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "alternateManagementInterface"], + "operation": "updateNetworkApplianceAlternateManagementInterface", + } + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/networks/{networkId}/appliance/alternateManagementInterface" + + body_params = [ + "enabled", + "primary", + "addressPool", + "vrf", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"updateNetworkApplianceAlternateManagementInterface: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.put(metadata, resource, payload) + def getNetworkApplianceClientSecurityEvents( self, networkId: str, clientId: str, total_pages=1, direction="next", **kwargs ): @@ -3523,6 +3562,57 @@ def swapNetworkApplianceWarmSpare(self, networkId: str): return self._session.post(metadata, resource) + def getOrganizationApplianceAlternateManagementInterfacesByNetwork( + self, organizationId: str, total_pages=1, direction="next", **kwargs + ): + """ + **List Secure Router alternate management interface settings by network** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-alternate-management-interfaces-by-network + + - organizationId (string): Organization ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 100. Default is 10. + - startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - networkIds (array): Optional parameter to filter the results by network IDs. Matches are exact. Maximum array size is 100 + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["appliance", "configure", "alternateManagementInterfaces", "byNetwork"], + "operation": "getOrganizationApplianceAlternateManagementInterfacesByNetwork", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/appliance/alternateManagementInterfaces/byNetwork" + + query_params = [ + "perPage", + "startingAfter", + "endingBefore", + "networkIds", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = [ + "networkIds", + ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f"{k.strip()}[]"] = kwargs[f"{k}"] + params.pop(k.strip()) + + if self._session._validate_kwargs: + all_params = query_params + array_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"getOrganizationApplianceAlternateManagementInterfacesByNetwork: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) + def getOrganizationApplianceDevicesInterfacesL3(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ **List L3 interfaces across networks for the organization** diff --git a/meraki/api/assistant.py b/meraki/api/assistant.py index 38d88f2..d2d6192 100644 --- a/meraki/api/assistant.py +++ b/meraki/api/assistant.py @@ -641,7 +641,9 @@ def getOrganizationAssistantChatThreadMessage(self, organizationId: str, threadI return self._session.get(metadata, resource) - def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str, threadId: str, messageId: str): + def getOrganizationAssistantChatThreadMessageArtifacts( + self, organizationId: str, threadId: str, messageId: str, total_pages=1, direction="next", **kwargs + ): """ **List artifacts attached to a specific message** https://developer.cisco.com/meraki/api-v1/#!get-organization-assistant-chat-thread-message-artifacts @@ -649,8 +651,14 @@ def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str - organizationId (string): Organization ID - threadId (string): Thread ID - messageId (string): Message ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - perPage (integer): Number of entries per page. Defaults to 100. + - offset (integer): Number of artifacts to skip before returning results. Defaults to 0. """ + kwargs.update(locals()) + metadata = { "tags": ["assistant", "configure", "chat", "threads", "messages", "artifacts"], "operation": "getOrganizationAssistantChatThreadMessageArtifacts", @@ -660,7 +668,21 @@ def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str messageId = urllib.parse.quote(str(messageId), safe="") resource = f"/organizations/{organizationId}/assistant/chat/threads/{threadId}/messages/{messageId}/artifacts" - return self._session.get(metadata, resource) + query_params = [ + "perPage", + "offset", + ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + if self._session._validate_kwargs: + all_params = query_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning( + f"getOrganizationAssistantChatThreadMessageArtifacts: ignoring unrecognized kwargs: {invalid}" + ) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) def getOrganizationAssistantChatThreadMessageArtifact( self, organizationId: str, threadId: str, messageId: str, artifactId: str, total_pages=1, direction="next", **kwargs diff --git a/meraki/api/batch/appliance.py b/meraki/api/batch/appliance.py index 1d61e1f..f7e2b3a 100644 --- a/meraki/api/batch/appliance.py +++ b/meraki/api/batch/appliance.py @@ -172,6 +172,37 @@ def createDeviceApplianceVmxAuthenticationToken(self, serial: str): } return action + def updateNetworkApplianceAlternateManagementInterface(self, networkId: str, **kwargs): + """ + **Update Secure Router alternate management interface settings for a network. Omitted properties remain unchanged. The request contains only editable properties; the response includes network identity and resolved VRF name. This beta operation is available only to organizations with beta API access and may change before GA.** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-alternate-management-interface + + - networkId (string): Network ID + - enabled (boolean): Whether the alternate management interface is enabled + - primary (object): Primary alternate management interface addresses + - addressPool (object): Address pool reserved for alternate management interface addresses + - vrf (object): VRF assignment for the alternate management interface. This beta operation currently ignores the requested VRF ID and always uses the default VRF. + """ + + kwargs.update(locals()) + + networkId = urllib.parse.quote(networkId, safe="") + resource = f"/networks/{networkId}/appliance/alternateManagementInterface" + + body_params = [ + "enabled", + "primary", + "addressPool", + "vrf", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + action = { + "resource": resource, + "operation": "update", + "body": payload, + } + return action + def updateNetworkApplianceConnectivityMonitoringDestinations(self, networkId: str, **kwargs): """ **Update the connectivity testing destinations for an MX network** diff --git a/meraki/api/batch/organizations.py b/meraki/api/batch/organizations.py index c80259a..6f88e9e 100644 --- a/meraki/api/batch/organizations.py +++ b/meraki/api/batch/organizations.py @@ -2072,6 +2072,111 @@ def updateOrganizationLoginSecurity(self, organizationId: str, **kwargs): } return action + def syncAutovpnConnectors(self, organizationId: str): + """ + **Starts asynchronous reconciliation of MCN AutoVPN connectors and available regions.** + https://developer.cisco.com/meraki/api-v1/#!sync-autovpn-connectors + + - organizationId (string): Organization ID + """ + + organizationId = urllib.parse.quote(organizationId, safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/connectors/sync" + + action = { + "resource": resource, + "operation": "batch", + } + return action + + def disableAutovpnSiteToCloud(self, organizationId: str): + """ + **Starts asynchronous organization-wide AutoVPN site-to-cloud offboarding.** + https://developer.cisco.com/meraki/api-v1/#!disable-autovpn-site-to-cloud + + - organizationId (string): Organization ID + """ + + organizationId = urllib.parse.quote(organizationId, safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/siteToCloud" + + action = { + "resource": resource, + "operation": "batch", + } + return action + + def onboardAutovpnSites(self, organizationId: str, **kwargs): + """ + **Starts asynchronous AutoVPN site-to-cloud onboarding for the requested spoke networks.** + https://developer.cisco.com/meraki/api-v1/#!onboard-autovpn-sites + + - organizationId (string): Organization ID + - spokes (array): Optional spoke networks and their desired MCN regions. Omit this field to perform hub-only onboarding. + """ + + kwargs.update(locals()) + + organizationId = urllib.parse.quote(organizationId, safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites/onboard" + + body_params = [ + "spokes", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + action = { + "resource": resource, + "operation": "batch", + "body": payload, + } + return action + + def offboardAutovpnSpoke(self, organizationId: str, networkId: str): + """ + **Detaches a Meraki AutoVPN spoke from its MCN regions.** + https://developer.cisco.com/meraki/api-v1/#!offboard-autovpn-spoke + + - organizationId (string): Organization ID + - networkId (string): Network ID + """ + + organizationId = urllib.parse.quote(organizationId, safe="") + networkId = urllib.parse.quote(networkId, safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}" + + action = { + "resource": resource, + "operation": "batch", + } + return action + + def replaceAutovpnSpokeRegions(self, organizationId: str, networkId: str, regionIds: list, **kwargs): + """ + **Replaces the complete desired MCN region set for a Meraki AutoVPN spoke.** + https://developer.cisco.com/meraki/api-v1/#!replace-autovpn-spoke-regions + + - organizationId (string): Organization ID + - networkId (string): Network ID + - regionIds (array): Complete desired set of MCN region identifiers. + """ + + kwargs = locals() + + organizationId = urllib.parse.quote(organizationId, safe="") + networkId = urllib.parse.quote(networkId, safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}/regions" + + body_params = [ + "regionIds", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + action = { + "resource": resource, + "operation": "batch", + "body": payload, + } + return action + def createIntegration(self, organizationId: str, provider: str, accessRights: list, **kwargs): """ **Creates an AWS, Microsoft Azure, or Google Cloud integration for the specified Meraki Dashboard organization and starts initial cloud-resource discovery. The `provider` value selects the matching credential object; credential objects for other providers are ignored. The `201` response confirms that the integration was created and discovery was accepted for separate processing, not that discovery completed.** diff --git a/meraki/api/nac.py b/meraki/api/nac.py index bbe220e..93a10af 100644 --- a/meraki/api/nac.py +++ b/meraki/api/nac.py @@ -554,6 +554,7 @@ def getOrganizationNacClients(self, organizationId: str, total_pages=1, directio - groupIds (array): List of group ids for client retrieval by group - lastNetworkName (array): List of network names for client retrieval by last login network name - ssid (array): List of SSID's to filter + - excludeGroups (boolean): When true, omit the items array from each client's groups association while preserving totalCount and nextLink metadata. - classification (object): Classification filters for client retrieval - ipskConfigured (boolean): Filter clients by Identity Pre-Shared Key (iPSK) configuration status. true returns only clients with a per-client iPSK passphrase set; false returns only clients without one. Omit to return all clients regardless of iPSK status. When combined with other filters (clientIds, groupIds, search, classification, ssid, lastNetworkName), all conditions are applied together (logical AND). """ @@ -589,6 +590,7 @@ def getOrganizationNacClients(self, organizationId: str, total_pages=1, directio "groupIds", "lastNetworkName", "ssid", + "excludeGroups", "classification", "ipskConfigured", ] @@ -786,6 +788,7 @@ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, di - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - search (string): Optional parameter to fuzzy search on client groups. - groupIds (array): List of ids for specific group retrieval + - excludeMembers (boolean): When true, omit the items array from each client group's members association while preserving totalCount and nextLink metadata. """ kwargs.update(locals()) @@ -816,6 +819,7 @@ def getOrganizationNacClientsGroups(self, organizationId: str, total_pages=1, di "endingBefore", "search", "groupIds", + "excludeMembers", ] params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} diff --git a/meraki/api/organizations.py b/meraki/api/organizations.py index 83052e0..af7e4ea 100644 --- a/meraki/api/organizations.py +++ b/meraki/api/organizations.py @@ -9755,6 +9755,193 @@ def getAccount(self, organizationId: str, accountId: str): return self._session.get(metadata, resource) + def listAutovpnConnectors(self, organizationId: str): + """ + **Lists the organization's MCN AutoVPN connectors.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-connectors + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "connectors"], + "operation": "listAutovpnConnectors", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/connectors" + + return self._session.get(metadata, resource) + + def syncAutovpnConnectors(self, organizationId: str): + """ + **Starts asynchronous reconciliation of MCN AutoVPN connectors and available regions.** + https://developer.cisco.com/meraki/api-v1/#!sync-autovpn-connectors + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "connectors"], + "operation": "syncAutovpnConnectors", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/connectors/sync" + + return self._session.post(metadata, resource) + + def disableAutovpnSiteToCloud(self, organizationId: str): + """ + **Starts asynchronous organization-wide AutoVPN site-to-cloud offboarding.** + https://developer.cisco.com/meraki/api-v1/#!disable-autovpn-site-to-cloud + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn"], + "operation": "disableAutovpnSiteToCloud", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/siteToCloud" + + return self._session.delete(metadata, resource) + + def listAutovpnSites(self, organizationId: str): + """ + **Lists Meraki networks discoverable for AutoVPN site-to-cloud connectivity.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-sites + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites"], + "operation": "listAutovpnSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites" + + return self._session.get(metadata, resource) + + def listAutovpnEnrollableSites(self, organizationId: str): + """ + **Lists Meraki networks eligible for AutoVPN site-to-cloud onboarding.** + https://developer.cisco.com/meraki/api-v1/#!list-autovpn-enrollable-sites + + - organizationId (string): Organization ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites", "enrollable"], + "operation": "listAutovpnEnrollableSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites/enrollable" + + return self._session.get(metadata, resource) + + def onboardAutovpnSites(self, organizationId: str, **kwargs): + """ + **Starts asynchronous AutoVPN site-to-cloud onboarding for the requested spoke networks.** + https://developer.cisco.com/meraki/api-v1/#!onboard-autovpn-sites + + - organizationId (string): Organization ID + - spokes (array): Optional spoke networks and their desired MCN regions. Omit this field to perform hub-only onboarding. + """ + + kwargs.update(locals()) + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "sites"], + "operation": "onboardAutovpnSites", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/sites/onboard" + + body_params = [ + "spokes", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning(f"onboardAutovpnSites: ignoring unrecognized kwargs: {invalid}") + + return self._session.post(metadata, resource, payload) + + def offboardAutovpnSpoke(self, organizationId: str, networkId: str): + """ + **Detaches a Meraki AutoVPN spoke from its MCN regions.** + https://developer.cisco.com/meraki/api-v1/#!offboard-autovpn-spoke + + - organizationId (string): Organization ID + - networkId (string): Network ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes"], + "operation": "offboardAutovpnSpoke", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}" + + return self._session.delete(metadata, resource) + + def getAutovpnSpokeHubBudget(self, organizationId: str, networkId: str): + """ + **Returns the AutoVPN hub budget for a Meraki spoke network.** + https://developer.cisco.com/meraki/api-v1/#!get-autovpn-spoke-hub-budget + + - organizationId (string): Organization ID + - networkId (string): Network ID + """ + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes", "hubBudget"], + "operation": "getAutovpnSpokeHubBudget", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}/hubBudget" + + return self._session.get(metadata, resource) + + def replaceAutovpnSpokeRegions(self, organizationId: str, networkId: str, regionIds: list, **kwargs): + """ + **Replaces the complete desired MCN region set for a Meraki AutoVPN spoke.** + https://developer.cisco.com/meraki/api-v1/#!replace-autovpn-spoke-regions + + - organizationId (string): Organization ID + - networkId (string): Network ID + - regionIds (array): Complete desired set of MCN region identifiers. + """ + + kwargs = locals() + + metadata = { + "tags": ["organizations", "configure", "mcf", "autovpn", "spokes", "regions"], + "operation": "replaceAutovpnSpokeRegions", + } + organizationId = urllib.parse.quote(str(organizationId), safe="") + networkId = urllib.parse.quote(str(networkId), safe="") + resource = f"/organizations/{organizationId}/mcf/autovpn/spokes/{networkId}/regions" + + body_params = [ + "regionIds", + ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + if self._session._validate_kwargs: + all_params = [] + body_params + invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"] + if invalid and self._session._logger: + self._session._logger.warning(f"replaceAutovpnSpokeRegions: ignoring unrecognized kwargs: {invalid}") + + return self._session.put(metadata, resource, payload) + def getBgpSessionStatus(self, organizationId: str, **kwargs): """ **Returns aligned aggregate and member BGP-session-health series for @@ -9879,13 +10066,17 @@ def listEventLogs(self, organizationId: str, total_pages=1, direction="next", ** - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10026,13 +10217,17 @@ def getEventLogFacets(self, organizationId: str, **kwargs): - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10168,13 +10363,17 @@ def getEventLogHistogram(self, organizationId: str, **kwargs): - `integration` — Cloud integration subject. - `account` — Discovered cloud-account subject. - `subnet` — Discovered subnet or VLAN subject. + - `organization` — Organization or action spanning multiple resources. + - `tag` — Canonical network tag subject. + - `ztr_intent` — ZTR connection rule subject. + - `sites` — Organization-owned Manual IPsec Site subject with no account or integration parent. - `vpc` — Request alias for a public-cloud `network` subject. - `site` — Request alias for a Meraki `network` subject. - `network` — Deprecated legacy subject spanning VPCs and Sites. The `vpc` and `site` aliases constrain provider family only when this filter contains family aliases exclusively. Mixing either alias with - `integration`, `account`, or `subnet` drops that constraint + another subject type drops that constraint and can broaden matching `network` events. Unknown values return HTTP 400. - entityId (array): Restricts results to exact primary-subject identifiers across all entity types. Repeat the parameter to OR identifiers. @@ -10604,8 +10803,9 @@ def listRegions(self, organizationId: str, total_pages=1, direction="next", **kw - `ipsec` — The region has an eligible IPsec vPOP address. This value selects a connection type and does not identify the cloud-integration provider. If omitted, regions are not restricted by connection type. - - hasOnboardedNetworks (boolean): Deprecated: Use `hasOnboardedVpcs`. When `true`, returns only regions associated with at least one successfully onboarded legacy Network for the organization; when `false`, it adds no filter. If both parameters are supplied, `hasOnboardedVpcs` takes precedence. - - hasOnboardedVpcs (boolean): When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. This preferred field takes precedence over `hasOnboardedNetworks` when both are supplied. + - active (boolean): When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. If supplied, this parameter takes precedence over the deprecated `hasOnboardedVpcs` and `hasOnboardedNetworks` aliases, including when its value is `false`. If omitted, the aliases remain available for compatibility. + - hasOnboardedNetworks (boolean): Deprecated: Use `active`. When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false`, it adds no filter. This alias is applied only when both `active` and `hasOnboardedVpcs` are omitted. + - hasOnboardedVpcs (boolean): Deprecated: Use `active`. When `true`, returns only regions associated with at least one successfully onboarded VPC for the organization; when `false` or omitted, it adds no filter. This condition is evaluated independently of the `type` filter. This alias is applied only when `active` is omitted and takes precedence over `hasOnboardedNetworks`, including when its value is `false`. - perPage (integer): Requested maximum number of matching resources to return. The default and maximum, and whether this parameter is applied, are defined by the operation. A response can contain fewer resources than requested. - startingAfter (string): Forward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. - endingBefore (string): Backward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. @@ -10627,6 +10827,7 @@ def listRegions(self, organizationId: str, total_pages=1, direction="next", **kw query_params = [ "provider", "type", + "active", "hasOnboardedNetworks", "hasOnboardedVpcs", "perPage", @@ -10820,15 +11021,15 @@ def confirmRemovedResource(self, organizationId: str, resourceType: str, resourc def listSites(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ - **Returns Meraki network records represented as MCN Sites for site-to-cloud connectivity in the specified organization** + **Returns Meraki and Manual IPsec records represented as MCN Sites for site-to-cloud connectivity in the specified organization** https://developer.cisco.com/meraki/api-v1/#!list-sites - organizationId (string): Organization ID - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages - direction (string): direction to paginate, either "next" (default) or "prev" page - - onboarded (boolean): When `true`, return only Sites currently marked as onboarded. When `false`, return only Sites not currently marked as onboarded. Omit to include both. - - accountId (string): MCN-assigned UUID of the MCN-managed Meraki account whose Sites are returned. - - integrationId (string): MCN-assigned UUID of the MCN-managed Meraki integration whose Sites are returned. + - onboarded (boolean): When `true`, return only Sites currently marked as onboarded. When `false`, return only Sites not currently marked as onboarded, including a Manual IPsec Site whose lifecycle record does not yet exist. Omit to include both. + - accountId (string): MCN-assigned UUID of the MCN-managed Meraki account whose Sites are returned. Because Manual IPsec Sites are accountless, supplying this filter excludes them. + - integrationId (string): MCN-assigned UUID of the MCN-managed Meraki integration whose Sites are returned. Because Manual IPsec Sites have no integration, supplying this filter excludes them. - perPage (integer): Requested maximum number of matching resources to return. The default and maximum, and whether this parameter is applied, are defined by the operation. A response can contain fewer resources than requested. - startingAfter (string): Forward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. - endingBefore (string): Backward page boundary accepted by an operation. Its source, format, and interpretation are defined by that operation; do not reuse it across operations unless their documentation permits it. Cursor validation and interaction with other pagination parameters are operation-specific. @@ -10921,7 +11122,7 @@ def getSiteSubnet(self, organizationId: str, subnetId: str): def getSite(self, organizationId: str, siteId: str): """ - **Returns one organization-owned Meraki network represented as an MCN Site, including subnet and tag associations stored by MCN** + **Returns one organization-owned Meraki or Manual IPsec record represented as an MCN Site** https://developer.cisco.com/meraki/api-v1/#!get-site - organizationId (string): Organization ID diff --git a/meraki/api/wireless.py b/meraki/api/wireless.py index 1d92cab..aeec4fa 100644 --- a/meraki/api/wireless.py +++ b/meraki/api/wireless.py @@ -8450,7 +8450,7 @@ def getOrganizationWirelessDevicesDataRateByClient(self, organizationId: str, to def getOrganizationWirelessDevicesEthernetStatuses(self, organizationId: str, total_pages=1, direction="next", **kwargs): """ - **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices.** + **List the most recent Ethernet link speed, duplex, aggregation and power mode and status information for wireless devices** https://developer.cisco.com/meraki/api-v1/#!get-organization-wireless-devices-ethernet-statuses - organizationId (string): Organization ID diff --git a/pyproject.toml b/pyproject.toml index 625caa7..171e8b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "meraki" -version = "4.6.0b1" +version = "4.6.1b0" description = "Cisco Meraki Dashboard API library" authors = [ {name = "Cisco Meraki", email = "api-feedback@meraki.net"} diff --git a/uv.lock b/uv.lock index 04ab4f7..435a109 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 5 requires-python = ">=3.11" [[package]] @@ -591,7 +591,7 @@ wheels = [ [[package]] name = "meraki" -version = "4.6.0b1" +version = "4.6.1b0" source = { editable = "." } dependencies = [ { name = "aiohttp" },