查找您已发布到GitHub软件包的所有私有软件包

时间:2019-11-28 10:09:12

标签: github-api

列出GitHub上所有已发布软件包的API调用是什么?

我正在查看GitHub API v4 GraphQL文档,但是,由于我对GraphQL一无所知,因此我无法理解它。

https://help.github.com/en/github/managing-packages-with-github-packages/deleting-a-package#deleting-a-version-of-a-private-package,我发现了

  

查找已发布到GitHub的所有私有软件包   软件包以及软件包的版本ID,您可以使用   RegistryPackagesForQuery连接。您将需要一个带有   阅读:包和回购范围。有关更多信息,请参见   GitHub Developer文档中的“ registryPackagesForQuery”。

但是那之后我基本上迷路了。

2 个答案:

答案 0 :(得分:0)

使用cURL命令使用registryPackagesForQuery函数:

curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: bearer TOKEN" \
-d '{"query":"{ user(login: \"OWNER\") { registryPackagesForQuery(first: 10, query:\"is:private\") { totalCount nodes { nameWithOwner versions(first: 10) { nodes { id version } } } } }}"}' \
https://api.github.com/graphql

用您的git登录名替换OWNER,用您的个人令牌替换TOKEN

答案 1 :(得分:0)

使用 JavaScript 和 axios 库

用您自己的详细信息替换 OWNER、REPO 和 TOKEN

const axios = require("axios");

const query = `{
          repository(owner: "OWNER", name: "REPO") {
              packages(first:10){
                nodes {
                    id
                    name
                    packageType 
                    versions(first: 10) {
                        nodes {
                            id
                            version
                            files(first: 10) {
                                nodes {
                                    name
                                    updatedAt
                                }
                            }
                        }
                    }
                }
              }
          }
      }`;


(async () => {
    try {
        const token = "TOKEN";
        const config = {
            headers: {accept: "application/vnd.github.v3+json", Authorization: `Bearer ${token}`}
        };
        const response = await axios.post("https://api.github.com/graphql", {query}, config);
        console.log("data", response.data);

    } catch (err) {
        console.log("something went wrong", err)
    }

})();