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 CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,9 @@ add a news fragment under `changelog.d/` for every user-facing change. See
[CONTRIBUTING.md](CONTRIBUTING.md) for the fragment format.

<!-- towncrier release notes start -->

## 4.5.0b4 (2026-09-30)

### Fixed

- `DashboardAPI` and `AsyncDashboardAPI` now expose the `nac`, `secureConnect`, `support`, `users`, and `assistant` categories. They were generated but never registered, so accessing them raised `AttributeError` even though the underlying API methods worked. ([#472](https://github.com/meraki/dashboard-api-python/issues/472))
1 change: 0 additions & 1 deletion changelog.d/472.fixed.md

This file was deleted.

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-09-30 | Library v4.5.0b4 | API 1.74.0-beta.4


No Python keyword parameter conflicts detected.


## 2026-09-23 | Library v4.5.0b3 | API 1.74.0-beta.3


Expand Down
2 changes: 1 addition & 1 deletion meraki/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
from meraki.exceptions import APIError, APIKeyError, APIResponseError, AsyncAPIError
from meraki.rest_session import RestSession

__api_version__ = "1.74.0-beta.3"
__api_version__ = "1.74.0-beta.4"

__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__ = "4.5.0b3"
__version__ = "4.5.0b4"
2 changes: 1 addition & 1 deletion meraki/aio/api/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -5704,7 +5704,7 @@ def getOrganizationApplianceUmbrellaPoliciesByNetwork(

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**
**List the uplink status of every Meraki MX appliance, Z series appliance, and Secure Router in the organization**
https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-uplink-statuses

- organizationId (string): Organization ID
Expand Down
202 changes: 202 additions & 0 deletions meraki/aio/api/campusGateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -941,3 +941,205 @@ def getOrganizationCampusGatewayDevicesUplinksLocalOverridesByDevice(
)

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

def getOrganizationCampusGatewayMdnsServices(self, organizationId: str, total_pages=1, direction="next", **kwargs):
"""
**List mDNS service definitions visible to the caller in an organization.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-mdns-services

- organizationId (string): Organization ID
- total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages
- direction (string): direction to paginate, either "next" (default) or "prev" page
- keys (array): Exact service key filter. Maximum 100 values.
- types (array): Exact canonical DNS-SD service type filter. Maximum 100 values.
- name (string): Case-insensitive partial display-name filter.
- scopes (array): Exact service-scope filter. Maximum 100 values.
- networkIds (array): Network filter for network-scoped custom services. Maximum 100 values.
- perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
- startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
- endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
"""

kwargs.update(locals())

metadata = {
"tags": ["campusGateway", "configure", "mdns", "services"],
"operation": "getOrganizationCampusGatewayMdnsServices",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/campusGateway/mdns/services"

query_params = [
"keys",
"types",
"name",
"scopes",
"networkIds",
"perPage",
"startingAfter",
"endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}

array_params = [
"keys",
"types",
"scopes",
"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"getOrganizationCampusGatewayMdnsServices: ignoring unrecognized kwargs: {invalid}"
)

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

def getOrganizationCampusGatewayMdnsServicesAssignments(
self, organizationId: str, total_pages=1, direction="next", **kwargs
):
"""
**List active mDNS service assignments on concrete SSIDs visible to the caller.**
https://developer.cisco.com/meraki/api-v1/#!get-organization-campus-gateway-mdns-services-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
- keys (array): Exact service key filter. Maximum 100 values.
- perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.
- startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
- endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
"""

kwargs.update(locals())

metadata = {
"tags": ["campusGateway", "configure", "mdns", "services", "assignments"],
"operation": "getOrganizationCampusGatewayMdnsServicesAssignments",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/campusGateway/mdns/services/assignments"

query_params = [
"keys",
"perPage",
"startingAfter",
"endingBefore",
]
params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params}

array_params = [
"keys",
]
for k, v in kwargs.items():
if k.strip() in array_params:
params[f"{k.strip()}[]"] = kwargs[f"{k}"]
params.pop(k.strip())

if self._session._validate_kwargs:
all_params = query_params + array_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(
f"getOrganizationCampusGatewayMdnsServicesAssignments: ignoring unrecognized kwargs: {invalid}"
)

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

def createOrganizationCampusGatewayMdnsServicesCustom(self, organizationId: str, name: str, types: list, **kwargs):
"""
**Create an organization-scoped custom mDNS service definition.**
https://developer.cisco.com/meraki/api-v1/#!create-organization-campus-gateway-mdns-services-custom

- organizationId (string): Organization ID
- name (string): Display name of the custom mDNS service.
- types (array): One to ten DNS-SD service types. Accepted shorthand is normalized by the API.
"""

kwargs = locals()

metadata = {
"tags": ["campusGateway", "configure", "mdns", "services", "custom"],
"operation": "createOrganizationCampusGatewayMdnsServicesCustom",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
resource = f"/organizations/{organizationId}/campusGateway/mdns/services/custom"

body_params = [
"name",
"types",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}

if self._session._validate_kwargs:
all_params = [] + body_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(
f"createOrganizationCampusGatewayMdnsServicesCustom: ignoring unrecognized kwargs: {invalid}"
)

return self._session.post(metadata, resource, payload)

def updateOrganizationCampusGatewayMdnsServicesCustom(self, organizationId: str, key: str, **kwargs):
"""
**Update an organization-scoped custom mDNS service definition.**
https://developer.cisco.com/meraki/api-v1/#!update-organization-campus-gateway-mdns-services-custom

- organizationId (string): Organization ID
- key (string): Key
- name (string): Updated display name of the custom mDNS service.
- types (array): Replacement ordered list of one to ten DNS-SD service types.
"""

kwargs.update(locals())

metadata = {
"tags": ["campusGateway", "configure", "mdns", "services", "custom"],
"operation": "updateOrganizationCampusGatewayMdnsServicesCustom",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
key = urllib.parse.quote(str(key), safe="")
resource = f"/organizations/{organizationId}/campusGateway/mdns/services/custom/{key}"

body_params = [
"name",
"types",
]
payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params}

if self._session._validate_kwargs:
all_params = [] + body_params
invalid = [k for k in kwargs if k.strip() not in all_params and k != "self"]
if invalid and self._session._logger:
self._session._logger.warning(
f"updateOrganizationCampusGatewayMdnsServicesCustom: ignoring unrecognized kwargs: {invalid}"
)

return self._session.put(metadata, resource, payload)

def deleteOrganizationCampusGatewayMdnsServicesCustom(self, organizationId: str, key: str):
"""
**Delete an organization-scoped custom mDNS service definition.**
https://developer.cisco.com/meraki/api-v1/#!delete-organization-campus-gateway-mdns-services-custom

- organizationId (string): Organization ID
- key (string): Key
"""

metadata = {
"tags": ["campusGateway", "configure", "mdns", "services", "custom"],
"operation": "deleteOrganizationCampusGatewayMdnsServicesCustom",
}
organizationId = urllib.parse.quote(str(organizationId), safe="")
key = urllib.parse.quote(str(key), safe="")
resource = f"/organizations/{organizationId}/campusGateway/mdns/services/custom/{key}"

return self._session.delete(metadata, resource)
Loading
Loading