Así que estoy tratando de familiarizarme con la API de GitHub. Estoy usando comandos cURL para implementar algunas de sus funciones básicas. Puedo obtener la autorización básica y la creación del repositorio correctamente. Actualmente, estoy tratando de crear un archivo en un repositorio usando su API y me encuentro con el error “mensaje”: “No encontrado” como respuesta.
Sus documentación sugiere esto:
PUT /repos/:owner/:repo/contents/:path
Se me ocurrió esto como el equivalente cURL:
curl -H 'Authorization: <token>' -d '{"path": "test.txt", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test.txt
Creo que el problema está en la URL de la API que estoy usando al final, pero parece que no puedo descifrar cómo debería verse la URL.
Esto es lo que usé para crear un repositorio:
curl -i -H 'Authorization: <token>' -d '{"name": "test_repo1", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/user/repos
La URL de creación del repositorio que utilicé es la siguiente: usuario/repos como sintaxis. Del mismo modo, intenté usar user/repos/repo, pero no funcionó.
¿Alguien puede aclarar esto?
He revisado varias preguntas de StackOverflow y muchas parecen similares, pero ninguna realmente ofrece un ejemplo para que pueda descubrir dónde está el error.
EDITAR: Gracias a TimWolla por la respuesta.
Sintaxis de un comando de trabajo para crear un archivo en un repositorio utilizando la API de GitHub:
curl -i -X PUT -H 'Authorization: token <token_string>' -d '{"path": "<filename.extension>", "message": "<Commit Message>", "committer": {"name": "<Name>", "email": "<E-Mail>"}, "content": "<Base64 Encoded>", "branch": "master"}' https://api.github.com/repos/<owner>/<repository>/contents/<filename.extension>
mi ejemplo:
curl -i -X PUT -H 'Authorization: token f94ce61613d5613a23770b324521b63d202d5645' -d '{"path": "test4.txt", "message": "Initial Commit", "committer": {"name": "Neil", "email": "neil@abc.com"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "branch": "master"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test4.txt
Tuve el mismo problema (404 al intentar crear un archivo, mientras que la lectura de archivos no fue ningún problema) y en mi caso, la solución fue que el token de acceso personal necesitaba tener “admin:repo_hooks” en sus ámbitos (además de usuarios y repositorios). Me tomó algún tiempo descubrir esto.
– Martín Roob
20 de febrero de 2019 a las 6:27