Generic Package Registry

Publish generic files, like release binaries or other output, for your user or organization.

Authenticate to the package registry

To authenticate to the Package Registry, you need to provide custom HTTP headers or use HTTP Basic authentication.

Publish a package

To publish a generic package perform a HTTP PUT operation with the package content in the request body. You cannot publish a file with the same name twice to a package. You must delete the existing package version first.

PUT https://forgejo.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
ParameterDescription
ownerThe owner of the package.
package_nameThe package name. It can contain only lowercase letters (a-z), uppercase letter (A-Z), numbers (0-9), dots (.), hyphens (-), pluses (+), or underscores (_).
package_versionThe package version, a non-empty string without trailing or leading whitespaces.
file_nameThe filename. It can contain only lowercase letters (a-z), uppercase letter (A-Z), numbers (0-9), dots (.), hyphens (-), pluses (+), or underscores (_).

Example request using HTTP Basic authentication:

curl --user your_username:your_password_or_token \
     --upload-file path/to/file.bin \
     https://forgejo.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin

If you are using 2FA or OAuth use a personal access token instead of the password.

The server responds with the following HTTP Status codes.

HTTP Status CodeMeaning
201 CreatedThe package has been published.
400 Bad RequestThe package name and/or version and/or file name are invalid.
409 ConflictA file with the same name exist already in the package.

Download a package

To download a generic package perform a HTTP GET operation.

GET https://forgejo.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
ParameterDescription
ownerThe owner of the package.
package_nameThe package name.
package_versionThe package version.
file_nameThe filename.

The file content is served in the response body. The response content type is application/octet-stream.

Example request using HTTP Basic authentication:

curl --user your_username:your_token_or_password \
     https://forgejo.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin

The server responds with the following HTTP Status codes.

HTTP Status CodeMeaning
200 OKSuccess
404 Not FoundThe package or file was not found.

Delete a package

To delete a generic package perform a HTTP DELETE operation. This will delete all files of this version.

DELETE https://forgejo.example.com/api/packages/{owner}/generic/{package_name}/{package_version}
ParameterDescription
ownerThe owner of the package.
package_nameThe package name.
package_versionThe package version.

Example request using HTTP Basic authentication:

curl --user your_username:your_token_or_password -X DELETE \
     https://forgejo.example.com/api/packages/testuser/generic/test_package/1.0.0

The server responds with the following HTTP Status codes.

HTTP Status CodeMeaning
204 No ContentSuccess
404 Not FoundThe package was not found.

Delete a package file

To delete a file of a generic package perform a HTTP DELETE operation. This will delete the package version too if there is no file left.

DELETE https://forgejo.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{filename}
ParameterDescription
ownerThe owner of the package.
package_nameThe package name.
package_versionThe package version.
filenameThe filename.

Example request using HTTP Basic authentication:

curl --user your_username:your_token_or_password -X DELETE \
     https://forgejo.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin

The server responds with the following HTTP Status codes.

HTTP Status CodeMeaning
204 No ContentSuccess
404 Not FoundThe package or file was not found.