Skip to content

fix: map fourteen response fields the API returns - #414

Merged
danielabbatt merged 1 commit into
mainfrom
fix/map-observed-nested-fields-v2
Sep 9, 2026
Merged

danielabbatt merged 1 commit into
mainfrom
fix/map-observed-nested-fields-v2

Conversation

@danielabbatt

Copy link
Copy Markdown
Contributor

Why this exists

#413 was merged into its base branch fix/map-observed-scalar-fields rather than into main, and #412 had already merged to main a minute earlier — so the nested-object work never reached main. This is that commit cherry-picked onto current main, with the changelog reworked.

What

Adds the seven nested response objects from the same unmapped-member export as #412. Callers who set JsonMissingMemberHandling.ThrowOnError were getting a failed deserialization rather than an ignored field.

Field Type Access Source
TwoPointFourGhzSettings.Dot11ax TwoPointFourGhzSettingsDot11ax? ReadWrite v1.74.0 spec, request + response
FiveGhzSettings.Dot11ax FiveGhzSettingsDot11ax? ReadWrite v1.74.0 spec, request + response
SwitchPort.PerpetualPoe SwitchPortPerpetualPoe? ReadUpdate v1.74.0 spec, request + response
SwitchPort.FastPoe SwitchPortFastPoe? ReadUpdate v1.74.0 spec, request + response
NetworkApplianceSsidRadiusServer.Radsec NetworkApplianceSsidRadiusServerRadsec? Read Observed only
Admin.OtherOrganizationAccounts AdminOtherOrganizationAccounts? Read Observed only
VpnBgp.Ipv6 VpnBgpIpv6? Read Observed only
VpnBgp.TunnelDownTermination VpnBgpTunnelDownTermination? Read Observed only

Ten new classes back them, each named after its owner in line with the existing SwitchPortDot3az / ConfigTemplateSwitchProfilePortDot3az split rather than sharing one enabled-only type.

The spec also marks axEnabled deprecated in favour of dot11ax.enabled on both bands, which the XML docs now say. No behaviour change — AxEnabled stays in place.

Changelog

The 1.70.135 and 1.70.136 sections are merged into a single 1.70.138 section covering all fourteen fields. The old labels no longer matched anything buildable: merge commits pushed main to 1.70.136 while its section said 1.70.135. 1.70.138 is what main will build as once this merges with a merge commit (this commit alone is 1.70.137).

Verification

dotnet build Meraki.Api.slnx -c Debug      Build succeeded, 0 Error(s), 6 pre-existing CS0618 warnings
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

Clean cherry-pick, no conflicts. Every source diff is pure addition (0 deletions), so per-file BOMs are untouched; the CHANGELOG diff is the section merge, kept CRLF.

Cleanup

fix/map-observed-scalar-fields still holds #413's merge commit and can be deleted once this lands.

Notes

  • SixGhzSettings has no dot11ax in the spec or in any observed response, so it is untouched.
  • SwitchPort.ActiveVlans is mapped ReadUpdate while the config-template equivalent added in fix: map seven scalar response fields the API returns #412 is Read. Neither is in the spec; still worth a follow-up decision.

An unmapped-member export gathered from live organizations found fourteen
response fields with no model property. Callers who set
JsonMissingMemberHandling.ThrowOnError were getting a failed
deserialization rather than an ignored field.

Seven are nested objects needing new model classes:

  TwoPointFourGhzSettings.Dot11ax and FiveGhzSettings.Dot11ax
  SwitchPort.PerpetualPoe and .FastPoe
  NetworkApplianceSsidRadiusServer.Radsec
  Admin.OtherOrganizationAccounts
  VpnBgp.Ipv6 and .TunnelDownTermination

Ten new classes back them, named after their owners in line with the
existing SwitchPortDot3az / ConfigTemplateSwitchProfilePortDot3az split.

Dot11ax on both bands and both PoE objects are in the v1.74.0 OpenAPI
spec on request bodies as well as responses, so Dot11ax is read/write and
the PoE objects are read/update, matching their endpoints. The spec also
marks axEnabled deprecated in favour of dot11ax.enabled on both bands,
which the XML docs now say. Radsec, OtherOrganizationAccounts, Ipv6 and
TunnelDownTermination appear nowhere in the spec and are mapped read-only
from the observed responses.

MissingMemberNestedFieldTests covers all seven, deserializing the
observed payloads with MissingMemberHandling.Error; the CI step added
alongside the scalar mappings runs them.

The other seven are the scalars already on main; their changelog section
is merged into this one so the two batches ship as a single 1.70.138
entry rather than as labels that no longer match the built version.
@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 1 medium

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

Results:
1 new issue

Category Results
Complexity 1 medium

View in Codacy

🟢 Metrics 8 complexity

Metric Results
Complexity 8

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.

@danielabbatt
danielabbatt merged commit 84a0c39 into main Sep 9, 2026
4 of 5 checks passed
@danielabbatt
danielabbatt deleted the fix/map-observed-nested-fields-v2 branch September 9, 2026 13:12
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