Chuck
Chuck

Reputation: 85

GitHub API Create File Returns 404

This seems to be answered elsewhere but using the same command as other answers I still get a 404.

I'm trying to test creating a file with GitHub's v3 API. Whether I use curl or a rest api tester I get a 404 "not found" error. I believe I am getting properly authorized as I can check my rate count and it is counting down from 5,000 (the rate limit you get when authorized).

I can do a GET like so:

curl -X GET -H "Authorization: token <mytoken>" https://api.github.com/repos/<myorg>/<myrepo>/contents/testfile

My PUT is like so:

curl -X PUT -H "Authorization: token <mytoken>" https://api.github.com/repos/<myorg>/<myrepo>/contents/newfile -d "{'message': 'Initial Commit','content': 'bXkgbmV3IGZpbGUgY29udGVudHM='}"

I've also tried this:

curl -X PUT -H "Authorization: token <mytoken>" https://api.github.com/repos/<myorg>/<myrepo>/contents/test.txt -d "{'path': 'test.txt', 'branch': 'dev', 'message': 'Initial Commit', 'committer': {'name': '<myname>', 'email': '<myemail>'}, 'content': 'bXkgbmV3IGZpbGUgY29udGVudHM='}"

So to recap, GET seems to work. PUT seems to not work. If anyone can help please do. If I get no answer, someone please tell my story.

Upvotes: 2

Views: 2869

Answers (2)

Mykel
Mykel

Reputation: 1774

I was creating an API wrapper and my input path had an extra leading "/" I removed the forward slash and no more error 404.

So, look for typos in the request URL, especially if your path constructor places a trailing slash. Good constructors usually take care of this case, but clearly not all.

Upvotes: 0

Chuck
Chuck

Reputation: 85

Turns out, I'm just a moron. I was using the personal access token (PAT) of a user that had read-only access to my repo. Using a PAT of someone that had write access worked just fine. Who knew?

Sorry about that, internet. I'll never doubt you again.

Upvotes: 4

Related Questions