패키지 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-encoded path
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 요청은 결과를 20개 반환합니다. API가 페이지별로 되어있기 때문입니다.

그룹용

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

GET /groups/:id/packages
속성 유형 필수 설명
id integer/string yes 그룹의 ID 또는 URL-encoded path
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 요청은 결과를 20개 반환합니다. API가 페이지별로 되어있기 때문입니다.

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

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

processing 상태의 패키지를 처리하는 것은 잘못된 데이터나 손상된 패키지를 만들 수 있으므로 주의해야 합니다.

프로젝트 패키지 가져오기

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

GET /projects/:id/packages/:package_id
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로
package_id 정수 패키지의 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 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로
package_id 정수 패키지의 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가 페이지별로 구성되었기 때문입니다.

패키지 파이프라인 디렉터리

  • GitLab 16.1에서 소개되었습니다.

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

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

GET /projects/:id/packages/:package_id/pipelines
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로
package_id 정수 패키지의 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 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로
package_id 정수 패키지의 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: 패키지를 찾을 수 없는 경우.

만약 요청 전달이 활성화되어 있다면, 패키지를 삭제하는 것은 의존성 오동작 위험을 야기할 수 있습니다.

패키지 파일 삭제

caution
패키지 파일을 삭제하면 해당 패키지가 사용 불가능하거나 패키지 관리자 클라이언트에서 끌어올 수 없게 될 수 있습니다. 패키지 파일을 삭제할 때는 자신이 하는 일을 잘 이해해야 합니다.

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

DELETE /projects/:id/packages/:package_id/package_files/:package_file_id
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_id 정수 패키지의 ID
package_file_id 정수 패키지 파일의 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: 패키지 또는 패키지 파일을 찾을 수 없는 경우.