パッケージAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、GitLab Packagesとやり取りします。
パッケージをリストする
プロジェクトの場合
プロジェクトのパッケージのリストを取得します。すべてのパッケージタイプが結果に含まれます。認証なしでアクセスすると、公開プロジェクトのパッケージのみが返されます。デフォルトでは、default、deprecated、およびerrorの状態のパッケージが返されます。他のパッケージを表示するには、statusパラメータを使用します。
GET /projects/:id/packages| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | 可 | プロジェクトのIDまたはURLエンコードされたパス。 |
order_by | 文字列 | 不可 | 順序として使用するフィールド。created_at(デフォルト)、name、version、またはtypeのいずれか。 |
sort | 文字列 | 不可 | 順序の方向。昇順の場合はasc(デフォルト)、降順の場合はdesc。 |
package_type | 文字列 | 不可 | 返されるパッケージをタイプでフィルタリングします。composer、conan、generic、golang、helm、maven、npm、nuget、pypi、terraform_moduleのいずれかです。 |
package_name | 文字列 | 不可 | プロジェクトパッケージを名前によるあいまい検索でフィルタリングします。 |
package_version | 文字列 | 不可 | プロジェクトパッケージをバージョンでフィルタリングします。include_versionlessと組み合わせて使用すると、バージョンなしのパッケージは返されません。GitLab 16.6で導入されました。 |
include_versionless | ブール値 | 不可 | trueに設定すると、バージョンなしのパッケージが応答に含まれます。 |
status | 文字列 | 不可 | 返されるパッケージを状態でフィルタリングします。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",
"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": []
},
{
"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状態のパッケージを操作すると、不正な形式のデータや破損したパッケージが発生する可能性があります。
グループの場合
グループレベルでプロジェクトパッケージのリストを取得します。認証なしでアクセスすると、公開プロジェクトのパッケージのみが返されます。デフォルトでは、default、deprecated、およびerrorの状態のパッケージが返されます。他のパッケージを表示するには、statusパラメータを使用します。
GET /groups/:id/packages| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | 可 | IDまたはURLエンコードされたパス。 |
exclude_subgroups | ブール値 | 不可 | パラメータがtrueとして含まれている場合、サブグループのプロジェクトからのパッケージはリストされません。デフォルトはfalseです。 |
order_by | 文字列 | 不可 | 順序として使用するフィールド。created_at(デフォルト)、name、version、type、project_pathのいずれか |
sort | 文字列 | 不可 | 順序の方向。昇順の場合はasc(デフォルト)、降順の場合はdesc。 |
package_type | 文字列 | 不可 | 返されるパッケージをタイプでフィルタリングします。composer、conan、generic、golang、helm、maven、npm、nuget、pypi、terraform_moduleのいずれかです。 |
package_name | 文字列 | 不可 | プロジェクトパッケージを名前によるあいまい検索でフィルタリングします。 |
package_version | 文字列 | 不可 | 返されるパッケージをバージョンでフィルタリングします。include_versionlessと組み合わせて使用すると、バージョンなしのパッケージは返されません。GitLab 16.6で導入されました。 |
include_versionless | ブール値 | 不可 | trueに設定すると、バージョンなしのパッケージが応答に含まれます。 |
status | 文字列 | 不可 | 返されるパッケージを状態でフィルタリングします。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",
"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またはdeprecatedのパッケージのみが返されます。
GET /projects/:id/packages/:package_id| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | 可 | プロジェクトのIDまたはURLエンコードされたパス。 |
package_id | 整数 | 可 | パッケージの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",
"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またはdeprecatedの場合にのみ使用できます。delete_api_path: パッケージを削除するためのAPIパス。リクエストユーザーに削除するための権限がある場合にのみ使用できます。
パッケージファイルをリストする
単一のパッケージのパッケージファイルのリストを取得します。
GET /projects/:id/packages/:package_id/package_files| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | 可 | プロジェクトのIDまたはURLエンコードされたパス |
package_id | 整数 | 可 | パッケージのID。 |
order_by | 文字列 | 不可 | 順序として使用するフィールド。id(デフォルト)、file_name、created_atのいずれか |
sort | 文字列 | 不可 | 順序の方向。昇順の場合は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がページネーションされているためです。
パッケージパイプラインをリストする
単一のパッケージのパイプラインのリストを取得します。結果は、idで降順にソートされます。
結果はページネーションされ、ページあたり最大20件のレコードが返されます。
GET /projects/:id/packages/:package_id/pipelines| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | 可 | プロジェクトのIDまたはURLエンコードされたパス |
package_id | 整数 | 可 | パッケージの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\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>" \
--url "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"次のステータスコードを返すことができます:
204 No Content: パッケージは正常に削除されました。403 Forbidden: パッケージは削除から保護されています。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 "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: パッケージまたはパッケージファイルが見つかりませんでした。
パッケージファイルが属するパッケージが保護ルールによって保護されている場合、パッケージファイルの削除は禁止されています。