A Node.js CLI tool to upload and publish Microsoft Edge extensions using the Edge Add-ons API v1.1.
- π Upload extension packages (.zip) to Edge Add-ons
- π Check upload status with progress tracking
- π’ Publish submissions to the store
- β Check publishing status
- π Automated workflow (upload β wait β publish)
- π» Simple CLI interface
- π Secure credential management via environment variables
Before using this tool, you need:
- Partner Center Account: Sign in to Partner Center
- API Credentials:
- Go to Microsoft Edge > Publish API
- Click "Enable" for the new experience (v1.1)
- Click "Create API credentials"
- Note down your Client ID and API Key
- Product ID:
- Go to Microsoft Edge > Overview
- Select your extension
- Copy the Product ID from the Extension Identity section
npm install- Copy the example environment file:
cp .env.example .env- Edit
.envand add your credentials:
CLIENT_ID=your-client-id-here
API_KEY=your-api-key-here
PRODUCT_ID=your-product-id-hereUpload a .zip package to update your extension:
npm start upload path/to/your-extension.zipOr with options:
npm start upload path/to/your-extension.zip --product-id <id> --client-id <id> --api-key <key>Check the status of an upload operation:
npm start upload-status <operation-id>Publish the current draft submission:
npm start publishWith optional notes for certification:
npm start publish --notes "Fixed bugs and improved performance"Check the status of a publish operation:
npm start publish-status <operation-id>Upload and automatically publish when ready:
npm start workflow path/to/your-extension.zip --notes "Version 1.2.0 release"This command will:
- Upload the package
- Wait for upload to complete
- Publish the submission
- Wait for publishing to complete
--client-id <id>: Override CLIENT_ID from .env--api-key <key>: Override API_KEY from .env--product-id <id>: Override PRODUCT_ID from .env--endpoint <url>: Override API_ENDPOINT from .env
upload
--wait: Wait for upload to complete (polls status)
publish
--notes <text>: Notes for certification team
workflow
--notes <text>: Notes for certification team--retry-limit <number>: Max retries for status checks (default: 10)--retry-delay <seconds>: Delay between retries (default: 5)
npm start upload ./my-extension.zipnpm start upload ./my-extension.zip \
--client-id "your-client-id" \
--api-key "your-api-key" \
--product-id "your-product-id"npm start upload ./my-extension.zip --waitnpm start workflow ./my-extension.zip \
--notes "Bug fixes and UI improvements" \
--retry-limit 20 \
--retry-delay 10202 Accepted: Operation started successfully200 OK: Operation completed successfully400 Bad Request: Invalid request parameters401 Unauthorized: Invalid API credentials404 Not Found: Product or operation not found500 Internal Server Error: Server error
InProgress: Upload is being processedSucceeded: Upload completed successfullyFailed: Upload failed
InProgress: Publishing is in progressSucceeded: Successfully publishedFailed: Publishing failed
- Verify your CLIENT_ID and API_KEY in .env
- Ensure you've enabled the v1.1 API in Partner Center
- Verify your PRODUCT_ID is correct
- Check that the extension exists in your Partner Center account
- Ensure the .zip file is valid
- Check that manifest.json is present
- Verify the package meets Edge extension requirements
MIT