GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 和 GitHub AE。


GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 此外,使用旧版按仓库计划的帐户无法访问 Container registry,因为这些帐户是按仓库计费的。 更多信息请参阅“[GitHub 的产品](/articles/github-s-products)”。

GitHub Packages API 允许您使用 REST API 管理包。 要了解有关恢复或删除包的更多信息,请参阅“恢复和删除包”。

要使用此 API ,您必须使用个人访问令牌进行验证。

  • 要访问包元数据,您的令牌必须包括 read:packages 范围。
  • 要删除包和包版本,您的令牌必须包括 read:packagesdelete:packages 范围。
  • 要恢复包和包版本,您的令牌必须包括 read:packageswrite:packages 范围。

如果您的 package_typenpmmavenrubygemsnuget,则您的令牌必须还包括 repo 范围,因为您的包从 GitHub 仓库继承权限。 有关范围的更多信息,请参阅“关于范围和权限”或“使用 GitHub Packages API 与 Docker”。

如果您想使用 GitHub Packages API 访问已启用 SSO 的组织中的资源,则必须对个人访问令牌启用 SSO。 更多信息请参阅“授权个人访问令牌用于 SAML 单点登录”。

使用 GitHub Packages API 与 Docker

如果您的包是使用包名称空间 docker.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME 的 Docker 映像,则您的 package_typedocker,并且您的令牌必须包括 repo 范围,因为您的包从 GitHub 仓库继承权限。

如果您的包是使用包名称空间 ghcr.io/OWNER/IMAGE-NAME的 Docker 映像,则您的 package_typecontainer,并且您的令牌不需要 repo 范围即可访问或管理此 package_typecontainer 包提供与仓库分开的粒度权限。

Get a package for an organization

Gets a specific package in an organization.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /orgs/{org}/packages/{package_type}/{package_name}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME
JavaScript (@octokit/core.js)
await octokit.request('GET /orgs/{org}/packages/{package_type}/{package_name}', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org'
})

Response

Status: 200 OK
{
  "id": 197,
  "name": "hello_docker",
  "package_type": "container",
  "owner": {
    "login": "github",
    "id": 9919,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=",
    "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/github",
    "html_url": "https://github.com/github",
    "followers_url": "https://api.github.com/users/github/followers",
    "following_url": "https://api.github.com/users/github/following{/other_user}",
    "gists_url": "https://api.github.com/users/github/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/github/subscriptions",
    "organizations_url": "https://api.github.com/users/github/orgs",
    "repos_url": "https://api.github.com/users/github/repos",
    "events_url": "https://api.github.com/users/github/events{/privacy}",
    "received_events_url": "https://api.github.com/users/github/received_events",
    "type": "Organization",
    "site_admin": false
  },
  "version_count": 1,
  "visibility": "private",
  "url": "https://api.github.com/orgs/github/packages/container/hello_docker",
  "created_at": "2020-05-19T22:19:11Z",
  "updated_at": "2020-05-19T22:19:11Z",
  "html_url": "https://github.com/orgs/github/packages/container/package/hello_docker"
}

Delete a package for an organization

Deletes an entire package in an organization. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.

To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the packages:read scope. In addition:

  • If package_type is not container, your token must also include the repo scope.
  • If package_type is container, you must also have admin permissions to the container you want to delete.
delete /orgs/{org}/packages/{package_type}/{package_name}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path

代码示例

Shell
curl \
  -X DELETE \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME
JavaScript (@octokit/core.js)
await octokit.request('DELETE /orgs/{org}/packages/{package_type}/{package_name}', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org'
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Restore a package for an organization

Restores an entire package in an organization.

You can restore a deleted package under the following conditions:

  • The package was deleted within the last 30 days.
  • The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.

To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the packages:read and packages:write scope. In addition:

  • If package_type is not container, your token must also include the repo scope.
  • If package_type is container, you must also have admin permissions to the container that you want to restore.
post /orgs/{org}/packages/{package_type}/{package_name}/restore

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path
token string query

package token

代码示例

Shell
curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME/restore
JavaScript (@octokit/core.js)
await octokit.request('POST /orgs/{org}/packages/{package_type}/{package_name}/restore', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org'
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get all package versions for a package owned by an organization

Returns all package versions for a package owned by an organization.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /orgs/{org}/packages/{package_type}/{package_name}/versions

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path
page integer query

Page number of the results to fetch.

Default: 1
per_page integer query

Results per page (max 100).

Default: 30
state string query

The state of the package, either active or deleted.

Default: active

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME/versions
JavaScript (@octokit/core.js)
await octokit.request('GET /orgs/{org}/packages/{package_type}/{package_name}/versions', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org'
})

Response

Status: 200 OK
[
  {
    "id": 245301,
    "name": "1.0.4",
    "url": "https://api.github.com/orgs/octo-org/packages/npm/hello-world-npm/versions/245301",
    "package_html_url": "https://github.com/octo-org/hello-world-npm/packages/43752",
    "created_at": "2019-11-05T22:49:04Z",
    "updated_at": "2019-11-05T22:49:04Z",
    "html_url": "https://github.com/octo-org/hello-world-npm/packages/43752?version=1.0.4",
    "metadata": {
      "package_type": "npm"
    }
  },
  {
    "id": 209672,
    "name": "1.0.3",
    "url": "https://api.github.com/orgs/octo-org/packages/npm/hello-world-npm/versions/209672",
    "package_html_url": "https://github.com/octo-org/hello-world-npm/packages/43752",
    "created_at": "2019-10-29T15:42:11Z",
    "updated_at": "2019-10-29T15:42:12Z",
    "html_url": "https://github.com/octo-org/hello-world-npm/packages/43752?version=1.0.3",
    "metadata": {
      "package_type": "npm"
    }
  }
]

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get a package version for an organization

Gets a specific package version in an organization.

You must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path
package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42
JavaScript (@octokit/core.js)
await octokit.request('GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org',
  package_version_id: 42
})

Response

Status: 200 OK
{
  "id": 836,
  "name": "sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344",
  "url": "https://api.github.com/orgs/github/packages/container/hello_docker/versions/836",
  "package_html_url": "https://github.com/orgs/github/packages/container/package/hello_docker",
  "created_at": "2020-05-19T22:19:11Z",
  "updated_at": "2020-05-19T22:19:11Z",
  "html_url": "https://github.com/orgs/github/packages/container/hello_docker/836",
  "metadata": {
    "package_type": "container",
    "container": {
      "tags": [
        "latest"
      ]
    }
  }
}

Delete package version for an organization

Deletes a specific package version in an organization. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.

To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the packages:read scope. In addition:

  • If package_type is not container, your token must also include the repo scope.
  • If package_type is container, you must also have admin permissions to the container you want to delete.
delete /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path
package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -X DELETE \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42
JavaScript (@octokit/core.js)
await octokit.request('DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org',
  package_version_id: 42
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Restore package version for an organization

Restores a specific package version in an organization.

You can restore a deleted package under the following conditions:

  • The package was deleted within the last 30 days.
  • The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.

To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the packages:read and packages:write scope. In addition:

  • If package_type is not container, your token must also include the repo scope.
  • If package_type is container, you must also have admin permissions to the container that you want to restore.
post /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

org string path
package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/orgs/ORG/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42/restore
JavaScript (@octokit/core.js)
await octokit.request('POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore', {
  package_type: 'package_type',
  package_name: 'package_name',
  org: 'org',
  package_version_id: 42
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get a package for the authenticated user

Gets a specific package for a package owned by the authenticated user.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /user/packages/{package_type}/{package_name}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME
JavaScript (@octokit/core.js)
await octokit.request('GET /user/packages/{package_type}/{package_name}', {
  package_type: 'package_type',
  package_name: 'package_name'
})

Response

Status: 200 OK
{
  "id": 40201,
  "name": "octo-name",
  "package_type": "rubygems",
  "owner": {
    "login": "octocat",
    "id": 209477,
    "node_id": "MDQ6VXNlcjIwOTQ3Nw==",
    "avatar_url": "https://avatars.githubusercontent.com/u/209477?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/octocat",
    "html_url": "https://github.com/octocat",
    "followers_url": "https://api.github.com/users/octocat/followers",
    "following_url": "https://api.github.com/users/octocat/following{/other_user}",
    "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
    "organizations_url": "https://api.github.com/users/octocat/orgs",
    "repos_url": "https://api.github.com/users/octocat/repos",
    "events_url": "https://api.github.com/users/octocat/events{/privacy}",
    "received_events_url": "https://api.github.com/users/octocat/received_events",
    "type": "User",
    "site_admin": true
  },
  "version_count": 3,
  "visibility": "public",
  "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name",
  "created_at": "2019-10-20T14:17:14Z",
  "updated_at": "2019-10-20T14:17:14Z",
  "repository": {
    "id": 216219492,
    "node_id": "MDEwOlJlcG9zaXRvcnkyMTYyMTk0OTI=",
    "name": "octo-name-repo",
    "full_name": "octocat/octo-name-repo",
    "private": false,
    "owner": {
      "login": "octocat",
      "id": 209477,
      "node_id": "MDQ6VXNlcjIwOTQ3Nw==",
      "avatar_url": "https://avatars.githubusercontent.com/u/209477?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/octocat",
      "html_url": "https://github.com/octocat",
      "followers_url": "https://api.github.com/users/octocat/followers",
      "following_url": "https://api.github.com/users/octocat/following{/other_user}",
      "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
      "organizations_url": "https://api.github.com/users/octocat/orgs",
      "repos_url": "https://api.github.com/users/octocat/repos",
      "events_url": "https://api.github.com/users/octocat/events{/privacy}",
      "received_events_url": "https://api.github.com/users/octocat/received_events",
      "type": "User",
      "site_admin": true
    },
    "html_url": "https://github.com/octocat/octo-name-repo",
    "description": "Project for octocats",
    "fork": false,
    "url": "https://api.github.com/repos/octocat/octo-name-repo",
    "forks_url": "https://api.github.com/repos/octocat/octo-name-repo/forks",
    "keys_url": "https://api.github.com/repos/octocat/octo-name-repo/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/octocat/octo-name-repo/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/octocat/octo-name-repo/teams",
    "hooks_url": "https://api.github.com/repos/octocat/octo-name-repo/hooks",
    "issue_events_url": "https://api.github.com/repos/octocat/octo-name-repo/issues/events{/number}",
    "events_url": "https://api.github.com/repos/octocat/octo-name-repo/events",
    "assignees_url": "https://api.github.com/repos/octocat/octo-name-repo/assignees{/user}",
    "branches_url": "https://api.github.com/repos/octocat/octo-name-repo/branches{/branch}",
    "tags_url": "https://api.github.com/repos/octocat/octo-name-repo/tags",
    "blobs_url": "https://api.github.com/repos/octocat/octo-name-repo/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/octocat/octo-name-repo/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/octocat/octo-name-repo/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/octocat/octo-name-repo/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/octocat/octo-name-repo/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/octocat/octo-name-repo/languages",
    "stargazers_url": "https://api.github.com/repos/octocat/octo-name-repo/stargazers",
    "contributors_url": "https://api.github.com/repos/octocat/octo-name-repo/contributors",
    "subscribers_url": "https://api.github.com/repos/octocat/octo-name-repo/subscribers",
    "subscription_url": "https://api.github.com/repos/octocat/octo-name-repo/subscription",
    "commits_url": "https://api.github.com/repos/octocat/octo-name-repo/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/octocat/octo-name-repo/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/octocat/octo-name-repo/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/octocat/octo-name-repo/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/octocat/octo-name-repo/contents/{+path}",
    "compare_url": "https://api.github.com/repos/octocat/octo-name-repo/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/octocat/octo-name-repo/merges",
    "archive_url": "https://api.github.com/repos/octocat/octo-name-repo/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/octocat/octo-name-repo/downloads",
    "issues_url": "https://api.github.com/repos/octocat/octo-name-repo/issues{/number}",
    "pulls_url": "https://api.github.com/repos/octocat/octo-name-repo/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/octocat/octo-name-repo/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/octocat/octo-name-repo/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/octocat/octo-name-repo/labels{/name}",
    "releases_url": "https://api.github.com/repos/octocat/octo-name-repo/releases{/id}",
    "deployments_url": "https://api.github.com/repos/octocat/octo-name-repo/deployments"
  },
  "html_url": "https://github.com/octocat/octo-name-repo/packages/40201"
}

Delete a package for the authenticated user

Deletes a package owned by the authenticated user. You cannot delete a public package if any version of the package has more than 5,000 downloads. In this scenario, contact GitHub support for further assistance.

To use this endpoint, you must authenticate using an access token with the packages:read and packages:delete scope. If package_type is not container, your token must also include the repo scope.

delete /user/packages/{package_type}/{package_name}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

代码示例

Shell
curl \
  -X DELETE \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME
JavaScript (@octokit/core.js)
await octokit.request('DELETE /user/packages/{package_type}/{package_name}', {
  package_type: 'package_type',
  package_name: 'package_name'
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Restore a package for the authenticated user

Restores a package owned by the authenticated user.

You can restore a deleted package under the following conditions:

  • The package was deleted within the last 30 days.
  • The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.

To use this endpoint, you must authenticate using an access token with the packages:read and packages:write scope. If package_type is not container, your token must also include the repo scope.

post /user/packages/{package_type}/{package_name}/restore

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

token string query

package token

代码示例

Shell
curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME/restore
JavaScript (@octokit/core.js)
await octokit.request('POST /user/packages/{package_type}/{package_name}/restore', {
  package_type: 'package_type',
  package_name: 'package_name'
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get all package versions for a package owned by the authenticated user

Returns all package versions for a package owned by the authenticated user.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /user/packages/{package_type}/{package_name}/versions

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

page integer query

Page number of the results to fetch.

Default: 1
per_page integer query

Results per page (max 100).

Default: 30
state string query

The state of the package, either active or deleted.

Default: active

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME/versions
JavaScript (@octokit/core.js)
await octokit.request('GET /user/packages/{package_type}/{package_name}/versions', {
  package_type: 'package_type',
  package_name: 'package_name'
})

Response

Status: 200 OK
[
  {
    "id": 45763,
    "name": "sha256:08a44bab0bddaddd8837a8b381aebc2e4b933768b981685a9e088360af0d3dd9",
    "url": "https://api.github.com/users/octocat/packages/container/hello_docker/versions/45763",
    "package_html_url": "https://github.com/users/octocat/packages/container/package/hello_docker",
    "created_at": "2020-09-11T21:56:40Z",
    "updated_at": "2021-02-05T21:32:32Z",
    "html_url": "https://github.com/users/octocat/packages/container/hello_docker/45763",
    "metadata": {
      "package_type": "container",
      "container": {
        "tags": [
          "latest"
        ]
      }
    }
  },
  {
    "id": 881,
    "name": "sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344",
    "url": "https://api.github.com/users/octocat/packages/container/hello_docker/versions/881",
    "package_html_url": "https://github.com/users/octocat/packages/container/package/hello_docker",
    "created_at": "2020-05-21T22:22:20Z",
    "updated_at": "2021-02-05T21:32:32Z",
    "html_url": "https://github.com/users/octocat/packages/container/hello_docker/881",
    "metadata": {
      "package_type": "container",
      "container": {
        "tags": []
      }
    }
  }
]

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get a package version for the authenticated user

Gets a specific package version for a package owned by the authenticated user.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /user/packages/{package_type}/{package_name}/versions/{package_version_id}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42
JavaScript (@octokit/core.js)
await octokit.request('GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}', {
  package_type: 'package_type',
  package_name: 'package_name',
  package_version_id: 42
})

Response

Status: 200 OK
{
  "id": 214,
  "name": "sha256:3561f0cff06caccddb99c93bd26e712fcc56a811de0f8ea7a17bb865f30b176a",
  "url": "https://api.github.com/users/octocat/packages/container/hello_docker/versions/214",
  "package_html_url": "https://github.com/users/octocat/packages/container/package/hello_docker",
  "created_at": "2020-05-15T03:46:45Z",
  "updated_at": "2020-05-15T03:46:45Z",
  "html_url": "https://github.com/users/octocat/packages/container/hello_docker/214",
  "metadata": {
    "package_type": "container",
    "container": {
      "tags": [
        "1.13.6"
      ]
    }
  }
}

Delete a package version for the authenticated user

Deletes a specific package version for a package owned by the authenticated user. If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.

To use this endpoint, you must have admin permissions in the organization and authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

delete /user/packages/{package_type}/{package_name}/versions/{package_version_id}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -X DELETE \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42
JavaScript (@octokit/core.js)
await octokit.request('DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}', {
  package_type: 'package_type',
  package_name: 'package_name',
  package_version_id: 42
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Restore a package version for the authenticated user

Restores a package version owned by the authenticated user.

You can restore a deleted package version under the following conditions:

  • The package was deleted within the last 30 days.
  • The same package namespace and version is still available and not reused for a new package. If the same package namespace is not available, you will not be able to restore your package. In this scenario, to restore the deleted package, you must delete the new package that uses the deleted package's namespace first.

To use this endpoint, you must authenticate using an access token with the packages:read and packages:write scope. If package_type is not container, your token must also include the repo scope.

post /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

package_version_id integer path

Unique identifier of the package version.

代码示例

Shell
curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/user/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42/restore
JavaScript (@octokit/core.js)
await octokit.request('POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore', {
  package_type: 'package_type',
  package_name: 'package_name',
  package_version_id: 42
})

Response

Status: 204 No Content

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get a package for a user

Gets a specific package metadata for a public package owned by a user.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /users/{username}/packages/{package_type}/{package_name}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

username string path

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/users/USERNAME/packages/PACKAGE_TYPE/PACKAGE_NAME
JavaScript (@octokit/core.js)
await octokit.request('GET /users/{username}/packages/{package_type}/{package_name}', {
  package_type: 'package_type',
  package_name: 'package_name',
  username: 'username'
})

Response

Status: 200 OK
{
  "id": 40201,
  "name": "octo-name",
  "package_type": "rubygems",
  "owner": {
    "login": "octocat",
    "id": 209477,
    "node_id": "MDQ6VXNlcjIwOTQ3Nw==",
    "avatar_url": "https://avatars.githubusercontent.com/u/209477?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/octocat",
    "html_url": "https://github.com/octocat",
    "followers_url": "https://api.github.com/users/octocat/followers",
    "following_url": "https://api.github.com/users/octocat/following{/other_user}",
    "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
    "organizations_url": "https://api.github.com/users/octocat/orgs",
    "repos_url": "https://api.github.com/users/octocat/repos",
    "events_url": "https://api.github.com/users/octocat/events{/privacy}",
    "received_events_url": "https://api.github.com/users/octocat/received_events",
    "type": "User",
    "site_admin": true
  },
  "version_count": 3,
  "visibility": "public",
  "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name",
  "created_at": "2019-10-20T14:17:14Z",
  "updated_at": "2019-10-20T14:17:14Z",
  "repository": {
    "id": 216219492,
    "node_id": "MDEwOlJlcG9zaXRvcnkyMTYyMTk0OTI=",
    "name": "octo-name-repo",
    "full_name": "octocat/octo-name-repo",
    "private": false,
    "owner": {
      "login": "octocat",
      "id": 209477,
      "node_id": "MDQ6VXNlcjIwOTQ3Nw==",
      "avatar_url": "https://avatars.githubusercontent.com/u/209477?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/octocat",
      "html_url": "https://github.com/octocat",
      "followers_url": "https://api.github.com/users/octocat/followers",
      "following_url": "https://api.github.com/users/octocat/following{/other_user}",
      "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
      "organizations_url": "https://api.github.com/users/octocat/orgs",
      "repos_url": "https://api.github.com/users/octocat/repos",
      "events_url": "https://api.github.com/users/octocat/events{/privacy}",
      "received_events_url": "https://api.github.com/users/octocat/received_events",
      "type": "User",
      "site_admin": true
    },
    "html_url": "https://github.com/octocat/octo-name-repo",
    "description": "Project for octocats",
    "fork": false,
    "url": "https://api.github.com/repos/octocat/octo-name-repo",
    "forks_url": "https://api.github.com/repos/octocat/octo-name-repo/forks",
    "keys_url": "https://api.github.com/repos/octocat/octo-name-repo/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/octocat/octo-name-repo/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/octocat/octo-name-repo/teams",
    "hooks_url": "https://api.github.com/repos/octocat/octo-name-repo/hooks",
    "issue_events_url": "https://api.github.com/repos/octocat/octo-name-repo/issues/events{/number}",
    "events_url": "https://api.github.com/repos/octocat/octo-name-repo/events",
    "assignees_url": "https://api.github.com/repos/octocat/octo-name-repo/assignees{/user}",
    "branches_url": "https://api.github.com/repos/octocat/octo-name-repo/branches{/branch}",
    "tags_url": "https://api.github.com/repos/octocat/octo-name-repo/tags",
    "blobs_url": "https://api.github.com/repos/octocat/octo-name-repo/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/octocat/octo-name-repo/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/octocat/octo-name-repo/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/octocat/octo-name-repo/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/octocat/octo-name-repo/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/octocat/octo-name-repo/languages",
    "stargazers_url": "https://api.github.com/repos/octocat/octo-name-repo/stargazers",
    "contributors_url": "https://api.github.com/repos/octocat/octo-name-repo/contributors",
    "subscribers_url": "https://api.github.com/repos/octocat/octo-name-repo/subscribers",
    "subscription_url": "https://api.github.com/repos/octocat/octo-name-repo/subscription",
    "commits_url": "https://api.github.com/repos/octocat/octo-name-repo/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/octocat/octo-name-repo/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/octocat/octo-name-repo/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/octocat/octo-name-repo/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/octocat/octo-name-repo/contents/{+path}",
    "compare_url": "https://api.github.com/repos/octocat/octo-name-repo/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/octocat/octo-name-repo/merges",
    "archive_url": "https://api.github.com/repos/octocat/octo-name-repo/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/octocat/octo-name-repo/downloads",
    "issues_url": "https://api.github.com/repos/octocat/octo-name-repo/issues{/number}",
    "pulls_url": "https://api.github.com/repos/octocat/octo-name-repo/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/octocat/octo-name-repo/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/octocat/octo-name-repo/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/octocat/octo-name-repo/labels{/name}",
    "releases_url": "https://api.github.com/repos/octocat/octo-name-repo/releases{/id}",
    "deployments_url": "https://api.github.com/repos/octocat/octo-name-repo/deployments"
  },
  "html_url": "https://github.com/octocat/octo-name-repo/packages/40201"
}

Get all package versions for a package owned by a user

Returns all package versions for a public package owned by a specified user.

To use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /users/{username}/packages/{package_type}/{package_name}/versions

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

username string path

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/users/USERNAME/packages/PACKAGE_TYPE/PACKAGE_NAME/versions
JavaScript (@octokit/core.js)
await octokit.request('GET /users/{username}/packages/{package_type}/{package_name}/versions', {
  package_type: 'package_type',
  package_name: 'package_name',
  username: 'username'
})

Response

Status: 200 OK
[
  {
    "id": 3497268,
    "name": "0.3.0",
    "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name/versions/3497268",
    "package_html_url": "https://github.com/octocat/octo-name-repo/packages/40201",
    "license": "MIT",
    "created_at": "2020-08-31T15:22:11Z",
    "updated_at": "2020-08-31T15:22:12Z",
    "description": "Project for octocats",
    "html_url": "https://github.com/octocat/octo-name-repo/packages/40201?version=0.3.0",
    "metadata": {
      "package_type": "rubygems"
    }
  },
  {
    "id": 387039,
    "name": "0.2.0",
    "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name/versions/387039",
    "package_html_url": "https://github.com/octocat/octo-name-repo/packages/40201",
    "license": "MIT",
    "created_at": "2019-12-01T20:49:29Z",
    "updated_at": "2019-12-01T20:49:30Z",
    "description": "Project for octocats",
    "html_url": "https://github.com/octocat/octo-name-repo/packages/40201?version=0.2.0",
    "metadata": {
      "package_type": "rubygems"
    }
  },
  {
    "id": 169770,
    "name": "0.1.0",
    "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name/versions/169770",
    "package_html_url": "https://github.com/octocat/octo-name-repo/packages/40201",
    "license": "MIT",
    "created_at": "2019-10-20T14:17:14Z",
    "updated_at": "2019-10-20T14:17:15Z",
    "html_url": "https://github.com/octocat/octo-name-repo/packages/40201?version=0.1.0",
    "metadata": {
      "package_type": "rubygems"
    }
  }
]

Requires authentication

Status: 401 Unauthorized

Forbidden

Status: 403 Forbidden

Resource not found

Status: 404 Not Found

Get a package version for a user

Gets a specific package version for a public package owned by a specified user.

At this time, to use this endpoint, you must authenticate using an access token with the packages:read scope. If package_type is not container, your token must also include the repo scope.

get /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}

参数

Name Type In Description
accept string header

Setting to application/vnd.github.v3+json is recommended.

package_type string path

The type of supported package. Can be one of npm, maven, rubygems, nuget, docker, or container. Packages in GitHub's Gradle registry have the type maven. Docker images pushed to GitHub's Container registry (ghcr.io) have the type container. You can use the type docker to find images that were pushed to GitHub's Docker registry (docker.pkg.github.com), even if these have now been migrated to the Container registry.

package_name string path

The name of the package.

package_version_id integer path

Unique identifier of the package version.

username string path

代码示例

Shell
curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/users/USERNAME/packages/PACKAGE_TYPE/PACKAGE_NAME/versions/42
JavaScript (@octokit/core.js)
await octokit.request('GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}', {
  package_type: 'package_type',
  package_name: 'package_name',
  package_version_id: 42,
  username: 'username'
})

Response

Status: 200 OK
{
  "id": 387039,
  "name": "0.2.0",
  "url": "https://api.github.com/users/octocat/packages/rubygems/octo-name/versions/387039",
  "package_html_url": "https://github.com/octocat/octo-name-repo/packages/40201",
  "license": "MIT",
  "created_at": "2019-12-01T20:49:29Z",
  "updated_at": "2019-12-01T20:49:30Z",
  "description": "Octo-name client for Ruby",
  "html_url": "https://github.com/octocat/octo-name-repo/packages/40201?version=0.2.0",
  "metadata": {
    "package_type": "rubygems"
  }
}

此文档对您有帮助吗?隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。