Skip to content

Maven API

DETAILS: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

This is the API documentation for Maven Packages.

WARNING: This API is used by the Maven package manager client and is generally not meant for manual consumption.

For instructions on how to upload and install Maven packages from the GitLab package registry, see the Maven package registry documentation.

NOTE: These endpoints do not adhere to the standard API authentication methods. See Maven package registry documentation for details on which headers and token types are supported. Undocumented authentication methods might be removed in the future.

Download a package file at the instance-level

Download a Maven package file:

GET packages/maven/*path/:file_name
Attribute Type Required Description
path string yes The Maven package path, in the format <groupId>/<artifactId>/<version>. Replace any . in the groupId with /.
file_name string yes The name of the Maven package file.
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar"

To write the output to file:

curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar" >> mypkg-1.0-SNAPSHOT.jar

This writes the downloaded file to mypkg-1.0-SNAPSHOT.jar in the current directory.

Download a package file at the group-level

Download a Maven package file:

GET groups/:id/-/packages/maven/*path/:file_name
Attribute Type Required Description
path string yes The Maven package path, in the format <groupId>/<artifactId>/<version>. Replace any . in the groupId with /.
file_name string yes The name of the Maven package file.
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/groups/1/-/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar"

To write the output to file:

curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/groups/1/-/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar" >> mypkg-1.0-SNAPSHOT.jar

This writes the downloaded file to mypkg-1.0-SNAPSHOT.jar in the current directory.

Download a package file at the project-level

Download a Maven package file:

GET projects/:id/packages/maven/*path/:file_name
Attribute Type Required Description
path string yes The Maven package path, in the format <groupId>/<artifactId>/<version>. Replace any . in the groupId with /.
file_name string yes The name of the Maven package file.
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar"

To write the output to file:

curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar" >> mypkg-1.0-SNAPSHOT.jar

This writes the downloaded file to mypkg-1.0-SNAPSHOT.jar in the current directory.

Upload a package file

Upload a Maven package file:

PUT projects/:id/packages/maven/*path/:file_name
Attribute Type Required Description
path string yes The Maven package path, in the format <groupId>/<artifactId>/<version>. Replace any . in the groupId with /.
file_name string yes The name of the Maven package file.
curl --request PUT \
     --upload-file path/to/mypkg-1.0-SNAPSHOT.pom \
     --header "Private-Token: <personal_access_token>" \
     "https://gitlab.example.com/api/v4/projects/1/packages/maven/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.pom"