패키지 API

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

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"

예시 응답:

[
  {
    "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는 페이지별로 나눠집니다.

상태별로 패키지를 필터링할 수 있지만, 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"

예시 응답:

[
  {
    "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"

예시 응답:

{
  "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는 페이지별로 처리됩니다.

패키지 파이프라인 목록

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

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

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