Skip to content

fix: map seven nested response objects the API returns - #413

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

danielabbatt merged 1 commit into
fix/map-observed-scalar-fieldsfrom
fix/map-observed-nested-fields

Conversation

@danielabbatt

Copy link
Copy Markdown
Contributor

What

Stacked on #412base is fix/map-observed-scalar-fields, so merge #412 first, after which this can be retargeted to main.

The same unmapped-member export that found #412's scalars also found seven nested objects with no model property. 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

New classes

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

TwoPointFourGhzSettingsDot11ax, FiveGhzSettingsDot11ax, SwitchPortPerpetualPoe, SwitchPortFastPoe, NetworkApplianceSsidRadiusServerRadsec, AdminOtherOrganizationAccounts, AdminOtherOrganizationAccountsLockout, VpnBgpIpv6, VpnBgpIpv6SinglePeering, VpnBgpTunnelDownTermination.

Access decisions

Dot11ax on both bands and both PoE objects appear in v1.74.0 request bodies as well as responses, so they are writable. The spec also marks axEnabled deprecated in favour of dot11ax.enabled on both bands, which the XML docs now say — no behaviour change, AxEnabled is left in place.

Radsec, OtherOrganizationAccounts, Ipv6 and TunnelDownTermination appear nowhere in the spec and are mapped read-only from the observed responses.

Tests

New Meraki.Api.Test.Data.MissingMemberNestedFieldTests, same approach as #412: observed payloads (identifying values replaced) deserialized with MissingMemberHandling.Error. Run by the CI step #412 adds.

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

Notes

The same sweep of unmapped-member reports that found the scalars in
1.70.135 also found seven nested objects with no model property. Callers
who set JsonMissingMemberHandling.ThrowOnError were getting a failed
deserialization rather than an ignored field:

  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 in
1.70.135 runs them.
@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 cb3d651 into fix/map-observed-scalar-fields Sep 9, 2026
1 check failed
@danielabbatt
danielabbatt deleted the fix/map-observed-nested-fields branch September 9, 2026 12:56
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