Plugin marketplace `marketplace.git` returns 404 on all git paths, though the plugin is registered and readable via the data API (eastus)

Open
#80 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
azure, git, powershell
Domain
api, cloud

Research direction

Start by reproducing the marketplace.git info/refs, HEAD, and plugin paths in East US with the documented token, comparing them with the /plugins data API response. Check both HTTP/2 and authenticated HTTP/1.1 behavior, including the git client path. Done means the generated marketplace repository is discoverable and cloneable over git's default HTTP/1.1, while the existing plugin remains readable.

Written by the indexing model from the issue text.

Description

Bug Investigating

Description

The plugin marketplace endpoint is enabled and a plugin is registered and fully readable through the data API, but the generated marketplace.git repository returns 404 on every git path — so git clone / /plugin marketplace add cannot discover any refs. The repo appears to never be generated/served, even though the plugin exists.

This looks like the same family as #79 (data-plane 404 on the MCP /v0.1/servers endpoint, fixed "to all regions" on 2026-06-25) — but on the plugin-marketplace surface, which is still 404ing in East US.

Environment

  • API Center, region East US (<service>.data.eastus.azure-apicenter.ms)
  • Plugin marketplace endpoint: enabled (Data API settings)
  • Portal access method: Microsoft Entra ID
  • Inventory: 1 MCP server + 6 skills + 1 plugin bundling all 7
  • Token used for tests: aud=https://azure-apicenter.net, scp=Data.Read.All (obtained via the managed-portal sign-in)

Reproduction steps

  1. Enable Plugin marketplace endpoint (Data API settings) with a registered plugin that bundles skills + an MCP server.
  2. Acquire a valid azure-apicenter.net / Data.Read.All delegated token.
  3. Confirm the plugin is readable via the data API (works — see below).
  4. Request the marketplace git paths with the same token (over HTTP/2 — see HTTP note):
GET …/workspaces/default/plugins/marketplace.git/info/refs?service=git-upload-pack   -> 404
GET …/workspaces/default/plugins/marketplace.git/HEAD                                 -> 404
GET …/workspaces/default/plugins/marketplace.git/.claude-plugin/marketplace.json      -> 404
GET …/workspaces/default/plugins/marketplace.git                                       -> 400 "The gitPath field is required."
GET …/workspaces/default/plugins                                                       -> 200  (returns the plugin)

Expected behavior

git clone …/marketplace.git (and the info/refs discovery) returns the generated marketplace repo — marketplace/ with .claude-plugin/, .github/, and a folder per plugin — as documented in Enable Discovery of Plugins from API Center Plugin Marketplace.

Actual behavior

All git paths return 404 (application/problem+json), so git clone / /plugin marketplace add fails with "repository not found". The data API returns the plugin correctly, so the plugin is registered — the git repo is simply not generated/served.

Sample 404 body:

{"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-455a74e4…"}

The data API returns the plugin fine (proving registration is correct):

{"value":[{"name":"client-insights","version":"1.0.0","resources":[
  {"resourceId":"/workspaces/default/skills/<skill-1>","kind":"skill"},
  … 5 more skills …,
  {"resourceId":"/workspaces/default/apis/<mcp-server>","kind":"mcp"}]}]}

traceIds (East US)

00-455a74e436d1…
00-4ffc7ae760d1…
00-f7160ce7122c…
00-fd4e3ffe362280b2d0b325d8507dc4be-7a0b988ebfd5bdac-00

(Subscription/tenant available on request.)

What we already ruled out

  • Not auth — 404 (not 401/403); the same token reads …/plugins with 200.
  • Not config — endpoint enabled, plugin bundle complete (7 resources), visibility open, portal Entra access configured + published. Per the docs there is no separate publish/sync/RBAC/MCP-endpoint step.
  • Not transient — reproduced repeatedly over ~1.5h with fresh tokens.
  • Toggle off→save→on→save the marketplace endpoint: no effect (still 404).
  • Persists after #79's fix landed.

Secondary issue — authenticated HTTP/1.1 requests return empty-body 500

Independently: authenticated requests over HTTP/1.1 (git's default, plus curl / PowerShell Invoke-WebRequest / python urllib) return an empty-body 500 (no x-ms-request-id) for all data-plane paths. The same token over HTTP/2 returns correct codes (200 for …/plugins, 404 for the marketplace). Unauthenticated HTTP/1.1 cleanly 401s — it's the presence of an Authorization header over HTTP/1.1 that 500s.

This will block git clone even once the 404 is fixed (git negotiates HTTP/1.1 by default), so it's worth addressing alongside. Workaround: git config http.version HTTP/2.

Dominant language
PowerShell
Stars
45
Forks
21
Avg merge
21m
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

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.

More from Azure/api-center

All issues in Azure/api-center

Similar issues

More Backend & API Design issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.