Skip to content

feat(wrapper-generator): generate remaining OData operation shapes - #3724

Open
Joywambui-maina wants to merge 2 commits into
feat/bind-request-body-propertiesfrom
feat/wrapper-operation-shapes
Open

feat(wrapper-generator): generate remaining OData operation shapes#3724
Joywambui-maina wants to merge 2 commits into
feat/bind-request-body-propertiesfrom
feat/wrapper-operation-shapes

Conversation

@Joywambui-maina

Copy link
Copy Markdown

Fixes #

Changes proposed in this pull request

  • Generate media/content downloads (78 routes: /content, /logo, /favicon, attachmentsArchive), completing the shape list in WrapperGenerator: generate OData actions, functions, and remaining operation shapes #3709 — every shape it names now emits, compiles and imports
  • Stamp each cmdlet with a [GraphRoute(method, path)] attribute so the parity gate reads the operation's route from the compiled assembly instead of reconstructing it from generated C#. Reconstruction is lossy for parameterized functions and wrong for namespace-qualified actions, so the gate had been excluding 1,669 cmdlets from comparison — it now excludes none
  • Order Count before the cast suffix on /$count routes, matching the published SDK (Get-MgUserMemberOfCountAsGroup, not …AsGroupCount) — 126 cmdlets
  • Drop the -OutFile parameter from content writes whose response is an entity rather than a stream; it was declared but never read on 56 cmdlets
  • Collapse three parallel OData segment tables into one, making "named ⟺ emittable" structural rather than a comment asking three tables to stay in sync
  • Refresh the generator docs against measured figures

38/38 modules generate and build · 184/184 unit tests · 11,737 cmdlets

Note on diff size: ~76k of the insertions are the derived parity data (parity-input-ledger.v1.0.csv and the three parity-*.json), which are generated and pinned by ParityDataDriftTests. The hand-written code and docs are roughly 2,000 lines.

Depends on: feat/bind-request-body-propertiespowershell-v3 doesn't yet have DerivedCollisionResolutions.cs or the collision data this builds on, so a branch based there wouldn't compile. Retarget once the parent merges.

- Emit media/content downloads (78 routes), completing the shape list in #3709
- Stamp each cmdlet with a [GraphRoute] attribute so the parity gate reads the
  operation's route from the compiled assembly rather than reconstructing it from
  generated C#, removing the cast and parameterized-function exclusions that left
  1,669 cmdlets unverified
- Order Count before the cast suffix on /$count routes (126 cmdlets)
- Drop the unusable -OutFile parameter from content writes returning an entity
- Collapse the three parallel OData segment tables into one
- Refresh generator docs against measured figures

38/38 modules generate and build, 184/184 tests.
@Joywambui-maina
Joywambui-maina requested a review from a team as a code owner August 18, 2026 00:42
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