microsoftgraph / microsoftgraph/msgraph-sdk-python

microsoft.graph.onPremisesPublishing wrong serialization

Open
#1,542 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status:waiting-for-triage type:bug
Dominant language
Python
Stars
630
Forks
96
Avg merge
15h 20m
Merged PRs (30d)
3

Description

Describe the bug

Same bug as in the PHP SDK from 2025

https://github.com/microsoftgraph/msgraph-beta-sdk-php/issues/356


from msgraph_beta import GraphServiceClient as BetaClient
from msgraph_beta.generated.models.application import Application as Application
from msgraph_beta.generated.models.on_premises_publishing import OnPremisesPublishing
from msgraph_beta.generated.models.external_authentication_type import ExternalAuthenticationType

request_body = Application(
    on_premises_publishing = OnPremisesPublishing(
        external_authentication_type=ExternalAuthenticationType.Passthru,
        internal_url="http://localhost:65001",
        external_url="https://whatever",
        is_http_only_cookie_enabled=False,
        is_on_prem_publishing_enabled=True,
        is_persistent_cookie_enabled=False,
        is_secure_cookie_enabled=False,
        is_state_session_enabled=False,
        is_translate_host_header_enabled=False,
        is_translate_links_in_body_enabled=False,
        is_backend_certificate_validation_enabled=False
    ),
)

from kiota_serialization_json.json_serialization_writer import JsonSerializationWriter
writer = JsonSerializationWriter()
request_body.serialize(writer)
print(writer.get_serialized_content().decode('utf-8'))

Output:

{"@odata.type": "#microsoft.graph.application", "onPremisesPublishing": {"externalAuthenticationType": "passthru", "externalUrl": "https://whatever", "internalUrl": "http://localhost:65001", "isBackendCertificateValidationEnabled": false, "isHttpOnlyCookieEnabled": false, "isOnPremPublishingEnabled": true, "isPersistentCookieEnabled": false, "isSecureCookieEnabled": false, "isStateSessionEnabled": false, "isTranslateHostHeaderEnabled": false, "isTranslateLinksInBodyEnabled": false}}

await beta_client.applications.by_application_id(app.application.id).patch(request_body) then fails with

        APIError
        Code: 400
        message: None
        error: MainError(additional_data={}, code='InvalidJson_BadRequest', details=None, inner_error=InnerError(additional_data={}, client_request_id='xxxx', date=datetime.datetime(2026, 7, 10, 8, 49, 27), odata_type=None, request_id='xxxx'), message='Valid JSON content expected.', target=None)
Expected behavior

proper error message and properly serialized data sent to the backend

How to reproduce

see above

SDK Version

1.59.0

Latest version known to work for scenario above?

No response

Known Workarounds

        request_body = BetaApplication(
            additional_data = {
                "microsoft.graph.onPremisesPublishing": {
                    "@odata.type": "#microsoft.graph.onPremisesPublishing",
                    "externalAuthenticationType": "passthru",
                    "internalUrl": "http://localhost:65001",
                    "externalUrl": EXTERNAL_URL,
                    "isHttpOnlyCookieEnabled": False,
                    "isOnPremPublishingEnabled": True,
                    "isPersistentCookieEnabled": False,
                    "isSecureCookieEnabled": False,
                    "isStateSessionEnabled": False,
                    "isTranslateHostHeaderEnabled": False,
                    "isTranslateLinksInBodyEnabled": False,
                    "isBackendCertificateValidationEnabled": False
                }
            }
        )
Debug output

No response

Configuration

No response

Other information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the generated Application and OnPremisesPublishing models and the JsonSerializationWriter used in the reproduction. Run the provided serialization example and compare its onPremisesPublishing output with the additional_data workaround. Done means the SDK emits JSON accepted by the backend and the patch request no longer returns InvalidJson_BadRequest.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.