Skip to content

Add new PURL type: 'edge-extension' - #928

Open
annextuckner wants to merge 1 commit into
package-url:mainfrom
annextuckner:add-edge-extension-type
Open

Add new PURL type: 'edge-extension'#928
annextuckner wants to merge 1 commit into
package-url:mainfrom
annextuckner:add-edge-extension-type

Conversation

@annextuckner

@annextuckner annextuckner commented Jul 20, 2026

Copy link
Copy Markdown

This PR registers a new PURL type for Microsoft Edge Browser Extensions (Add-ons), as distributed via the Microsoft Edge Add-ons store. It follows the recently merged chrome-extension type (#522) very closely, and answers the questions from the Register new PURL type template below.

  • Why is this new PURL type needed?
  • What are the PURL component level definitions?
  • What input do you have from the relevant package ecosystem/community?
  • Are there any open questions or concerns about this new PURL type?

Why is this new PURL type needed?

Browser extensions are installable, versioned software packages and an increasingly important software supply chain surface. The chrome-extension type was registered in #522; the Microsoft Edge Add-ons store is a separate marketplace with its own catalog, listings, and review process — the same extension ID can exist in one store and not the other, and versions can differ between stores — so identifying an Edge Add-on requires its own PURL type even though the underlying formats match Chrome's.

What are the PURL component level definitions?

Full definition in types/edge-extension-definition.json, with generated docs and test cases included in this PR. Edge extensions share Chrome's CRX packaging, extension ID format, and manifest version format, so the definitions intentionally mirror chrome-extension.

Component Definition
type edge-extension (descriptive <browser>-extension naming per #522 / #673 feedback)
namespace Prohibited — there is no namespace
name Required. The extension ID: 32 characters in the range a-p (base16-encoded with letters instead of hex digits), same format as Chrome extension IDs; case insensitive. It is the last path segment of the store page URL. permitted_characters: ^[a-p]{32}$
version Optional (omitted = latest). Semver-like, 1–4 dot-separated numbers, same manifest version format as Chrome. permitted_characters: ^\d+(\.\d+){0,3}$
qualifiers / subpath None defined
repository https://microsoftedge.microsoft.com/addons — no officially documented API; known data sources are the product details endpoint at https://microsoftedge.microsoft.com/addons/getproductdetailsbycrxid/<extension-id> and an updatecheck-style endpoint at https://edge.microsoft.com/extensionwebstorebase/v1/crx following the same Omaha/updater protocol as the Chrome Web Store.

Example PURLs (all real, verified against the store's product details endpoint):

  • pkg:edge-extension/odfafepnkmbhccpbejgmiehpchacaeak@1.72.2 (uBlock Origin)
  • pkg:edge-extension/cimighlppcgcoapaliogpjjdehbnofhn@2026.714.1952 (uBlock Origin Lite)
  • pkg:edge-extension/nffknjpglkklphnibdiadeeeeailfnog@25.5.0 (uBlock)
  • pkg:edge-extension/odfafepnkmbhccpbejgmiehpchacaeak (latest)

What input do you have from the relevant package ecosystem/community?

Are there any open questions or concerns about this new PURL type?

  • Undocumented store API: like the Chrome Web Store, the Edge Add-ons store has no officially documented API and only exposes the latest version publicly; the known endpoints are documented in the definition's notes (same approach Add new PURL type: 'chrome-extension' #522 took for Chrome's updatecheck API).
  • Same ID space as Chrome, different catalogs: an extension ported from Chrome may keep the same 32-character ID or get a new one when published to the Edge store, which is exactly why the store is captured in the PURL type rather than a qualifier.

Checks

Docs and purl-types-index.json regenerated with make gendocs; make checkjson passes; roundtrip canonicalization of all valid test cases verified with packageurl-python.

A sibling PR (#927) adds firefox-extension for addons.mozilla.org.

🤖 Generated with Claude Code

Add a type definition, tests, and generated documentation for Microsoft
Edge Browser Extensions (Add-ons). Edge extensions share the CRX
packaging, extension ID, and version formats of the 'chrome-extension'
type (package-url#522).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mjherzog

Copy link
Copy Markdown
Member

@annextuckner Thank you for the PR and adapting the "Register new PURL type" template for the PR. We especially appreciate that you provided some failing tests.
We do not require a formal sign-off from Microsoft but it would be helpful if you could contact someone at the Microsoft Edge team who can review the proposal and document that there are no objections (i.e. lazy consensus).

@jkowalleck jkowalleck added the PURL type new Register a new PURL type label Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PURL type new Register a new PURL type

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants