¿Cómo editar un problema de github usando la API (curl)? (especialmente: cerrar)

Estoy planeando migrar un par de cientos de errores rastreados en otro sistema (rodado en casa) al sistema de problemas de GitHub. La mayoría de estos errores fueron cerrados en el pasado. Puedo usar la API de Github para crear un problema, por ejemplo

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{ "title": "test", "body": "the body" }' 

… sin embargo, esto me dejará con un montón de problemas abiertos. ¿Cómo cerrar esos? Intenté simplemente cerrar en el momento de la creación, por ejemplo:

 curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{ "title": "test", "body": "the body", "state": "closed" }' 

… pero el resultado es crear un problema abierto (es decir, se ignora el "estado").

Me parece que debería poder "editar" un problema para cerrarlo ( https://developer.github.com/v3/issues/#edit-an-issue ) … pero no puedo entenderlo cómo se supone que se debe ver el command curl correspondiente. ¿Alguna guía?

Crédito adicional: me gustaría poder asignar una date "cerrada" para aceptar la date de cierre real capturada en nuestro sistema actual. No está claro que esto sea posible.

¡Gracias!

migrando un montón de problemas a github con la línea de command? ¿estas loco?

de todos modos, usando php y hhb_curl desde https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php , esto funcionó para mí, lamentablemente no se pudo establecer la date "closed_at" ( fue ignorado por la API), pero pude emularlo usando tags, entonces parecía

enter image description here

, el código debería darle algo para trabajar cuando lo transfiera a la línea de command:

 <?php declare(strict_types = 1); require_once ('hhb_.inc.php'); $hc=new hhb_curl(); define('BASE_URL','https://api.github.com'); $hc->_setComfortableOptions(); $data=array( 'state'=>'closed', 'closed_at'=> '2011-04-22T13:33:48Z',// << unfortunately, ignonetworking 'labels'=>array( 'closed at 2011-04-22T13:33:48Z' // << we can fake it using labels... ) ); $data=json_encode($data); $hc->setopt_array(array( CURLOPT_CUSTOMREQUEST=>'PATCH', // /repos/:owner/:repo/issues/:number // https://github.com/divinity76/GitHubCrashTest/issues/1 CURLOPT_URL=>BASE_URL.'/repos/divinity76/GitHubCrashTest/issues/1', CURLOPT_USERAGENT=>'test', CURLOPT_HTTPHEADER=>array( 'Accept: application/vnd.github.v3+json', 'Content-Type: application/json', 'Authorization: token <removed>' ), CURLOPT_POSTFIELDS=>$data, )); $hc->exec(); hhb_var_dump($hc->getStdErr(),$hc->getResponseBody()); 

(Modifiqué la línea "Autorización: token" antes de publicarla en stackoverflow ofc)

Según lo sugerido por hanshenrik, el command corregido alterado correcto es:

 curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues/5 -d '{ "state": "closed" }' 

No entendí la documentation a la que se hacía reference en su respuesta: / repos /: owner /: repo / issues /: number se traduce a https://api.github.com/repos/my_organization/my_repo/issues/5 (ahora entiendo que los campos que comienzan con ":" son variables)

Para el logging, planeo progtwigr las llamadas para curl. 🙂