Skip to content

Regression: CreateLinkPostRequestBody serializes retainInheritedPermissions=false by default starting in 1.59.2 #1563

Open

Description

Describe the bug

Context

I was using the CreateLinkPostRequestBody to create some link to my driveItems, and it was working properly, but at some point I noticed that some of these files would not be visible to some users anymore (inherited permissions were lost).

The "bug"

Starting with msgraph-sdk-python 1.59.2, CreateLinkPostRequestBody serializes: { "retainInheritedPermissions": false, "sendNotification": false } when these properties are not explicitly set by the caller.

This changes the behavior of the createLink API. According to the Microsoft Graph documentation, retainInheritedPermissions is optional and the service default when omitted is true .

Expected behavior

I believe that the CreateLinkPostRequestBody default attribute values should follow the defaults of the createLink API.

Thus setting retainInheritedPermissions to true (or unset) for the createLink API if not provided in CreateLinkPostRequestBody.

How to reproduce

test.py

from msgraph.generated.drives.item.items.item.create_link.create_link_post_request_body import CreateLinkPostRequestBody

request_body = CreateLinkPostRequestBody(
    type="view",
    scope="organization"
)
from kiota_serialization_json.json_serialization_writer import JsonSerializationWriter
writer = JsonSerializationWriter()


request_body.serialize(writer)
print(writer.get_serialized_content().decode('utf-8'))

Results

version 1.58.0

{
"scope": "organization",
"type": "view"
}

This will let the createLink API default the retainInheritedPermissions to True.

version 1.59.2 and 1.60.0

{
"retainInheritedPermissions": false,
"scope": "organization",
"sendNotification": false,
"type": "view"
}

This will remove existing permissions.

SDK Version

1.59.2

Latest version known to work for scenario above?

1.58.0

Known Workarounds

Explicitly adding the retain_inherited_permissions = True

request_body = CreateLinkPostRequestBody(
    retain_inherited_permissions=True,
    type="view",
    scope="organization"
)

Debug output

Click to expand log ```
</details>


### Configuration

Ubuntu 22.04
x86_64

### Other information

_No response_

Activity

  1. basitalisandhu commented on Oct 16, 2026

    @basitalisandhu

    I traced where this comes from. It is not specific to 1.59.2. The July regeneration (5e7e5d3, "update request builders and models") started emitting OpenAPI default: false values as dataclass defaults, and the v1.0 description in msgraph-metadata declares retainInheritedPermissions and sendNotification with default: false. So the generated field is now retain_inherited_permissions: Optional[bool] = False (create_link_post_request_body.py#L20-L22) and the serializer always writes it. Earlier builds defaulted to None, so the property was left out.

    On 1.64.0, CreateLinkPostRequestBody(type="view", scope="organization") serializes to:

    {"retainInheritedPermissions": false, "scope": "organization", "sendNotification": false, "type": "view"}

    Workaround until it is fixed: pass None explicitly, which serializes to {"scope": "organization", "type": "view"}:

    CreateLinkPostRequestBody(type="view", scope="organization",
                              retain_inherited_permissions=None, send_notification=None)

    The same default appears in the other create_link request bodies (list items under drives, groups, sites and shares) and in invite_post_request_body. Since these files are generated, the lasting fix probably belongs in the metadata or the generator settings rather than this repo.

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

    status:waiting-for-triageAn issue that is yet to be reviewed or assignedtype:bugA broken experience

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions