패키지 API

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

GitLab Packages의 API 문서입니다.

패키지 목록

프로젝트용

프로젝트 패키지 목록을 가져옵니다. 모든 패키지 유형이 결과에 포함됩니다. 인증되지 않은 상태로 액세스하면 공개 프로젝트의 패키지만 반환됩니다. 기본적으로 defaulterror 상태의 패키지가 반환됩니다. 기타 패키지를 보려면 status 매개변수를 사용하세요.

GET /projects/:id/packages
속성 타입 필수여부 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로.
order_by string no 순서로 사용할 필드입니다. created_at (기본), name, version, 또는 type 중 하나입니다.
sort string no 순서의 방향입니다. 오름차순을 위한 asc (기본) 또는 내림차순을 위한 desc 중 하나입니다.
package_type string no 반환된 패키지를 유형으로 필터링합니다. conan, maven, npm, pypi, composer, nuget, helm, terraform_module, 또는 golang 중 하나입니다.
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 중 하나입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages"

사용 중단:

응답의 pipelines 속성은 도입된 GitLab 16.0에서 패키지 파이프라인 목록 엔드포인트를 지원하는 것으로 사용 중단되었습니다. 패키지에 파이프라인이 없는 경우 응답에 pipelines 속성이 포함되지 않습니다. 그렇지 않으면 pipelines 속성이 빈 배열로 반환됩니다.

응답 예시:

[
  {
    "id": 1,
    "name": "com/mycompany/my-app",
    "version": "1.0-SNAPSHOT",
    "package_type": "maven",
    "created_at": "2019-11-27T03:37:38.711Z"
  },
  {
    "id": 2,
    "name": "@foo/bar",
    "version": "1.0.3",
    "package_type": "npm",
    "created_at": "2019-11-27T03:37:38.711Z"
  },
  {
    "id": 3,
    "name": "Hello/0.1@mycompany/stable",
    "conan_package_name": "Hello",
    "version": "0.1",
    "package_type": "conan",
    "_links": {
      "web_path": "/foo/bar/-/packages/3",
      "delete_api_path": "https://gitlab.example.com/api/v4/projects/1/packages/3"
    },
    "created_at": "2029-12-16T20:33:34.316Z",
    "tags": []
  }
]

기본적으로 GET 요청은 API가 페이지별로 20개의 결과를 반환합니다.

상태별로 패키지를 필터링할 수 있지만, processing 상태의 패키지를 처리하는 것은 잘못된 데이터나 깨진 패키지를 가져올 수 있습니다.

그룹용

그룹 수준에서 프로젝트 패키지 목록을 가져옵니다. 인증되지 않은 상태로 액세스하면 공개 프로젝트의 패키지만 반환됩니다. 기본적으로 defaulterror 상태의 패키지가 반환됩니다. 다른 패키지를 보려면 status 매개변수를 사용하세요.

GET /groups/:id/packages
속성 타입 필수여부 설명
id integer/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 반환된 패키지를 유형으로 필터링합니다. conan, maven, npm, pypi, composer, nuget, helm, 또는 golang 중 하나입니다.
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 중 하나입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/packages?exclude_subgroups=false"

사용 중단:

응답의 pipelines 속성은 도입된 GitLab 16.0에서 패키지 파이프라인 목록 엔드포인트를 지원하는 것으로 사용 중단되었습니다. 패키지에 파이프라인이 없는 경우 응답에 pipelines 속성이 포함되지 않습니다. 그렇지 않으면 pipelines 속성이 빈 배열로 반환됩니다.

응답 예시:

[
  {
    "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",
    "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 요청은 API가 페이지별로 20개의 결과를 반환합니다.

_links 객체는 다음과 같은 속성을 포함합니다:

  • web_path: GitLab에서 방문하여 패키지의 세부 정보를 볼 수 있는 경로입니다.
  • delete_api_path: 패키지를 삭제하기 위한 API 경로입니다. 요청 사용자에게 권한이 있는 경우에만 사용할 수 있습니다.

상태별로 패키지를 필터링할 수 있지만, processing 상태의 패키지를 처리하는 것은 잘못된 데이터나 깨진 패키지를 가져올 수 있습니다.

프로젝트 패키지 가져오기

단일 프로젝트 패키지를 가져옵니다. default 상태의 패키지만 반환됩니다.

GET /projects/:id/packages/:package_id
속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩된 경로
package_id integer 패키지의 ID.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"

폐지 안내:

응답의 pipelines 속성은 GitLab 16.0에서 소개된 패키지 파이프라인 목록 엔드포인트를 통해 폐지되었습니다. 패키지에 파이프라인이 없는 경우 응답에 pipelines 속성이 포함되지 않습니다. 그렇지 않으면 pipelines 속성은 빈 배열을 반환합니다.

응답 예시:

{
  "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",
  "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"
          }
        }
      ]
    }
  ]
}

_links 객체는 다음과 같은 속성을 포함합니다:

  • web_path: GitLab에서 방문하여 패키지의 세부 정보를 볼 수 있는 경로. 패키지가 default 상태인 경우에만 사용할 수 있습니다.
  • delete_api_path: 패키지를 삭제하기 위한 API 경로. 요청한 사용자가 해당 권한을 가지고 있는 경우에만 사용할 수 있습니다.

패키지 파일 목록

단일 패키지의 패키지 파일 목록을 가져옵니다.

GET /projects/:id/packages/:package_id/package_files
속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩된 경로
package_id integer 패키지의 ID.
curl --header "PRIVATE-TOKEN: <your_access_token>" "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는 페이지 단위로 작동합니다.

패키지 파이프라인 목록

단일 패키지에 대한 파이프라인 목록을 가져옵니다. 결과는 내림차순으로 id로 정렬됩니다.

결과는 페이지네이션되어 페이지당 최대 20개의 레코드를 반환합니다.

GET /projects/:id/packages/:package_id/pipelines
속성 타입 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로
package_id integer yes 패키지 ID.
curl --header "PRIVATE-TOKEN: <your_access_token>" "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\u0026d=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\u0026d=identicon",
      "web_url": "http://gdk.test:3001/root"
    }
  }
]

프로젝트 패키지 삭제

프로젝트 패키지를 삭제합니다.

DELETE /projects/:id/packages/:package_id
속성 타입 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로
package_id integer yes 패키지 ID.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"

다음과 같은 상태 코드를 반환할 수 있습니다:

  • 204 No Content: 패키지가 성공적으로 삭제된 경우.
  • 404 Not Found: 패키지를 찾을 수 없는 경우.

요청 전달이 활성화된 경우, 패키지를 삭제하면 의존성 오류가 발생할 수 있습니다.

패키지 파일 삭제

경고: 패키지 파일을 삭제하면 해당 패키지가 사용 불가능하거나 패키지 관리자 클라이언트에서 가져올 수 없게 될 수 있습니다. 패키지 파일을 삭제할 때는 자신이 하는 일을 이해하는 것이 중요합니다.

패키지 파일을 삭제합니다:

DELETE /projects/:id/packages/:package_id/package_files/:package_file_id
속성 타입 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로
package_id integer yes 패키지 ID.
package_file_id integer yes 패키지 파일 ID.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files/:package_file_id"

다음과 같은 상태 코드를 반환할 수 있습니다:

  • 204 No Content: 패키지가 성공적으로 삭제된 경우.
  • 403 Forbidden: 사용자가 파일을 삭제할 권한이 없는 경우.
  • 404 Not Found: 패키지나 패키지 파일을 찾을 수 없는 경우.