Github-api que da 404 al pasar json-data con python + urllib2

Tengo el siguiente código, que debería realizar la primera parte de la creación de una nueva descarga en github. Debe enviar los datos json con POST.

<code>jsonstring = '{"name": "test", "size": "4"}'
req = urllib2.Request("https://api.github.com/repos/<user>/<repo>/downloads")
req.add_header('Authorization', 'token ' + '<token>')
result = urllib2.urlopen(req, jsonstring)
</code>

Si quito el, jsonstring desde elurlopen(), no falla, y me da la lista de descargas disponibles. Sin embargo, si trato de POSTAR el json-string, obtengo un error 404.

El problema tiene que ser con el json, o en la forma en que lo envío, pero no puedo averiguar cuál es el problema. Las cuerdas en<...> están justo en el código real, los acabo de eliminar de la publicación

Intenté más o menos lo mismo concurl en la línea de comandos, con un método de autenticación ligeramente diferente, y funcionó.

Probado

Funciona (devuelve el json deseado):

<code>curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads
</code>

Trabajos:

<code>curl -H 'Authorization: token <token>' https://api.github.com/
</code>

No funciona (devuelve "credenciales inválidas"):

<code>curl -H 'Authorization: token <invalid_token>' https://api.github.com/
</code>

No funciona ("no encontrado"):

<code>curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads
</code>

Esto no parece ser un problema específico del código de Python. Los datos POST de json parecen estar bien, y la autorización del token OAuth parece estar funcionando (al menos en parte). Pero cuando estos se ponen juntos, deja de funcionar.

Respuestas a la pregunta(4)

Su respuesta a la pregunta