2019-07-08 04:50:38 -04:00
# Packages API **(PREMIUM)**
2019-05-18 17:27:41 -04:00
2019-09-17 08:06:48 -04:00
This is the API docs of [GitLab Packages ](../administration/packages/index.md ).
2019-05-18 17:27:41 -04:00
2019-11-07 10:06:33 -05:00
## List packages
### Within a project
2019-05-18 17:27:41 -04:00
2020-02-06 10:09:11 -05:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9259) in GitLab 11.8.
2019-05-18 17:27:41 -04:00
2020-02-27 16:09:17 -05:00
Get a list of project packages. All package types are included in results. When
accessed without authentication, only packages of public projects are returned.
2019-05-18 17:27:41 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
GET /projects/:id/packages
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) |
2020-02-20 01:09:13 -05:00
| `order_by` | string | no | The field to use as order. One of `created_at` (default), `name` , `version` , or `type` . |
| `sort` | string | no | The direction of the order, either `asc` (default) for ascending order or `desc` for descending order. |
2020-04-15 14:09:36 -04:00
| `package_type` | string | no | Filter the returned packages by type. One of `conan` , `maven` , `npm` , `pypi` or `nuget` . (_Introduced in GitLab 12.9_)
2020-03-04 16:07:54 -05:00
| `package_name` | string | no | Filter the project packages with a fuzzy search by name. (_Introduced in GitLab 12.9_)
2019-05-18 17:27:41 -04:00
2020-01-30 10:09:15 -05:00
```shell
2019-05-18 17:27:41 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " https://gitlab.example.com/api/v4/projects/:id/packages
```
Example response:
```json
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
2019-12-18 07:07:48 -05:00
"package_type": "maven",
"created_at": "2019-11-27T03:37:38.711Z"
2019-05-18 17:27:41 -04:00
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
2019-12-18 07:07:48 -05:00
"package_type": "npm",
"created_at": "2019-11-27T03:37:38.711Z"
2019-05-18 17:27:41 -04:00
}
]
```
By default, the `GET` request will return 20 results, since the API is [paginated ](README.md#pagination ).
2019-11-07 10:06:33 -05:00
### Within a group
2020-02-06 10:09:11 -05:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18871) in GitLab 12.5.
2019-11-07 10:06:33 -05:00
Get a list of project packages at the group level.
When accessed without authentication, only packages of public projects are returned.
2020-02-27 19:09:08 -05:00
```plaintext
2019-11-07 10:06:33 -05:00
GET /groups/:id/packages
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | ID or [URL-encoded path of the group ](README.md#namespaced-path-encoding ). |
2020-03-26 23:07:56 -04:00
| `exclude_subgroups` | boolean | false | If the parameter is included as true, packages from projects from subgroups are not listed. Default is `false` . |
2020-02-20 01:09:13 -05:00
| `order_by` | string | no | The field to use as order. One of `created_at` (default), `name` , `version` , `type` , or `project_path` . |
| `sort` | string | no | The direction of the order, either `asc` (default) for ascending order or `desc` for descending order. |
2020-04-15 14:09:36 -04:00
| `package_type` | string | no | Filter the returned packages by type. One of `conan` , `maven` , `npm` , `pypi` or `nuget` . (_Introduced in GitLab 12.9_) |
2020-05-08 17:09:47 -04:00
| `package_name` | string | no | Filter the project packages with a fuzzy search by name. (_[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30980) in GitLab 13.0_)
2019-11-07 10:06:33 -05:00
2020-01-30 10:09:15 -05:00
```shell
2019-11-13 19:06:24 -05:00
curl --header "PRIVATE-TOKEN: < your_access_token > " https://gitlab.example.com/api/v4/groups/:id/packages?exclude_subgroups=true
2019-11-07 10:06:33 -05:00
```
2020-03-27 14:07:48 -04:00
CAUTION: **Deprecation**
> The `build_info` attribute in the response is deprecated in favour of `pipeline`.
> Introduced [GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28040).
2019-11-07 10:06:33 -05:00
Example response:
```json
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
2019-12-16 04:08:10 -05:00
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
2019-12-18 07:07:48 -05:00
},
2020-01-09 13:07:52 -05:00
"created_at": "2019-11-27T03:37:38.711Z",
2020-03-27 14:07:48 -04:00
"pipeline": {
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon"
2020-01-15 13:08:34 -05:00
}
2020-01-09 13:07:52 -05:00
}
2019-11-07 10:06:33 -05:00
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
2019-12-16 04:08:10 -05:00
"package_type": "npm",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
2019-12-18 07:07:48 -05:00
},
2020-01-09 13:07:52 -05:00
"created_at": "2019-11-27T03:37:38.711Z",
2020-03-27 14:07:48 -04:00
"pipeline": {
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon"
2020-01-15 13:08:34 -05:00
}
2020-01-09 13:07:52 -05:00
}
2019-11-07 10:06:33 -05:00
}
]
```
By default, the `GET` request will return 20 results, since the API is [paginated ](README.md#pagination ).
2019-05-18 17:27:41 -04:00
2019-12-16 04:08:10 -05:00
The `_links` object contains the following properties:
- `web_path` : The path which you can visit in GitLab and see the details of the package.
- `delete_api_path` : The API path to delete the package. Only available if the request user has permission to do so.
2019-05-18 17:27:41 -04:00
## Get a project package
2020-02-06 10:09:11 -05:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9667) in GitLab 11.9.
2019-05-18 17:27:41 -04:00
Get a single project package.
2020-02-27 19:09:08 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
GET /projects/:id/packages/:package_id
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ). |
| `package_id` | integer | yes | ID of a package. |
2020-01-30 10:09:15 -05:00
```shell
2019-05-18 17:27:41 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " https://gitlab.example.com/api/v4/projects/:id/packages/:package_id
```
2020-03-27 14:07:48 -04:00
CAUTION: **Deprecation**
> The `build_info` attribute in the response is deprecated in favour of `pipeline`.
> Introduced [GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28040).
2019-05-18 17:27:41 -04:00
Example response:
```json
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
2019-12-16 04:08:10 -05:00
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
2019-12-18 07:07:48 -05:00
},
2020-01-09 13:07:52 -05:00
"created_at": "2019-11-27T03:37:38.711Z",
2020-03-27 14:07:48 -04:00
"pipeline": {
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon"
2020-01-15 13:08:34 -05:00
}
2020-05-12 05:09:31 -04:00
},
"versions": [
{
"id":2,
"version":"2.0-SNAPSHOT",
"created_at":"2020-04-28T04:42:11.573Z",
"pipeline": {
"id": 234,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/58",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80& d=identicon"
}
}
}
]
2019-05-18 17:27:41 -04:00
}
```
2019-12-16 04:08:10 -05:00
The `_links` object contains the following properties:
- `web_path` : The path which you can visit in GitLab and see the details of the package.
- `delete_api_path` : The API path to delete the package. Only available if the request user has permission to do so.
2019-05-18 17:27:41 -04:00
## List package files
2020-02-06 10:09:11 -05:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9305) in GitLab 11.8.
2019-05-18 17:27:41 -04:00
2019-07-08 23:28:41 -04:00
Get a list of package files of a single package.
2019-05-18 17:27:41 -04:00
2020-02-27 19:09:08 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
GET /projects/:id/packages/:package_id/package_files
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) |
| `package_id` | integer | yes | ID of a package. |
2020-01-30 10:09:15 -05:00
```shell
2019-05-18 17:27:41 -04:00
curl --header "PRIVATE-TOKEN: < your_access_token > " https://gitlab.example.com/api/v4/projects/1/packages/4/package_files
```
Example response:
```json
[
{
"id": 25,
"package_id": 4,
"created_at": "2018-11-07T15:25:52.199Z",
"file_name": "my-app-1.5-20181107.152550-1.jar",
"size": 2421,
"file_md5": "58e6a45a629910c6ff99145a688971ac",
"file_sha1": "ebd193463d3915d7e22219f52740056dfd26cbfe"
},
{
"id": 26,
"package_id": 4,
"created_at": "2018-11-07T15:25:56.776Z",
"file_name": "my-app-1.5-20181107.152550-1.pom",
"size": 1122,
"file_md5": "d90f11d851e17c5513586b4a7e98f1b2",
"file_sha1": "9608d068fe88aff85781811a42f32d97feb440b5"
},
{
"id": 27,
"package_id": 4,
"created_at": "2018-11-07T15:26:00.556Z",
"file_name": "maven-metadata.xml",
"size": 767,
"file_md5": "6dfd0cce1203145a927fef5e3a1c650c",
"file_sha1": "d25932de56052d320a8ac156f745ece73f6a8cd2"
}
]
```
By default, the `GET` request will return 20 results, since the API is [paginated ](README.md#pagination ).
## Delete a project package
2020-02-06 10:09:11 -05:00
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/9623) in GitLab 11.9.
2019-05-18 17:27:41 -04:00
Deletes a project package.
2020-02-27 19:09:08 -05:00
```plaintext
2019-05-18 17:27:41 -04:00
DELETE /projects/:id/packages/:package_id
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | ID or [URL-encoded path of the project ](README.md#namespaced-path-encoding ) |
| `package_id` | integer | yes | ID of a package. |
2020-01-30 10:09:15 -05:00
```shell
2019-05-18 17:27:41 -04:00
curl --request DELETE --header "PRIVATE-TOKEN: < your_access_token > " https://gitlab.example.com/api/v4/projects/:id/packages/:package_id
```
Can return the following status codes:
- `204 No Content` , if the package was deleted successfully.
- `404 Not Found` , if the package was not found.