Curl 将用户添加到组织存储库github API

Curl 将用户添加到组织存储库github API,curl,github-api,Curl,Github Api,我正在尝试使用curl和githubapi将多个用户添加到私有组团队中的一个团队中。然而,我的语法出了问题,我不确定它是什么 我试过: curl --user "groupowner:password" -X PUT -d "" "https://api.github.com/orgs/ORGNAME/teams/TEAMNAME/members/USERNAMETOBEADDED/" 例如,github文档很有帮助,但我遗漏了一些东西。看起来可能还有其他语法 去掉尾部斜杠并使用team me

我正在尝试使用curl和githubapi将多个用户添加到私有组团队中的一个团队中。然而,我的语法出了问题,我不确定它是什么

我试过:

curl --user "groupowner:password" -X PUT -d "" "https://api.github.com/orgs/ORGNAME/teams/TEAMNAME/members/USERNAMETOBEADDED/"

例如,github文档很有帮助,但我遗漏了一些东西。看起来可能还有其他语法

去掉尾部斜杠并使用team membership API应该可以做到:

curl --user "groupowner:password" -X PUT -d "" "https://api.github.com/teams/TEAMID/memberships/USERNAMETOBEADDED"
OAuth、组织等。 基于Hans Z.的回答,我将向您展示如何邀请电子邮件地址加入一个组织并将其分配给一个团队,所有这些都是一次性完成的。您还会注意到,我使用的是标题,而不是用户名和密码。无论您是作为组织还是个人账户持有人

# Assuming you have `export GITHUB_OAUTH_TOKEN=...` in your .bash_profile

# Define inputs
email="user@example.com"
org_name=DecaturMakers
team_name=Administrators

# Derive request data
team_id="$(
    curl -s                                                               \
         -H "Authorization: token $GITHUB_OAUTH_TOKEN"                    \
         "https://api.github.com/orgs/$org_name/teams"                   |\
      jq 'map(select(.name=="'$team_name'")) | .[].id'
)"
json='{
  "role": "direct_member",
  "team_ids":['$team_id'],
  "email":"'$email'"
}'

# Send invitation
curl -s                                                                   \
     -H "Authorization: token $GITHUB_OAUTH_TOKEN"                        \
     -H "Accept: application/vnd.github.dazzler-preview+json"             \
     -d "$json"                                                           \
     "https://api.github.com/orgs/$org_name/invitations"
输出

{
  "id": 12345678,
  "node_id": "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24xNjcwNTEwNg==",
  "login": null,
  "email": "user@example.com",
  "role": "direct_member",
  "created_at": "2019-08-20T20:53:49Z",
  "inviter": {
    "login": "RichardBronosky",
    "id": 12345,
    "node_id": "MDQ6VXNlcjEzNjIw",
    "avatar_url": "https://avatars3.githubusercontent.com/u/12345?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/RichardBronosky",
    "html_url": "https://github.com/RichardBronosky",
    "followers_url": "https://api.github.com/users/RichardBronosky/followers",
    "following_url": "https://api.github.com/users/RichardBronosky/following{/other_user}",
    "gists_url": "https://api.github.com/users/RichardBronosky/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/RichardBronosky/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/RichardBronosky/subscriptions",
    "organizations_url": "https://api.github.com/users/RichardBronosky/orgs",
    "repos_url": "https://api.github.com/users/RichardBronosky/repos",
    "events_url": "https://api.github.com/users/RichardBronosky/events{/privacy}",
    "received_events_url": "https://api.github.com/users/RichardBronosky/received_events",
    "type": "User",
    "site_admin": false
  },
  "team_count": 1,
  "invitation_teams_url": "https://api.github.com/organizations/01234567/invitations/12345678/teams"
}
[
  "user@example.com",
  "previous_user@example.com"
]
[
  {
    "name": "Administrators",
    "id": 123456,
    "node_id": "H4ShH4ShH4ShH4ShH4==",
    "slug": "administrators",
    "description": null,
    "privacy": "secret",
    "url": "https://api.github.com/teams/123456",
    "html_url": "https://github.com/orgs/DecaturMakers/teams/administrators",
    "members_url": "https://api.github.com/teams/123456/members{/member}",
    "repositories_url": "https://api.github.com/teams/123456/repos",
    "permission": "pull"
  }
]
123456
[
  {
    "login": "DecaturMakers",
    "id": 1234567,
    "node_id": "H4ShH4ShH4ShH4ShH4ShH4ShH4ShH4S=",
    "url": "https://api.github.com/orgs/DecaturMakers",
    "repos_url": "https://api.github.com/orgs/DecaturMakers/repos",
    "events_url": "https://api.github.com/orgs/DecaturMakers/events",
    "hooks_url": "https://api.github.com/orgs/DecaturMakers/hooks",
    "issues_url": "https://api.github.com/orgs/DecaturMakers/issues",
    "members_url": "https://api.github.com/orgs/DecaturMakers/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DecaturMakers/public_members{/member}",
    "avatar_url": "https://avatars1.githubusercontent.com/u/1234567?v=4",
    "description": "Code projects associated with Decatur Makers"
  }
]
您可能会注意到发送邀请的
curl
中的额外标题

奖金 : (您可以使用它来验证上述命令的结果。)

输出

{
  "id": 12345678,
  "node_id": "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24xNjcwNTEwNg==",
  "login": null,
  "email": "user@example.com",
  "role": "direct_member",
  "created_at": "2019-08-20T20:53:49Z",
  "inviter": {
    "login": "RichardBronosky",
    "id": 12345,
    "node_id": "MDQ6VXNlcjEzNjIw",
    "avatar_url": "https://avatars3.githubusercontent.com/u/12345?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/RichardBronosky",
    "html_url": "https://github.com/RichardBronosky",
    "followers_url": "https://api.github.com/users/RichardBronosky/followers",
    "following_url": "https://api.github.com/users/RichardBronosky/following{/other_user}",
    "gists_url": "https://api.github.com/users/RichardBronosky/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/RichardBronosky/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/RichardBronosky/subscriptions",
    "organizations_url": "https://api.github.com/users/RichardBronosky/orgs",
    "repos_url": "https://api.github.com/users/RichardBronosky/repos",
    "events_url": "https://api.github.com/users/RichardBronosky/events{/privacy}",
    "received_events_url": "https://api.github.com/users/RichardBronosky/received_events",
    "type": "User",
    "site_admin": false
  },
  "team_count": 1,
  "invitation_teams_url": "https://api.github.com/organizations/01234567/invitations/12345678/teams"
}
[
  "user@example.com",
  "previous_user@example.com"
]
[
  {
    "name": "Administrators",
    "id": 123456,
    "node_id": "H4ShH4ShH4ShH4ShH4==",
    "slug": "administrators",
    "description": null,
    "privacy": "secret",
    "url": "https://api.github.com/teams/123456",
    "html_url": "https://github.com/orgs/DecaturMakers/teams/administrators",
    "members_url": "https://api.github.com/teams/123456/members{/member}",
    "repositories_url": "https://api.github.com/teams/123456/repos",
    "permission": "pull"
  }
]
123456
[
  {
    "login": "DecaturMakers",
    "id": 1234567,
    "node_id": "H4ShH4ShH4ShH4ShH4ShH4ShH4ShH4S=",
    "url": "https://api.github.com/orgs/DecaturMakers",
    "repos_url": "https://api.github.com/orgs/DecaturMakers/repos",
    "events_url": "https://api.github.com/orgs/DecaturMakers/events",
    "hooks_url": "https://api.github.com/orgs/DecaturMakers/hooks",
    "issues_url": "https://api.github.com/orgs/DecaturMakers/issues",
    "members_url": "https://api.github.com/orgs/DecaturMakers/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DecaturMakers/public_members{/member}",
    "avatar_url": "https://avatars1.githubusercontent.com/u/1234567?v=4",
    "description": "Code projects associated with Decatur Makers"
  }
]
: 输出

{
  "id": 12345678,
  "node_id": "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24xNjcwNTEwNg==",
  "login": null,
  "email": "user@example.com",
  "role": "direct_member",
  "created_at": "2019-08-20T20:53:49Z",
  "inviter": {
    "login": "RichardBronosky",
    "id": 12345,
    "node_id": "MDQ6VXNlcjEzNjIw",
    "avatar_url": "https://avatars3.githubusercontent.com/u/12345?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/RichardBronosky",
    "html_url": "https://github.com/RichardBronosky",
    "followers_url": "https://api.github.com/users/RichardBronosky/followers",
    "following_url": "https://api.github.com/users/RichardBronosky/following{/other_user}",
    "gists_url": "https://api.github.com/users/RichardBronosky/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/RichardBronosky/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/RichardBronosky/subscriptions",
    "organizations_url": "https://api.github.com/users/RichardBronosky/orgs",
    "repos_url": "https://api.github.com/users/RichardBronosky/repos",
    "events_url": "https://api.github.com/users/RichardBronosky/events{/privacy}",
    "received_events_url": "https://api.github.com/users/RichardBronosky/received_events",
    "type": "User",
    "site_admin": false
  },
  "team_count": 1,
  "invitation_teams_url": "https://api.github.com/organizations/01234567/invitations/12345678/teams"
}
[
  "user@example.com",
  "previous_user@example.com"
]
[
  {
    "name": "Administrators",
    "id": 123456,
    "node_id": "H4ShH4ShH4ShH4ShH4==",
    "slug": "administrators",
    "description": null,
    "privacy": "secret",
    "url": "https://api.github.com/teams/123456",
    "html_url": "https://github.com/orgs/DecaturMakers/teams/administrators",
    "members_url": "https://api.github.com/teams/123456/members{/member}",
    "repositories_url": "https://api.github.com/teams/123456/repos",
    "permission": "pull"
  }
]
123456
[
  {
    "login": "DecaturMakers",
    "id": 1234567,
    "node_id": "H4ShH4ShH4ShH4ShH4ShH4ShH4ShH4S=",
    "url": "https://api.github.com/orgs/DecaturMakers",
    "repos_url": "https://api.github.com/orgs/DecaturMakers/repos",
    "events_url": "https://api.github.com/orgs/DecaturMakers/events",
    "hooks_url": "https://api.github.com/orgs/DecaturMakers/hooks",
    "issues_url": "https://api.github.com/orgs/DecaturMakers/issues",
    "members_url": "https://api.github.com/orgs/DecaturMakers/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DecaturMakers/public_members{/member}",
    "avatar_url": "https://avatars1.githubusercontent.com/u/1234567?v=4",
    "description": "Code projects associated with Decatur Makers"
  }
]
组织中的团队成员: 输出

{
  "id": 12345678,
  "node_id": "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24xNjcwNTEwNg==",
  "login": null,
  "email": "user@example.com",
  "role": "direct_member",
  "created_at": "2019-08-20T20:53:49Z",
  "inviter": {
    "login": "RichardBronosky",
    "id": 12345,
    "node_id": "MDQ6VXNlcjEzNjIw",
    "avatar_url": "https://avatars3.githubusercontent.com/u/12345?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/RichardBronosky",
    "html_url": "https://github.com/RichardBronosky",
    "followers_url": "https://api.github.com/users/RichardBronosky/followers",
    "following_url": "https://api.github.com/users/RichardBronosky/following{/other_user}",
    "gists_url": "https://api.github.com/users/RichardBronosky/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/RichardBronosky/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/RichardBronosky/subscriptions",
    "organizations_url": "https://api.github.com/users/RichardBronosky/orgs",
    "repos_url": "https://api.github.com/users/RichardBronosky/repos",
    "events_url": "https://api.github.com/users/RichardBronosky/events{/privacy}",
    "received_events_url": "https://api.github.com/users/RichardBronosky/received_events",
    "type": "User",
    "site_admin": false
  },
  "team_count": 1,
  "invitation_teams_url": "https://api.github.com/organizations/01234567/invitations/12345678/teams"
}
[
  "user@example.com",
  "previous_user@example.com"
]
[
  {
    "name": "Administrators",
    "id": 123456,
    "node_id": "H4ShH4ShH4ShH4ShH4==",
    "slug": "administrators",
    "description": null,
    "privacy": "secret",
    "url": "https://api.github.com/teams/123456",
    "html_url": "https://github.com/orgs/DecaturMakers/teams/administrators",
    "members_url": "https://api.github.com/teams/123456/members{/member}",
    "repositories_url": "https://api.github.com/teams/123456/repos",
    "permission": "pull"
  }
]
123456
[
  {
    "login": "DecaturMakers",
    "id": 1234567,
    "node_id": "H4ShH4ShH4ShH4ShH4ShH4ShH4ShH4S=",
    "url": "https://api.github.com/orgs/DecaturMakers",
    "repos_url": "https://api.github.com/orgs/DecaturMakers/repos",
    "events_url": "https://api.github.com/orgs/DecaturMakers/events",
    "hooks_url": "https://api.github.com/orgs/DecaturMakers/hooks",
    "issues_url": "https://api.github.com/orgs/DecaturMakers/issues",
    "members_url": "https://api.github.com/orgs/DecaturMakers/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DecaturMakers/public_members{/member}",
    "avatar_url": "https://avatars1.githubusercontent.com/u/1234567?v=4",
    "description": "Code projects associated with Decatur Makers"
  }
]
获取您所属的组织: 输出

{
  "id": 12345678,
  "node_id": "MDIyOk9yZ2FuaXphdGlvbkludml0YXRpb24xNjcwNTEwNg==",
  "login": null,
  "email": "user@example.com",
  "role": "direct_member",
  "created_at": "2019-08-20T20:53:49Z",
  "inviter": {
    "login": "RichardBronosky",
    "id": 12345,
    "node_id": "MDQ6VXNlcjEzNjIw",
    "avatar_url": "https://avatars3.githubusercontent.com/u/12345?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/RichardBronosky",
    "html_url": "https://github.com/RichardBronosky",
    "followers_url": "https://api.github.com/users/RichardBronosky/followers",
    "following_url": "https://api.github.com/users/RichardBronosky/following{/other_user}",
    "gists_url": "https://api.github.com/users/RichardBronosky/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/RichardBronosky/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/RichardBronosky/subscriptions",
    "organizations_url": "https://api.github.com/users/RichardBronosky/orgs",
    "repos_url": "https://api.github.com/users/RichardBronosky/repos",
    "events_url": "https://api.github.com/users/RichardBronosky/events{/privacy}",
    "received_events_url": "https://api.github.com/users/RichardBronosky/received_events",
    "type": "User",
    "site_admin": false
  },
  "team_count": 1,
  "invitation_teams_url": "https://api.github.com/organizations/01234567/invitations/12345678/teams"
}
[
  "user@example.com",
  "previous_user@example.com"
]
[
  {
    "name": "Administrators",
    "id": 123456,
    "node_id": "H4ShH4ShH4ShH4ShH4==",
    "slug": "administrators",
    "description": null,
    "privacy": "secret",
    "url": "https://api.github.com/teams/123456",
    "html_url": "https://github.com/orgs/DecaturMakers/teams/administrators",
    "members_url": "https://api.github.com/teams/123456/members{/member}",
    "repositories_url": "https://api.github.com/teams/123456/repos",
    "permission": "pull"
  }
]
123456
[
  {
    "login": "DecaturMakers",
    "id": 1234567,
    "node_id": "H4ShH4ShH4ShH4ShH4ShH4ShH4ShH4S=",
    "url": "https://api.github.com/orgs/DecaturMakers",
    "repos_url": "https://api.github.com/orgs/DecaturMakers/repos",
    "events_url": "https://api.github.com/orgs/DecaturMakers/events",
    "hooks_url": "https://api.github.com/orgs/DecaturMakers/hooks",
    "issues_url": "https://api.github.com/orgs/DecaturMakers/issues",
    "members_url": "https://api.github.com/orgs/DecaturMakers/members{/member}",
    "public_members_url": "https://api.github.com/orgs/DecaturMakers/public_members{/member}",
    "avatar_url": "https://avatars1.githubusercontent.com/u/1234567?v=4",
    "description": "Code projects associated with Decatur Makers"
  }
]

我得到:{“message”:“notfound”,“documentation_url”:“}我的错-我只需要找到teamid: