Skip to content

chore: track Dashboard API 1.74 and add the model gap diff - #415

Open
danielabbatt wants to merge 4 commits into
mainfrom
chore/update-to-latest-meraki-api
Open

chore: track Dashboard API 1.74 and add the model gap diff#415
danielabbatt wants to merge 4 commits into
mainfrom
chore/update-to-latest-meraki-api

Conversation

@danielabbatt

@danielabbatt danielabbatt commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

What

Two things, no library code changes:

  1. version.json moves from 1.70 to 1.74. v1.74.0 is the latest stable tag in meraki/openapi, published 2026-09-02 (v1.73.0 was 2026-08-05). This resets the Nerdbank.GitVersioning height, so builds jump from 1.70.138 to 1.74.x rather than continuing to 1.70.139. The 1.70.138 section stays in the changelog as history — it is accurate for what main built as at 84a0c39b.

  2. A repeatable model gap diff, .github/skills/meraki-api-update/Find-MissingModelMembers.ps1, plus its checked-in output gap-report-v1.74.0.md.

The bump asserts which spec version the library is measured against. It does not claim every 1.74 endpoint is implemented — the report below is exactly how far off that is.

How the diff works

It reflects over the compiled Refit interfaces, matches each method's verb and path template to a spec operation, then walks every 2xx JSON response schema in parallel with the C# return type, comparing spec property names against [DataMember] names.

Three classes of legitimate mismatch are excluded, because the spec describes them as ordinary properties while the models correctly represent them as open-ended maps or as no payload:

  • Dictionary-typed models — HTTP status-code maps, per-camera-model video settings.
  • Methods declared to return the non-generic Task.
  • Purely numeric property names — latency histogram buckets, HTTP status codes.

Each of those was a false positive observed in a real run before being filtered; without them the count is 234 rather than 155.

What it found against v1.74.0

Measure Count
Refit endpoints in the library 1075
Operations in the v1.74.0 spec 998
Library endpoints matched to a spec operation 861
Library endpoints with no spec match 214
Spec operations not implemented 140
Unmapped response members on existing models 155, across 86 types

118 of the 155 are scalars; 37 objects and 23 arrays need roughly 57 new nested classes alongside them.

Area Members Of which object/array
Organizations 43 22
SM 27 5
Appliance 25 13
Wireless 19 6
General 10 1
Camera 8 1
CellularGateway 7 1
Switch 7 2
Sensor 6 5
LiveTools 2 0
Licensing 1 1

Spot-checked and real: SwitchPort.stpPortFastTrunk, Ssid.campusGateway and .wlanIdentifier, Vlan.sgt, Client.cdp, and SmVppAccount missing 13 of its fields.

Reproduce

pwsh -File .\.github\skills\meraki-api-update\Prepare-MerakiApiUpdate.ps1 -Version 1.74.0
dotnet build Meraki.Api.slnx -c Debug
pwsh -File .\.github\skills\meraki-api-update\Find-MissingModelMembers.ps1 -SpecVersion v1.74.0 -OutCsv gap.csv

Verification

dotnet build Meraki.Api.slnx -c Debug   Build succeeded, 0 Error(s), 6 pre-existing CS0618 warnings
Version of the branch head              1.74.4 (main will be 1.74.5 after a merge commit)
Meraki.Api.Test (Data namespace)        Total: 14, Errors: 0, Failed: 0, Skipped: 0
Meraki.Api.Test (Workflows)             Total: 12, Errors: 0, Failed: 0, Skipped: 0

Merge with a merge commit for the 1.74.5 changelog label to be correct; a squash makes it 1.74.4.

Follow-up

The 155 members land as one PR per product area, largest first, each with its own changelog entry and regression tests.

Notes

  • The 155 is the accumulated gap, not only what 1.71 → 1.74 added. No attempt was made to attribute each member to the release that introduced it.
  • The 214 unmatched library endpoints are not necessarily wrong — some are endpoints Cisco removed or renamed, some are path shapes the normaliser does not line up. They need their own pass; a few may be dead code.
  • SKILL.md now tells the reader to run the diff rather than read the changelog narratively, and warns that a full run finds more than one release introduced.
  • Cisco's What's New page still lists 1.73 as current, while the spec repo has tagged v1.74.0 — flagging in case 1.74 is not meant to be public yet.

version.json moves from 1.70 to 1.74, the version of the Dashboard API this
library now tracks. v1.74.0 is the latest stable tag in meraki/openapi,
published 2026-09-02. This resets the Nerdbank.GitVersioning height, so builds
go from 1.70.138 to 1.74.x rather than continuing to 1.70.139.

The bump asserts which spec version the library is measured against, not that
every 1.74 endpoint is implemented. Find-MissingModelMembers.ps1 measures the
actual distance: it reflects over the compiled Refit interfaces, matches each
method's verb and path to a spec operation, and walks every 2xx JSON response
schema in parallel with the C# return type, comparing spec property names
against [DataMember] names. Dictionary-typed models, non-generic Task returns
and purely numeric property names are excluded, because the spec describes
those as ordinary properties while the models correctly represent them as
open-ended maps or as no payload.

Against v1.74.0 it reports 155 unmapped response members across 86 types, 140
spec operations not implemented, and 214 library endpoints matching no spec
path. gap-report-v1.74.0.md is that run, checked in and broken down by product
area so the work can be split into reviewable pull requests. SKILL.md now
points at the script rather than leaving the comparison to a narrative read of
the changelog.
@codacy-production

codacy-production Bot commented Sep 9, 2026

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 2 medium

Alerts:
⚠ 2 issues (≤ 0 issues of at least minor severity)

Results:
2 new issues

Category Results
ErrorProne 2 medium

View in Codacy

AI Reviewer: run a review on demand. To trigger the first review automatically, go to your organization or repository integration settings. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

Find-MissingModelMembers.ps1 compares names one way, so a wrong return type
shows up as a pile of missing members and a misspelt [DataMember] name never
shows up at all. Find-ModelShapeMismatches.ps1 asks the two questions that
cannot: does each 2xx schema's top-level shape agree with the Refit return
type, and is any [DataMember] name absent from the spec but within edit
distance 2 of an unmapped spec property at the same level.

Against v1.74.0 it reports 30 shape mismatches, 17 likely typos, 6 methods
that discard a documented body and 1 that expects a body the spec does not
send. Object-versus-list findings need checking against observed responses,
because the Meraki spec sometimes documents a list endpoint's item rather
than the array.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant