WP Manifestindependent plugin directory
manifest / developer / composer-packages

Composer Packages WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA

Composer package management.

★ 0stars
10release downloads
v1.2.0latest · 2mo ago

Install

Download composer-packages.zip From the v1.2.0 release on GitHub, Aug 13, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/epiphyt/composer-packages/releases/download/v1.2.0/composer-packages.zip
Updates itself. It ships its own updater (Update URI header), so new versions appear under Dashboard → Updates.

Manage Composer packages from within WordPress.

REST API

A single REST API route allows registering a package version – and uploading its ZIP file – from outside WordPress, e.g. at the end of a release workflow.

POST /wp-json/composer-packages/v1/packages

The route is implemented as a WP_REST_Controller and behaves like any other WordPress REST API route, including its JSON schema and support for _fields.

Since the plugin serves its own JSON API at the site root, no other REST API route is reachable on the front end – only POST requests to this exact route are passed through to the REST API. The route is therefore neither listed in the REST API index nor discoverable via OPTIONS, and needs to be requested by its full URL. If the site doesn’t use pretty permalinks, use /?rest_route=/composer-packages/v1/packages instead.

Authentication

Authentication uses an application password of a user with the manage_options capability, sent as HTTP basic auth:

Authorization: Basic base64(username:application password)

WordPress only offers application passwords over HTTPS, so the site needs a valid TLS certificate.

Parameters

Parameter Type Required Description
name string yes Name of the product this package belongs to. The product needs to exist in the plugin settings.
version string yes Version of the package, e.g. 1.2.3. May only contain letters, digits, dots, plus signs, underscores and hyphens.
authentication_required boolean no Whether downloading the package requires a license. Defaults to true.
file file no The package ZIP file, sent as multipart/form-data.

The uploaded file gets stored as <name>-v<version>.zip inside the base path of the product, which is where the download route expects it. The name of the uploaded file itself doesn’t matter.

file is optional: if the ZIP file reaches the server another way – e.g. via rsync – the route can be used to only register the package. Without a file, the request may also be sent as application/json.

Registering the same name and version again updates the existing package instead of creating a duplicate, so a workflow can safely be re-run.

Response

201 if the package has been created, 200 if an existing one has been updated:

{
    "authentication_required": true,
    "created": true,
    "file": "/srv/packages/my-plugin-v1.2.3.zip",
    "id": 42,
    "name": "my-plugin",
    "version": "1.2.3"
}

Add _fields to the request to limit the returned properties, e.g. ?_fields=id,file.

Errors are returned in the usual WordPress REST API format, with one of the following codes:

Code Status Reason
composer_packages_not_authenticated 401 No or invalid credentials.
composer_packages_forbidden 403 The user lacks the manage_options capability.
composer_packages_unknown_product 400 There is no product with this name.
composer_packages_invalid_version 400 The version contains invalid characters.
composer_packages_invalid_file 400/413 The upload failed, isn’t a ZIP file, or exceeds the maximum upload file size.
composer_packages_invalid_base_path 400 The base path of the product is unset or invalid.
composer_packages_upload_failed 500 The file could not be stored in the base path.
composer_packages_save_failed 500 The package could not be saved.

Note that uploads are limited by the upload_max_filesize and post_max_size settings of the server.

Usage in a GitHub Action

- name: Publish Composer package
  run: |
    curl --fail-with-body -sS -X POST \
      -u "${{ secrets.COMPOSER_PACKAGES_USER }}:${{ secrets.COMPOSER_PACKAGES_PASSWORD }}" \
      -F "name=${{ github.event.repository.name }}" \
      -F "version=${GITHUB_REF_NAME#v}" \
      -F "authentication_required=true" \
      -F "file=@${{ github.event.repository.name }}.zip" \
      "${{ secrets.COMPOSER_PACKAGES_URL }}/wp-json/composer-packages/v1/packages"

Releases

7 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.2.0 latest
Aug 13, 2026 2mo ago
composer-packages.zip
3
May 24, 2026 5mo ago
composer-packages.zip
0
May 16, 2025 1 year ago
composer-packages.zip
5
Apr 19, 2025 1 year ago
composer-packages.zip
0
Apr 18, 2025 1 year ago
composer-packages.zip
0
Apr 18, 2025 1 year ago
composer-packages.zip
2
Apr 18, 2025 1 year ago
composer-packages.zip
0
A grade

Security

Composer Packages 1.2.0 · audited by WP Registry

No security issues found.

Audited release
1.2.0
Findings
none
Worst severity
—
Content hash
b94a03a210970a74ec1a5bb7…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.