问题
I am trying to use github api to create organization and repositories instead of creating them manually. I was looking at this site which talks about how to create repositories under a particular organization.
My github instance url is like this - https://github.host.com
And I want my repository to be like this after getting created -
https://github.host.com/Mobile/CustomerSystem
Here Mobile
is the organization name and CustomerSystem
is the repository name. In my case, I don't have Mobile
organization name already created before as I want to create it through Github API along with repository as well.
So I am executing below curl url thinking it will create organization name and repository under them as well but everytime I am getting 404 Not Found
-
curl -i -u david -d '{ "name": "CustomerSystem", "auto_init": true, "private": true, "gitignore_template": "nanoc" }' https://github.host.com/api/v3/orgs/Mobile/repos
Below is the result I am getting -
HTTP/1.1 404 Not Found
Server: GitHub.com
Date: Sat, 07 Feb 2015 20:43:32 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 102
Status: 404 Not Found
X-GitHub-Media-Type: github.v3
X-XSS-Protection: 1; mode=block
X-Frame-Options: deny
Content-Security-Policy: default-src 'none'
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Allow-Origin: *
X-GitHub-Request-Id: fv4af52e-617c-4ga1-br2f-5cb51b1df3bb
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Content-Type-Options: nosniff
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/enterprise/2.0/v3"
}
Is there anything wrong I am doing?
It looks to me if organization name is already created, then my above CURL call works fine and the repository gets created fine without any issues. But if the organization name is not there already then it gives me 404 error message.
Is there any way to create organization name as well through github API? In some cases, I might have Organization name already created before, so I will create new repository under them but in some cases, I might not have Organization name already created before so I need to create Organization name through Github API.
回答1:
You can check out how a wrapper like go-gihub proposes to manage an organization, reflecting the Organization API.
You can list, get or edit an organization, but apparently not create one.
回答2:
Is there any way to create organization name as well through github API?
Currently it's not possible to create organizations nor user accounts via the GitHub API.
回答3:
GitHub doesn't privide a public api for that.
But say if you want to automate the organization creation process, you can inspect the network activity (press F12 in your browser and navigate to the network tab) on this page
https://github.com/account/organizations/new
to find out the private api for checking name availability and creating an organization, then export the request as curl command, put it in a shell script and parameterize the organization name.
I won't go into details or post my script here because the script is fairly to trivial to write and it will leak my browser cookie and session information
btw if you are using GitHub Enterprise then it's documented here
https://developer.github.com/enterprise/2.16/v3/enterprise-admin/orgs/ https://github.com/aws-quickstart/quickstart-github-enterprise/blob/master/scripts/adminuser_org_repo.sh
Update:
WARNING!!! Be careful not to create too many organizations. I currently have created over 500+ organizations with my personal account. Now each time I visit a page on github with my account logged in, it will either take seconds to load or doesn't load at all, showing the unicorn page like https://github.com/503.html. If I log out of my account, the page loads quickly again. I've pretty much given up using the github web ui.
回答4:
You could try something like this
curl --include -u victor-raul-hernandez-contreras:your-personal-access-token-here -X POST https://github.hpe.com/api/v3/admin/organizations --data '{"login":"loko200","profile_name":"lokosoft, inc.", "admin":"victor-raul-hernandez-contreras"}'
It worked for me at github enterprise.
来源:https://stackoverflow.com/questions/28389414/how-to-create-organization-name-through-github-api-instead-of-creating-manually