- Download a package file from a group
- Group-level simple API index
- Group level simple API entry point
- Download a package file from a project
- Project-level simple API index
- Project-level simple API entry point
- Upload a package
PyPI API
This is the API documentation for PyPI Packages.
For instructions on how to upload and install PyPI packages from the GitLab package registry, see the PyPI package registry documentation.
Download a package file from a group
Introduced in GitLab 13.12.
Download a PyPI package file. The simple API normally supplies this URL.
GET groups/:id/-/packages/pypi/files/:sha256/:file_identifier
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the group. |
sha256
| string | yes | The PyPI package file’s sha256 checksum. |
file_identifier
| string | yes | The PyPI package file’s name. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz"
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz" >> my.pypi.package-0.0.1.tar.gz
This writes the downloaded file to my.pypi.package-0.0.1.tar.gz
in the current
directory.
Group-level simple API index
Introduced in GitLab 15.1.
Returns a list of packages in the group as an HTML file:
GET groups/:id/-/packages/pypi/simple
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the group. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple"
Example response:
<!DOCTYPE html>
<html>
<head>
<title>Links for Group</title>
</head>
<body>
<h1>Links for Group</h1>
<a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my-pypi-package" data-requires-python="">my.pypi.package</a><br><a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/package-2" data-requires-python="3.8">package_2</a><br>
</body>
</html>
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple" >> simple_index.html
This writes the downloaded file to simple_index.html
in the current directory.
Group level simple API entry point
Introduced in GitLab 13.12.
Returns the package descriptor as an HTML file:
GET groups/:id/-/packages/pypi/simple/:package_name
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the group. |
package_name
| string | yes | The name of the package. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package"
Example response:
<!DOCTYPE html>
<html>
<head>
<title>Links for my.pypi.package</title>
</head>
<body>
<h1>Links for my.pypi.package</h1>
<a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1-py3-none-any.whl#sha256=5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff" data-requires-python=">=3.6">my.pypi.package-0.0.1-py3-none-any.whl</a><br><a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/9s9w01b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2/my.pypi.package-0.0.1.tar.gz#sha256=9s9w011b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2" data-requires-python=">=3.6">my.pypi.package-0.0.1.tar.gz</a><br>
</body>
</html>
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package" >> simple.html
This writes the downloaded file to simple.html
in the current directory.
Download a package file from a project
Introduced in GitLab 12.10.
Download a PyPI package file. The simple API normally supplies this URL.
GET projects/:id/packages/pypi/files/:sha256/:file_identifier
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the project. |
sha256
| string | yes | PyPI package file sha256 check sum. |
file_identifier
| string | yes | The PyPI package filename. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz"
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz" >> my.pypi.package-0.0.1.tar.gz
This writes the downloaded file to my.pypi.package-0.0.1.tar.gz
in the current
directory.
Project-level simple API index
Introduced in GitLab 15.1.
Returns a list of packages in the project as an HTML file:
GET projects/:id/packages/pypi/simple
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the project. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple"
Example response:
<!DOCTYPE html>
<html>
<head>
<title>Links for Project</title>
</head>
<body>
<h1>Links for Project</h1>
<a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my-pypi-package" data-requires-python="">my.pypi.package</a><br><a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/package-2" data-requires-python="3.8">package_2</a><br>
</body>
</html>
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple" >> simple_index.html
This writes the downloaded file to simple_index.html
in the current directory.
Project-level simple API entry point
Introduced in GitLab 12.10.
Returns the package descriptor as an HTML file:
GET projects/:id/packages/pypi/simple/:package_name
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the project. |
package_name
| string | yes | The name of the package. |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package"
Example response:
<!DOCTYPE html>
<html>
<head>
<title>Links for my.pypi.package</title>
</head>
<body>
<h1>Links for my.pypi.package</h1>
<a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1-py3-none-any.whl#sha256=5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff" data-requires-python=">=3.6">my.pypi.package-0.0.1-py3-none-any.whl</a><br><a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/9s9w01b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2/my.pypi.package-0.0.1.tar.gz#sha256=9s9w011b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2" data-requires-python=">=3.6">my.pypi.package-0.0.1.tar.gz</a><br>
</body>
</html>
To write the output to a file:
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package" >> simple.html
This writes the downloaded file to simple.html
in the current directory.
Upload a package
Upload a PyPI package:
PUT projects/:id/packages/pypi
Attribute | Type | Required | Description |
---|---|---|---|
id
| string | yes | The ID or full path of the project. |
requires_python
| string | no | The PyPI required version. |
curl --request POST \
--form 'content=@path/to/my.pypi.package-0.0.1.tar.gz' \
--form 'name=my.pypi.package'
--form 'version=1.3.7'
--user <username>:<personal_access_token> \
"https://gitlab.example.com/api/v4/projects/1/packages/pypi"