Skip to content

feat(wrapper-generator): complete v1.0 request-body binding - #3722

Open
Joywambui-maina wants to merge 3 commits into
feature/wrapper-module-packagingfrom
feat/bind-request-body-properties
Open

feat(wrapper-generator): complete v1.0 request-body binding#3722
Joywambui-maina wants to merge 3 commits into
feature/wrapper-module-packagingfrom
feat/bind-request-body-properties

Conversation

@Joywambui-maina

Copy link
Copy Markdown

Changes proposed in this pull request

  • Replace primitive-only request-body extraction with exhaustive property classification for the operations the WrapperGenerator emits.
  • Bind referenced Kiota models, enums, collections, formatted scalar types, nullable references, and numeric INF/NaN unions using their generated Kiota member types.
  • Bind schema-less properties as object and convert them to Kiota UntypedValue instances during assignment.
  • Replace the generated -Password and -ForceChangePasswordNextSignIn parameters with the published -PasswordProfile model parameter.
  • Preserve the published SDK's null-omission behavior for untyped values.
  • Add independent omission, coverage, inventory, compilation, and runtime-conversion gates.
  • Document the supported mappings, exclusion policies, scope boundary, and retained zero-population classifications.

Scope

This changes property binding only for operations that already generate. It does not add support for skipped actions, functions, unsupported path segments, or operations without a named request entity.

The operation-inventory gate verifies that this change does not alter which operations generate.

Validation

  • 148 WrapperGenerator tests pass.
  • All 38 v1.0 KiotaCompat specifications were measured.
  • The omission oracle reports zero failures across 2,214 generated body-writing cmdlets.
  • The coverage sweep reports zero unbound properties among operations that generate.
  • All 35 modules that produce wrapper manifests build and import successfully.
  • Runtime checks cover typed models, enums, Kiota Date, and 19 schema-less value-conversion cases.
  • The generated operation inventory is unchanged by the body-binding work.

Dependency

This PR is intentionally based on feature/wrapper-module-packaging so reviewers see only the 24 files belonging to request-body binding. After #3698 merges into powershell-v3, this PR will be retargeted to powershell-v3.

Closes #3707

Request bodies bound only top-level primitives, so 4,466 property
occurrences across the v1.0 specs had no parameter. Every shape the
classifier reaches now binds: referenced models and enums, formatted
strings, schema-less UntypedNode values (converted on assignment, nulls
dropped to match the published SDK's AddIf), and the numeric INF/NaN
union. The invented -Password pair is replaced by the published
-PasswordProfile. New gates verify it - omission oracle, coverage sweep,
inventory diff, runtime conversions: 0 unbound across all 38 specs, 35
modules build and import, 148 tests. The pre-existing naming-parity gap
is tracked separately.
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