패키지 API
GitLab v19.2Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 GitLab 패키지와 상호작용합니다. 지정된 프로젝트의 모든 패키지를 나열합니다. 기본적으로 GET 요청은 20개의 결과를 반환합니다. 상태별로 패키지를 필터링할 수 있지만, processing 상태의 패키지를 사용하면 잘못된 형식의 데이터나 손상된 패키지가 생길 수 있습니다.
히스토리
- GitLab 15.3에서 프로젝트 레벨 API에 대한 GitLab CI/CD job 토큰 인증 지원이 도입되었습니다.
이 API를 사용하여 GitLab 패키지와 상호작용합니다.
패키지 목록 조회#
히스토리
pipelines는 GitLab 16.1에서 폐기되었습니다.
프로젝트별#
지정된 프로젝트의 모든 패키지를 나열합니다. 모든 패키지 유형이 결과에 포함됩니다. 인증 없이 접근하면 공개 프로젝트의 패키지만 반환됩니다.
기본적으로 default, deprecated, error 상태의 패키지가 반환됩니다. status 파라미터를 사용하여 다른 패키지를 볼 수 있습니다.
GET /projects/:id/packages
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
order_by |
string | no | 정렬에 사용할 필드. created_at(기본값), name, version, type 중 하나 |
sort |
string | no | 정렬 방향. 오름차순의 경우 asc(기본값), 내림차순의 경우 desc |
package_type |
string | no | 유형별로 반환된 패키지를 필터링합니다. composer, conan, generic, golang, helm, maven, npm, nuget, pypi, terraform_module 중 하나 |
package_name |
string | no | 이름으로 프로젝트 패키지를 퍼지 검색하여 필터링합니다. |
package_version |
string | no | 버전별로 프로젝트 패키지를 필터링합니다. include_versionless와 함께 사용하면 버전 없는 패키지는 반환되지 않습니다. GitLab 16.6에서 도입되었습니다. |
include_versionless |
boolean | no | true로 설정하면 버전 없는 패키지가 응답에 포함됩니다. |
status |
string | no | 상태별로 반환된 패키지를 필터링합니다. default, hidden, processing, error, pending_destruction, deprecated 중 하나 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages"
응답 예시:
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"created_at": "2019-11-27T03:37:38.711Z",
"creator_id": 1,
"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"
}
},
"pipelines": [],
"tags": []
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
"package_type": "npm",
"created_at": "2019-11-27T03:37:38.711Z",
"tags": []
}
]
기본적으로 GET 요청은 20개의 결과를 반환합니다. API는 페이지네이션을 지원하기 때문입니다.
상태별로 패키지를 필터링할 수 있지만, processing 상태의 패키지를 사용하면 잘못된 형식의 데이터나 손상된 패키지가 생길 수 있습니다.
그룹별#
필수 조건:
- 그룹 계층 구조에서 하나 이상의 프로젝트에 대한 Reporter, Security Manager, Developer, Maintainer, 또는 Owner 권한
지정된 그룹의 모든 패키지를 나열합니다.
인증 없이 접근하면 공개 프로젝트의 패키지만 반환됩니다.
기본적으로 default, deprecated, error 상태의 패키지가 반환됩니다. status 파라미터를 사용하여 다른 패키지를 볼 수 있습니다.
이 권한 모델은 GraphQL Group.packages 필드와 일치하므로, REST 및 GraphQL 엔드포인트는 동일한 호출자에 대해 동일한 패키지를 반환합니다.
GET /groups/:id/packages
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 그룹의 ID 또는 URL 인코딩된 경로 |
exclude_subgroups |
boolean | no | 파라미터가 true로 포함되면 서브그룹 프로젝트의 패키지가 나열되지 않습니다. 기본값은 false |
order_by |
string | no | 정렬에 사용할 필드. created_at(기본값), name, version, type, project_path 중 하나 |
sort |
string | no | 정렬 방향. 오름차순의 경우 asc(기본값), 내림차순의 경우 desc |
package_type |
string | no | 유형별로 반환된 패키지를 필터링합니다. composer, conan, generic, golang, helm, maven, npm, nuget, pypi, terraform_module 중 하나 |
package_name |
string | no | 이름으로 프로젝트 패키지를 퍼지 검색하여 필터링합니다. |
package_version |
string | no | 버전별로 반환된 패키지를 필터링합니다. include_versionless와 함께 사용하면 버전 없는 패키지는 반환되지 않습니다. GitLab 16.6에서 도입되었습니다. |
include_versionless |
boolean | no | true로 설정하면 버전 없는 패키지가 응답에 포함됩니다. |
status |
string | no | 상태별로 반환된 패키지를 필터링합니다. default, hidden, processing, error, pending_destruction, deprecated 중 하나 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/:id/packages?exclude_subgroups=false"
응답 예시:
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"creator_id": 1,
"pipelines": [
{
"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"
}
}
]
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
"package_type": "npm",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"pipelines": [
{
"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"
}
}
]
}
]
기본적으로 GET 요청은 20개의 결과를 반환합니다. API는 페이지네이션을 지원하기 때문입니다.
creator_id 필드에는 패키지를 생성한 사용자의 ID가 포함됩니다. 패키지가 배포 토큰 또는 job 토큰으로 생성된 경우 이 필드는 null입니다.
_links 객체에는 다음 속성이 포함됩니다:
-
web_path: GitLab에서 방문하여 패키지 세부 정보를 볼 수 있는 경로. -
delete_api_path: 패키지를 삭제하는 API 경로. 요청한 사용자가 삭제 권한이 있는 경우에만 사용 가능.
상태별로 패키지를 필터링할 수 있지만, processing 상태의 패키지를 사용하면 잘못된 형식의 데이터나 손상된 패키지가 생길 수 있습니다.
프로젝트 패키지 조회#
히스토리
pipelines는 GitLab 16.1에서 폐기되었습니다.
지정된 프로젝트 패키지를 조회합니다. default 또는 deprecated 상태의 패키지만 반환됩니다.
GET /projects/:id/packages/:package_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | yes | 패키지의 ID |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"
응답 예시:
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"last_downloaded_at": "2022-09-07T07:51:50.504Z",
"creator_id": 1,
"pipelines": [
{
"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"
}
}
],
"versions": [
{
"id":2,
"version":"2.0-SNAPSHOT",
"created_at":"2020-04-28T04:42:11.573Z",
"pipelines": [
{
"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"
}
}
]
}
]
}
creator_id 필드에는 패키지를 생성한 사용자의 ID가 포함됩니다. 패키지가 배포 토큰 또는 job 토큰으로 생성된 경우 이 필드는 null입니다.
_links 객체에는 다음 속성이 포함됩니다:
-
web_path: GitLab에서 방문하여 패키지 세부 정보를 볼 수 있는 경로. 패키지 상태가default또는deprecated인 경우에만 사용 가능. -
delete_api_path: 패키지를 삭제하는 API 경로. 요청한 사용자가 삭제 권한이 있는 경우에만 사용 가능.
패키지 파일 목록 조회#
지정된 패키지의 모든 패키지 파일을 나열합니다.
GET /projects/:id/packages/:package_id/package_files
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | yes | 패키지의 ID |
order_by |
string | no | 정렬에 사용할 필드. id(기본값), file_name, created_at 중 하나 |
sort |
string | no | 정렬 방향. 오름차순의 경우 asc(기본값), 내림차순의 경우 desc |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files"
응답 예시:
[
{
"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",
"file_sha256": "a903393463d3915d7e22219f52740056dfd26cbfeff321b",
"pipelines": [
{
"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"
}
}
]
},
{
"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",
"file_sha256": "2987d068fe88aff85781811a42f32d97feb4f092a399"
},
{
"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",
"file_sha256": "ac849d002e56052d320a8ac156f745ece73f6a8cd2f3e82"
}
]
기본적으로 GET 요청은 20개의 결과를 반환합니다. API는 페이지네이션을 지원하기 때문입니다.
패키지 파이프라인 목록 조회#
히스토리
- GitLab 16.1에서 도입되었습니다.
지정된 패키지의 모든 파이프라인을 나열합니다. 결과는 id 내림차순으로 정렬됩니다.
결과는 페이지네이션되며 페이지당 최대 20개의 레코드를 반환합니다.
GET /projects/:id/packages/:package_id/pipelines
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | yes | 패키지의 ID |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/pipelines"
응답 예시:
[
{
"id": 1,
"iid": 1,
"project_id": 9,
"sha": "2b6127f6bb6f475c4e81afcc2251e3f941e554f9",
"ref": "mytag",
"status": "failed",
"source": "push",
"created_at": "2023-02-01T12:19:21.895Z",
"updated_at": "2023-02-01T14:00:05.922Z",
"web_url": "http://gdk.test:3001/feature-testing/composer-repository/-/pipelines/1",
"user": {
"id": 1,
"username": "root",
"name": "Administrator",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://gdk.test:3001/root"
}
},
{
"id": 2,
"iid": 2,
"project_id": 9,
"sha": "e564015ac6cb3d8617647802c875b27d392f72a6",
"ref": "main",
"status": "canceled",
"source": "push",
"created_at": "2023-02-01T12:23:23.694Z",
"updated_at": "2023-02-01T12:26:28.635Z",
"web_url": "http://gdk.test:3001/feature-testing/composer-repository/-/pipelines/2",
"user": {
"id": 1,
"username": "root",
"name": "Administrator",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://gdk.test:3001/root"
}
}
]
프로젝트 패키지 삭제#
지정된 프로젝트 패키지를 삭제합니다.
DELETE /projects/:id/packages/:package_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | yes | 패키지의 ID |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"
다음 상태 코드를 반환할 수 있습니다:
-
204 No Content: 패키지가 성공적으로 삭제되었습니다. -
403 Forbidden: 패키지가 삭제로부터 보호되어 있습니다. -
404 Not Found: 패키지를 찾을 수 없습니다.
요청 전달이 활성화된 경우 패키지를 삭제하면 종속성 혼동 위험이 발생할 수 있습니다.
패키지가 보호 규칙으로 보호된 경우 패키지 삭제가 금지됩니다.
패키지 파일 삭제#
WARNING: 패키지 파일을 삭제하면 패키지가 손상되어 패키지 매니저 클라이언트에서 사용할 수 없거나 가져올 수 없게 될 수 있습니다. 패키지 파일을 삭제할 때는 작업의 영향을 충분히 이해한 후 진행하세요.
지정된 패키지 파일을 삭제합니다.
DELETE /projects/:id/packages/:package_id/package_files/:package_file_id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer or string | yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | yes | 패키지의 ID |
package_file_id |
integer | yes | 패키지 파일의 ID |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files/:package_file_id"
다음 상태 코드를 반환할 수 있습니다:
-
204 No Content: 패키지가 성공적으로 삭제되었습니다. -
403 Forbidden: 사용자가 파일을 삭제할 권한이 없거나 패키지가 삭제로부터 보호되어 있습니다. -
404 Not Found: 패키지 또는 패키지 파일을 찾을 수 없습니다.
패키지 파일이 속한 패키지가 보호 규칙으로 보호된 경우 패키지 파일 삭제가 금지됩니다.