Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/generation-report.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Generation Report

## 2026-06-24 | Library v3.2.0b3 | API 1.71.0-beta.3


No Python keyword parameter conflicts detected.


## 2026-06-17 | Library v3.2.0b2 | API 1.71.0-beta.2


Expand Down
2 changes: 1 addition & 1 deletion meraki/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
from meraki._version import __version__ # noqa: F401
from datetime import datetime

__api_version__ = "1.71.0-beta.2"
__api_version__ = "1.71.0-beta.3"

__all__ = [
"APIError",
Expand Down
2 changes: 1 addition & 1 deletion meraki/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "3.2.0b2"
__version__ = "3.2.0b3"
782 changes: 781 additions & 1 deletion meraki/aio/api/appliance.py

Large diffs are not rendered by default.

24 changes: 22 additions & 2 deletions meraki/aio/api/assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ def getOrganizationAssistantChatThreadMessageArtifacts(self, organizationId: str
return self._session.get(metadata, resource)

def getOrganizationAssistantChatThreadMessageArtifact(
self, organizationId: str, threadId: str, messageId: str, artifactId: str
self, organizationId: str, threadId: str, messageId: str, artifactId: str, total_pages=1, direction="next", **kwargs
):
"""
**Return a single artifact with its full content.**
Expand All @@ -369,8 +369,14 @@ def getOrganizationAssistantChatThreadMessageArtifact(
- threadId (string): Thread ID
- messageId (string): Message ID
- artifactId (string): Artifact ID
- total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages
- direction (string): direction to paginate, either "next" (default) or "prev" page
- page (integer): Page number for paginated artifact content, defaulting to 1
- perPage (integer): Number of entries per page. Defaults to 100. Maximum 1000.
"""

kwargs.update(locals())

metadata = {
"tags": ["assistant", "configure", "chat", "threads", "messages", "artifacts"],
"operation": "getOrganizationAssistantChatThreadMessageArtifact",
Expand All @@ -383,7 +389,21 @@ def getOrganizationAssistantChatThreadMessageArtifact(
f"/organizations/{organizationId}/assistant/chat/threads/{threadId}/messages/{messageId}/artifacts/{artifactId}"
)

return self._session.get(metadata, resource)
query_params = [
"page",
"perPage",
]
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"getOrganizationAssistantChatThreadMessageArtifact: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationAssistantChatThreadMessageFeedback(self, organizationId: str, threadId: str, messageId: str):
"""
Expand Down
268 changes: 230 additions & 38 deletions meraki/aio/api/organizations.py

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions meraki/aio/api/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -2553,8 +2553,8 @@ def updateNetworkSwitchStack(self, networkId: str, switchStackId: str, **kwargs)

- networkId (string): Network ID
- switchStackId (string): Switch stack ID
- name (string): The name of the stack
- members (array): The list of switches that should be in the stack
- name (string): The name of the switch stack
- members (array): The complete list of switches that should be in the stack. Minimum 2 and maximum 8 members. Omitting this field leaves stack membership unchanged.
"""

kwargs.update(locals())
Expand Down
16 changes: 16 additions & 0 deletions meraki/aio/api/wireless.py
Original file line number Diff line number Diff line change
Expand Up @@ -4630,6 +4630,7 @@ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwo
- bands (array): Filter results by band.
- contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
- subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
- insights (string): Insights version to use.
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 14 days from today.
- t1 (string): The end of the timespan for the data. t1 can be a maximum of 14 days after t0.
- timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 15 minutes and be less than or equal to 14 days. The default is 2 hours.
Expand All @@ -4645,6 +4646,11 @@ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwo
assert kwargs["contributor"] in options, (
f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
)
if "insights" in kwargs:
options = ["1", "2"]
assert kwargs["insights"] in options, (
f'''"insights" cannot be "{kwargs["insights"]}", & must be set to one of: {options}'''
)

metadata = {
"tags": ["wireless", "configure", "experience", "channelAvailability", "insights", "byNetwork"],
Expand All @@ -4660,6 +4666,7 @@ def getOrganizationAssuranceWirelessExperienceChannelAvailabilityInsightsByNetwo
"bands",
"contributor",
"subContributor",
"insights",
"t0",
"t1",
"timespan",
Expand Down Expand Up @@ -5317,6 +5324,8 @@ def getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork(
- ssidNumbers (array): Filter results by SSID number.
- bands (array): Filter results by band.
- contributor (string): Contributor for which to retrieve insights. If not specified, returns overall insights.
- subContributor (string): Sub-contributor for which to retrieve insights. If not specified, returns all sub contributor insights.
- insights (string): Insights version to use.
- t0 (string): The beginning of the timespan for the data. The maximum lookback period is 14 days from today.
- t1 (string): The end of the timespan for the data. t1 can be a maximum of 14 days after t0.
- timespan (number): The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 15 minutes and be less than or equal to 14 days. The default is 2 hours.
Expand All @@ -5332,6 +5341,11 @@ def getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork(
assert kwargs["contributor"] in options, (
f'''"contributor" cannot be "{kwargs["contributor"]}", & must be set to one of: {options}'''
)
if "insights" in kwargs:
options = ["1", "2"]
assert kwargs["insights"] in options, (
f'''"insights" cannot be "{kwargs["insights"]}", & must be set to one of: {options}'''
)

metadata = {
"tags": ["wireless", "configure", "experience", "coverage", "insights", "byNetwork"],
Expand All @@ -5346,6 +5360,8 @@ def getOrganizationAssuranceWirelessExperienceCoverageInsightsByNetwork(
"ssidNumbers",
"bands",
"contributor",
"subContributor",
"insights",
"t0",
"t1",
"timespan",
Expand Down
11 changes: 10 additions & 1 deletion meraki/aio/rest_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,17 @@ async def _request(self, metadata, method, url, **kwargs):
await asyncio.sleep(wait)
# 5XX errors
elif status >= 500:
request_id = response.headers.get("X-Request-Id") or "none"
if self._logger:
self._logger.warning(f"{tag}, {operation} > {abs_url} - {status} {reason}, retrying in 1 second")
self._logger.warning(
f"{tag}, {operation} > {abs_url} - {status} {reason} "
f"(X-Request-Id: {request_id}), retrying in 1 second"
)
if _attempt == retries - 1:
self._logger.error(
f"{tag}, {operation} > {abs_url} - {status} {reason} failed after retries. "
f"Provide this X-Request-Id to Meraki for log lookup: {request_id}"
)
await asyncio.sleep(1)
# 4XX errors
else:
Expand Down
Loading
Loading