Skip to content

SD-WAN Internet Policies: Missing GET method in SDK and missing network-scoped GET in API #360

@leigh-jewell

Description

@leigh-jewell

SD-WAN Internet Policies: Missing GET method in SDK and missing network-scoped GET in API

Describe how you confirmed the issue is with the library, and not with the API itself, or a server-side issue of some other kind.

The org-scoped GET endpoint GET /organizations/{organizationId}/appliance/sdwan/internetPolicies exists in the Dashboard API (currently x-release-stage: beta, API version 1.70.0-beta.0) and returns a valid 200 response when called directly via Postman and the Python requests library. However, there is no corresponding getOrganizationApplianceSdwanInternetPolicies method in the SDK. Attempting to call it raises an AttributeError, confirming this is a library-level gap rather than a server-side issue.

Python version installed

Not version-specific — reproducible across Python 3.11+.

Meraki library version installed

3.13.2

Have you reproduced the issue with the latest version of this library? And with the latest version of Python?

Yes — confirmed against meraki==3.13.2, the latest available release.

OS Platform

Not OS-specific.

Describe the bug

There are two related gaps:

  1. getOrganizationApplianceSdwanInternetPolicies is absent from the SDK — the endpoint exists in the API spec (beta) but has not been generated into meraki/api/appliance.py or meraki/aio/api/appliance.py.
  2. There is no GET /networks/{networkId}/appliance/sdwan/internetPolicies endpoint in the API at all, despite a PUT existing at the same path (updateNetworkApplianceSdwanInternetPolicies). This means there is no way to read SD-WAN internet policy at the network level.

How can we replicate the problem you're reporting?

  1. Instantiate the SDK: dashboard = meraki.DashboardAPI(api_key)
  2. Attempt to call: dashboard.appliance.getOrganizationApplianceSdwanInternetPolicies(organizationId)
  3. Observe an AttributeError — the method does not exist.
  4. For reference, the endpoint this should wrap: https://developer.cisco.com/meraki/api-v1/get-organization-appliance-sdwan-internet-policies/

Expected behavior

  • dashboard.appliance.getOrganizationApplianceSdwanInternetPolicies(organizationId) should exist and return the SD-WAN internet traffic preferences for networks within the organisation, consistent with the API spec.
  • A network-scoped dashboard.appliance.getNetworkApplianceSdwanInternetPolicies(networkId) should also exist, consistent with how other read/write pairs are structured in the SDK (e.g. getNetworkApplianceTrafficShapingUplinkSelection / updateNetworkApplianceTrafficShapingUplinkSelection).

Code snippets

import meraki
import requests

api_key = "your_api_key"
organizationId = "your_org_id"

dashboard = meraki.DashboardAPI(api_key)

# Raises AttributeError: 'Appliance' object has no attribute 'getOrganizationApplianceSdwanInternetPolicies'
dashboard.appliance.getOrganizationApplianceSdwanInternetPolicies(organizationId)

# Workaround via requests — confirmed returning HTTP 200, proving the API endpoint
# exists and is accessible, and that the gap is in the SDK library only
response = requests.get(
    f"https://api.meraki.com/api/v1/organizations/{organizationId}/appliance/sdwan/internetPolicies",
    headers={"X-Cisco-Meraki-API-Key": api_key}
)
print(response.status_code)  # 200
print(response.json())

Additional context

SD-WAN internet policies require Advanced (MX Advanced Security) licensing. The absence of a readable GET — particularly at the network scope — creates a practical gap for customers managing mixed license tiers across a large organisation:

  • License compliance auditing — without a network-scoped GET, there is no programmatic way to determine which networks have SD-WAN internet policies configured and therefore require Advanced licensing.
  • Idempotent automation — a read → compare → write pattern is not possible without a GET, so automation must either blindly overwrite existing policy or skip validation entirely.
  • Pre-change validation — automation cannot confirm current state before issuing a PUT.

The org-scoped beta GET partially addresses the audit use case, but does not resolve licensing determination or idempotent automation at the network level.

Requested changes:

  • SDK / generator: Generate getOrganizationApplianceSdwanInternetPolicies from the existing beta spec entry once it graduates to GA, or sooner if the generator supports beta endpoints.
  • API team: Please consider adding GET /networks/{networkId}/appliance/sdwan/internetPolicies to the API spec.

References:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions