Send application/json content type on Store submission commit#151
Merged
Conversation
The Ingestion API rejects the submission commit POST with 'Only JSON content is accepted' (target: mediaType) unless the request advertises a JSON content type. The commit carries no body, so PowerShell was sending no Content-Type header at all. Passing -ContentType 'application/json' sends the header with Content-Length 0 and satisfies the API's media-type check. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The latest release (run 28731766511, v1.2.6) got further than before — the
fileStatus-based cleanup fix (#149) correctly marked the stale packages and thePUTsucceeded — but thestore-submitjob then failed at the commit step with:{ "message": "Only JSON content is accepted", "source": "Ingestion Api", "target": "mediaType" }Root cause
The commit call is a bodyless
POST .../submissions/{id}/commit. Because there was no-Body, PowerShell sent the request with noContent-Typeheader, and the DevCenter Ingestion API rejects the commit unless it advertisesapplication/json.Fix
Pass
-ContentType "application/json"on the commitPOST. Verified against a header-echo endpoint that this sendsContent-Type: application/jsonwithContent-Length: 0on a bodyless request in PowerShell 7 (thepwshused by the runner), which is exactly what the API wants.Progression of the store fixes
fileStatus == "Uploaded"(not version) so the new bundle isn't deleted → this made thePUTsucceedcommitis acceptedThis is the last step in the flow that hadn't yet been exercised, since prior runs failed before reaching a successful commit.