Skip to content

Set request body to optional when all properties are optional #582

Open

Description

Related to microsoftgraph/msgraph-sdk-java#2163 and microsoftgraph/msgraph-sdk-dotnet#2671 (comment)

In a scenario where all the properties in the request body are optional such as an odata action with all parameters being optional, we should set the requestBody.required = false in the generated openApi description otherwise explictly set it to true.

https://spec.openapis.org/oas/v3.0.3.html#fixed-fields-10

This will unlock the generation of request body parameters in the SDKs as optional parameters in the builders to prevent breaking changes in scenarios where optional parametes are added.

Activity

  1. added
    priority:p1High priority but not blocking. Causes major but not critical loss of functionality SLA <=7days
    on Sep 20, 2024
  2. andrueastman commented on Sep 25, 2024

    @andrueastman
    ContributorAuthor

    Once this is fixed and released, we should revert this PR.
    microsoftgraph/msgraph-metadata#697

  3. andrueastman commented on Oct 2, 2024

    @andrueastman
    ContributorAuthor

    Updated the description here. Should be Odata action not function. Functions do not have request bodies as the parameters are in the path.

  4. irvinesunday commented on Oct 2, 2024

    @irvinesunday
    Contributor

    Also, point of note is that, if requestBody.required = false the OAS does not emit the required property in the requestBody schema.

  5. andrueastman commented on Oct 2, 2024

    @andrueastman
    ContributorAuthor

    According to the spec.

    Determines if the request body is required in the request. Defaults to false.

    So what we should do is set it to true when required parameters are present...

  6. irvinesunday commented on Oct 3, 2024

    @irvinesunday
    Contributor

    Trying to retrieve the annotations in-lined in the Action parameters fails to retrieve the Org.OData.Core.V1.OptionalParameter annotation using the extensions from the Edm lib.

    var annotations =  model.FindVocabularyAnnotationsIncludingInheritedAnnotations(parameter);
    <Parameter Name="transitive" Type="Edm.Boolean" Nullable="false">
      <Annotation Term="Org.OData.Core.V1.OptionalParameter" />
    </Parameter>

    Checking with the OData team to check for its support.

  7. zaaj commented on Dec 23, 2025

    @zaaj

    So, Gavin Barron (@gavinbarron) mentions in #3318 that this issue is related to the Restore-MgBetaDirectoryDeletedItem no longer having a -BodyParameter option, rendering all optional body parameters un-usable.

    Gavin also mentioned MANY API calls all got optional BodyParameters added to them - does this mean ALL of the Powershell SDK auto-generated commands for those APIs are now broken in the sense that they have no -bodyparameter option?

  8. gavinbarron commented on Jan 15, 2026

    @gavinbarron
    Contributor

    Adam Johnson (@zaaj) the cmdlets that are impacted by this are those which originally did not have any body parameters and had them introduced.

    And for directory scenarios, that's quite a few. I'm currently working on the feature that is required here before we can look at getting a fix into the Microsoft Graph SDKs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:p1High priority but not blocking. Causes major but not critical loss of functionality SLA <=7days

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions