Acerca de la API de REST de GitHub
En este artículo se describe cómo usar la API REST de GitHub mediante GitHub CLI, JavaScript o curl
. Para obtener una guía de inicio rápido, consulta "Inicio rápido para la APi de REST GitHub".
Al realizar una solicitud a la API de REST, especificarás un método HTTP y una ruta de acceso. Además, también puedes especificar encabezados de solicitud y parámetros de ruta de acceso, consulta o cuerpo. La API devolverá el código de estado de respuesta, los encabezados de respuesta y, posiblemente, un cuerpo de respuesta.
La documentación de referencia de la API de REST describe el método HTTP, la ruta de acceso y los parámetros de cada operación. También muestra solicitudes y respuestas de ejemplo para cada operación. Para más información, consulta la Documentación de referencia de REST.
Para obtener más información, sobre las API de GitHub, consulta "Acerca de las API de GitHub".
Realización de una solicitud
Para realizar una solicitud, busca primero el método HTTP y la ruta de acceso de la operación que deseas usar. Por ejemplo, la operación "Obtener Octocat" usa el GET
método y la ruta de /octocat
acceso. Para obtener la documentación de referencia completa de esta operación, consulta "Meta".
Nota: Debes instalar GitHub CLI para poder usar los comandos en los ejemplos de GitHub CLI. A fin de obtener instrucciones de instalación, consulta el repositorio de GitHub CLI.
Si aún no estás autenticado en GitHub CLI, debes usar el gh auth login
subcomando para autenticarte antes de realizar solicitudes. Para más información, consulta "Autenticación".
Para realizar una solicitud con GitHub CLI, usa el api
subcomando junto con la ruta de acceso. Usa la marca --method
o -X
para especificar el método.
gh api /octocat --method GET
Nota: Debes instalar e importar octokit
para usar la biblioteca de Octokit.js usada en los ejemplos de JavaScript. Para más información, consulta el archivo README de Octokit.js.
Para realizar una solicitud mediante JavaScript, puedes usar Octokit.js. Para obtener más información, vea «Scripting con la API de REST y JavaScript».
En primer lugar, crea una instancia de Octokit
. y establece la dirección URL base en https://HOSTNAME/api/v3
. Reemplaza [hostname]
por el nombre de host de tu empresa.
const octokit = new Octokit({
baseUrl: "https://HOSTNAME/api/v3",
});
A continuación, usa el método request
para realizar solicitudes. Pasa el método HTTP y la ruta de acceso como primer argumento.
await octokit.request("GET /octocat", {});
Antepón la dirección URL base para la API de REST de GitHub, https://HOSTNAME/api/v3
, a la ruta de acceso para obtener la dirección URL completa: https://HOSTNAME/api/v3/octocat
. Reemplaza [hostname]
por el nombre de tu empresa.
Usa el comando curl
en la línea de comandos. Usa la marca --request
o -X
seguida del método HTTP. Use la marca --url
seguida de la dirección URL completa.
curl --request GET \
--url "https://api.github.com/octocat"
Nota: Si recibes un mensaje similar al "comando no encontrado: curl", es posible que tengas que descargar e instalar curl
. Para más información, consulta la página de descarga del proyecto curl.
Sigue leyendo para aprender a autenticar, enviar parámetros y usar la respuesta.
Autenticación
Muchas operaciones requieren autenticación o devuelven información adicional si te autenticas. Además, puedes realizar más solicitudes por hora cuando te autentiques.
api
.Acerca de los tokens
Puedes autenticar la solicitud agregando un token.
Si deseas usar la API de REST de GitHub para uso personal, puedes crear un personal access token. Las operaciones de la API de REST usadas en este artículo requieren el ámbito repo
para personal access tokens. Otras operaciones pueden requerir ámbitos diferentes. Para obtener más información sobre la creación de un personal access token, consulte "Creación de un token de acceso personal".
Si deseas usar la API en nombre de una organización u otro usuario, GitHub recomienda usar un GitHub App. Si una operación está disponible para GitHub Apps, la documentación de referencia de REST para esa operación dirá "Funciona con aplicaciones de GitHub". Las operaciones de la API de REST que se usan en este artículo requieren issues
permisos de lectura y escritura para GitHub Apps. Otras operaciones pueden requerir permisos diferentes. Para obtener más información, consulta "Crear una GitHub App", "About authentication with a GitHub App" y "Autenticación con una aplicación de GitHub en nombre de un usuario".
Si deseas usar la API en un flujo de trabajo de GitHub Actions, GitHub recomienda autenticarse con el GITHUB_TOKEN
integrado en lugar de crear un token. Puedes conceder permisos a GITHUB_TOKEN
con la clave permissions
. Para obtener más información, vea «Autenticación automática de tokens».
Ejemplo de autenticación
Con GitHub CLI, no es necesario crear un token de acceso de antemano. Usa el subcomando auth login
para autenticarte en GitHub CLI:
gh auth login
Puedes usar la marca --scopes
para especificar qué ámbitos deseas. Si deseas autenticarte con un token que hayas creado, puedes usar la marca --with-token
. Para obtener más información, consulta la documentación de auth login
GitHub CLI.
Advertencia: trata el token de acceso igual que una contraseña.
Para proteger el token, puedes almacenar el token como secreto y ejecutar el script a través de GitHub Actions. Para obtener más información, vea «Secretos cifrados».
Si estas opciones no son posibles, considera la posibilidad de usar otro servicio como la CLI de 1Password para almacenar el token de forma segura.
Para autenticarte con la biblioteca de Octokit.js, puedes pasar el token al crear una instancia de Octokit
. Reemplaza YOUR-TOKEN
por el token. Reemplaza [hostname]
por el nombre de tu empresa.
const octokit = new Octokit({
baseUrl: "https://HOSTNAME/api/v3",
auth: 'YOUR-TOKEN',
});
Advertencia: trata el token de acceso igual que una contraseña.
Para ayudar a proteger tu cuenta, puedes usar GitHub CLI en lugar de comandos curl
. GitHub CLI se encargará de la autenticación. Para obtener más información, consulta la versión de GitHub CLI de esta página.
Si estas opciones no son posibles, considera la posibilidad de usar otro servicio como la CLI de 1Password para almacenar el token de forma segura.
En comandos curl
, enviarás un encabezado Authorization
con el token. Reemplaza YOUR-TOKEN
por tu token:
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer YOUR-TOKEN"
Nota: En la mayoría de los casos, puedes usar Authorization: Bearer
o Authorization: token
para pasar un token. Sin embargo, si vas a pasar un token web JSON (JWT), debes usar Authorization: Bearer
.
Ejemplo de autenticación para GitHub Actions
También puedes usar la run
palabra clave para ejecutar comandos GitHub CLI en los flujos de trabajo de GitHub Actions. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».
En lugar de usar el comando gh auth login
, pasa el token como una variable de entorno denominada GH_TOKEN
. GitHub recomienda autenticarse con el GITHUB_TOKEN
integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN
en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN
, consulta "Autenticación automática de tokens". Para obtener más información sobre secretos, consulte "Secretos cifrados".
jobs:
use_api:
runs-on: ubuntu-latest
permissions: {}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api /octocat
También puedes usar la palabra clave run
para ejecutar los scripts de JavaScript en los flujos de trabajo de GitHub Actions. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».
GitHub recomienda autenticarse con el GITHUB_TOKEN
integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN
en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN
, consulta "Autenticación automática de tokens". Para obtener más información sobre secretos, consulte "Secretos cifrados".
Observa el siguiente flujo de trabajo de ejemplo:
- Comprueba el contenido del repositorio
- Configura Node.js
- Instala
octokit
- Almacena el valor de
GITHUB_TOKEN
como una variable de entorno denominadaTOKEN
y ejecuta.github/actions-scripts/use-the-api.mjs
, que puede tener acceso a esa variable de entorno comoprocess.env.TOKEN
Ejemplo de flujo de trabajo:
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Check out repo content
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
node .github/actions-scripts/use-the-api.mjs
Script de JavaScript de ejemplo, con la ruta de acceso del archivo .github/actions-scripts/use-the-api.mjs
:
import { Octokit } from "octokit";
const octokit = new Octokit({
baseUrl: "https://HOSTNAME/api/v3",
auth: process.env.TOKEN,
});
await octokit.request("GET /octocat", {});
En lugar de almacenar el script en un archivo independiente y ejecutar el script desde el flujo de trabajo, puedes usar la acción actions/github-script
para ejecutar un script. Para más información, consulta el archivo README actions/github-script.
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions: {}
steps:
- uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.request('GET /octocat', {})
También puedes usar la palabra clave run
para ejecutar comandos de curl
en los flujos de trabajo de GitHub Actions. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».
GitHub recomienda autenticarse con el GITHUB_TOKEN
integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN
en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN
, consulta "Autenticación automática de tokens". Para obtener más información sobre secretos, consulte "Secretos cifrados".
jobs:
use_api:
runs-on: ubuntu-latest
permissions: {}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer $GH_TOKEN"
Uso de encabezados
La mayoría de las operaciones especifican que debes pasar un encabezado Accept
con un valor de application/vnd.github+json
. Otras operaciones pueden especificar que debes enviar un encabezado Accept
diferente o encabezados adicionales.
Para enviar un encabezado con datos GitHub CLI, usa la marca --header
o -H
seguida del encabezado en formato key: value
.
gh api --header 'Accept: application/vnd.github+json' --method GET /octocat
La biblioteca de Octokit.js pasa automáticamente el encabezado Accept: application/vnd.github+json
. Para pasar encabezados Accept
adicionales o un encabezado diferente, agrega una propiedad headers
al objeto que se pasa como segundo argumento al método request
. El valor de la propiedad headers
es un objeto con los nombres de encabezado como claves y valores de encabezado como valores. Por ejemplo, para enviar un encabezado content-type
con un valor de text/plain
:
await octokit.request("GET /octocat", {
headers: {
"content-type": "text/plain",
},
});
Para enviar un encabezado en un comando curl
, usa la marca --header
o -H
seguida del encabezado en formato key: value
.
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
Uso de parámetros de la ruta de acceso
Los parámetros de ruta de acceso modifican la ruta de acceso de la operación. Por ejemplo, la ruta de acceso "Enumerar propuestas del repositorio" es /repos/{owner}/{repo}/issues
. Los corchetes de curly indican parámetros de ruta de acceso {}
que debes especificar. En este caso, debes especificar el propietario y el nombre del repositorio. Para obtener la documentación de referencia de esta operación, consulta "Incidencias".
Nota: Para que este comando funcione con tu empresa, reemplaza octocat/Spoon-Knife
por un repositorio propiedad de tu empresa. De lo contrario, vuelve a ejecutar el comando gh auth login
para autenticarte en GitHub.com en lugar de tu empresa.
Para obtener propuestas del repositorio octocat/Spoon-Knife
, reemplaza {owner}
por octocat
y {repo}
por Spoon-Knife
.
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues
Nota: Para que este ejemplo funcione con tu empresa, reemplaza octocat/Spoon-Knife
por un repositorio propiedad de tu empresa. De lo contrario, crea una nueva instancia Octokit
y no especifiques baseURL
.
Al realizar una solicitud con Octokit.js, todos los parámetros, incluidos los parámetros de ruta de acceso, se pasan en un objeto como segundo argumento al método request
. Para obtener propuestas del repositorio octocat/Spoon-Knife
, especifica owner
como octocat
y repo
como Spoon-Knife
.
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife"
});
Para obtener propuestas del repositorio octocat/Spoon-Knife
, reemplaza {owner}
por octocat
y {repo}
por Spoon-Knife
. Para compilar la ruta de acceso completa, antepon la dirección URL base para la API de REST GitHub REST API, https://api.github.com
: https://api.github.com/repos/octocat/Spoon-Knife/issues
.
Nota: Si deseas usar tu empresa en lugar de GitHub.com, usa https://HOSTNAME/api/v3
en vez de https://api.github.com
y reemplaza [hostname]
por el nombre de tu empresa. Reemplaza octocat/Spoon-Knife
por un repositorio propiedad de tu empresa.
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
La operación devuelve una lista de propuestas y datos sobre cada una de ellas. Para obtener más información sobre el uso de la respuesta, consulta la sección "Uso de la respuesta".
Uso de los parámetros de consulta
Los parámetros de consulta permiten controlar qué datos se devuelven para una solicitud. Por ejemplo, un parámetro de consulta puede permitirte especificar cuántos elementos se devuelven cuando se pagina la respuesta.
De forma predeterminada, la operación "Enumerar propuestas del repositorio" devuelve treinta propuestas, ordenados en orden descendente por la fecha en que se crearon. Puedes usar el parámetro per_page
para devolver dos propuestas en lugar de 30. Puedes usar el parámetro sort
para ordenar las propuestas por la fecha en que se actualizaron por última vez en lugar de por la fecha en que se crearon. Puedes usar el parámetro direction
para ordenar los resultados en orden ascendente en lugar de en orden descendente.
Para GitHub CLI, usa la marca -F
para pasar un parámetro que sea un número, booleano o null. Usa -f
para pasar parámetros de cadena.
Nota: GitHub CLI no acepta actualmente parámetros que son matrices. Para más información, consulta esta propuesta.
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 -f sort=updated -f direction=asc
Al realizar una solicitud con Octokit.js, todos los parámetros, incluidos los parámetros de ruta de acceso, se pasan en un objeto como segundo argumento al método request
.
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
sort: "updated",
direction: "asc",
});
Para comandos curl
, agrega ?
al final de la ruta de acceso y, a continuación, anexa el nombre y el valor del parámetro con el formato parameter_name=value
. Separa varios parámetros de consulta con &
.
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2&sort=updated&direction=asc" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
La operación devuelve una lista de propuestas y datos sobre cada una de ellas. Para obtener más información sobre el uso de la respuesta, consulta la sección "Uso de la respuesta".
Uso de parámetros del cuerpo
Los parámetros de cuerpo permiten pasar datos adicionales a la API. Por ejemplo, la operación "Crear una propuesta" requiere que especifiques un título para la nueva propuesta. También te permite especificar otra información, como el texto que se va a colocar en el cuerpo de la propuesta. Para obtener la documentación de referencia completa de esta operación, consulta "Incidencias".
La operación "Crear una propuesta" usa la misma ruta de acceso que la operación "Enumerar propuestas del repositorio" en los ejemplos anteriores, pero usa un método POST
en lugar de un método GET
.
Para GitHub CLI, usa la marca -F
para pasar un parámetro que sea un número, booleano o null. Usa -f
para pasar parámetros de cadena.
Nota: GitHub CLI no acepta actualmente parámetros que son matrices. Para más información, consulta esta propuesta.
gh api --header 'Accept: application/vnd.github+json' --method POST /repos/octocat/Spoon-Knife/issues -f title="Created with the REST API" -f body="This is a test issue created by the REST API"
Al realizar una solicitud con Octokit.js, todos los parámetros, incluidos los parámetros de cuerpo, se pasan en un objeto como segundo argumento al método request
.
await octokit.request("POST /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
title: "Created with the REST API",
body: "This is a test issue created by the REST API",
});
Para comandos curl
, usa la marca --data
para pasar los parámetros del cuerpo a un objeto JSON.
curl --request POST \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--data '{
"title": "Created with the REST API",
"body": "This is a test issue created by the REST API"
}'
La operación crea una propuesta y devuelve datos sobre la nueva propuesta. En la respuesta, busca el valor html_url
de tu propuesta y consúltala en el explorador. Para obtener más información sobre el uso de la respuesta, consulta la sección "Uso de la respuesta".
Análisis de la respuesta
Acerca del código de respuesta y los encabezados
Cada solicitud devolverá un código de estado HTTP que indica el éxito de la respuesta. Para obtener más información sobre los códigos de respuesta, consulta la documentación del código de estado de respuesta HTTP de MDN.
Además, la respuesta incluirá encabezados que proporcionan más detalles sobre la respuesta. Los encabezados que comienzan por X-
o x-
son personalizados para GitHub. Por ejemplo, los encabezados x-ratelimit-remaining
y x-ratelimit-reset
indican cuántas solicitudes puede realizar en un período de tiempo.
Para ver el código de estado y los encabezados, usa la marca --include
o --i
al enviar la solicitud.
Por ejemplo, en esta solicitud:
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 --include
devuelve el código de respuesta y los encabezados como:
HTTP/2.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
Cache-Control: private, max-age=60, s-maxage=60
Content-Security-Policy: default-src 'none'
Content-Type: application/json; charset=utf-8
Date: Thu, 04 Aug 2022 19:56:41 GMT
Etag: W/"a63dfbcfdb73621e9d2e89551edcf9856731ced534bd7f1e114a5da1f5f73418"
Link: ; rel="next", ; rel="last"
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Server: GitHub.com
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Vary: Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With
X-Accepted-Oauth-Scopes: repo
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Github-Api-Version-Selected: 2022-08-09
X-Github-Media-Type: github.v3; format=json
X-Github-Request-Id: 1C73:26D4:E2E500:1EF78F4:62EC2479
X-Oauth-Client-Id: 178c6fc778ccc68e1d6a
X-Oauth-Scopes: gist, read:org, repo, workflow
X-Ratelimit-Limit: 15000
X-Ratelimit-Remaining: 14996
X-Ratelimit-Reset: 1659645499
X-Ratelimit-Resource: core
X-Ratelimit-Used: 4
X-Xss-Protection: 0
En este ejemplo, el código de respuesta es 200
, que indica una solicitud correcta.
Al realizar una solicitud con Octokit.js, el método request
devuelve una promesa. Si la solicitud se realizó correctamente, la promesa se resuelve en un objeto que incluye el código de estado HTTP de la respuesta (status
) y los encabezados de respuesta (headers
). En caso de error, la promesa se resuelve en un objeto que incluye el código de estado HTTP de la respuesta (status
) y los encabezados de respuesta (response.headers
).
Puedes usar un bloque try/catch
para detectar un error si se produce. Por ejemplo, si la solicitud del script siguiente se realiza correctamente, el script registrará el código de estado y el valor del encabezado x-ratelimit-remaining
. Si la solicitud no se realizó correctamente, el script registrará el código de estado, el valor del encabezado x-ratelimit-remaining
y el mensaje de error.
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
console.log(`Success! Status: ${result.status}. Rate limit remaining: ${result.headers["x-ratelimit-remaining"]}`)
} catch (error) {
console.log(`Error! Status: ${error.status}. Rate limit remaining: ${error.headers["x-ratelimit-remaining"]}. Message: ${error.response.data.message}`)
}
Para ver el código de estado y los encabezados, usa la marca --include
o --i
al enviar la solicitud.
Por ejemplo, en esta solicitud:
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--include
devuelve el código de respuesta y los encabezados como:
HTTP/2 200
server: GitHub.com
date: Thu, 04 Aug 2022 20:07:51 GMT
content-type: application/json; charset=utf-8
cache-control: public, max-age=60, s-maxage=60
vary: Accept, Accept-Encoding, Accept, X-Requested-With
etag: W/"7fceb7e8c958d3ec4d02524b042578dcc7b282192e6c939070f4a70390962e18"
x-github-media-type: github.v3; format=json
link: ; rel="next", ; rel="last"
access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
access-control-allow-origin: *
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'
x-ratelimit-limit: 15000
x-ratelimit-remaining: 14996
x-ratelimit-reset: 1659645535
x-ratelimit-resource: core
x-ratelimit-used: 4
accept-ranges: bytes
content-length: 4936
x-github-request-id: 14E0:4BC6:F1B8BA:208E317:62EC2715
En este ejemplo, el código de respuesta es 200
, que indica una solicitud correcta.
Acerca del cuerpo de la respuesta
Muchas operaciones devolverán un cuerpo de respuesta. A menos que se especifique lo contrario, el cuerpo de la respuesta está en formato JSON. Por ejemplo, esta solicitud devuelve una lista de propuestas con datos sobre cada propuesta:
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
A diferencia de GraphQL API donde se especifica la información que deseas, la API de REST normalmente devuelve más información de la que necesitas. Si lo deseas, puedes analizar la respuesta para extraer fragmentos de información específicos.
Por ejemplo, puedes usar >
para redirigir la respuesta a un archivo:
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 > data.json
A continuación, puedes usar jq para obtener el título y el identificador de autor de cada propuesta:
jq '.[] | {title: .title, authorID: .user.id}' data.json
Los dos comandos anteriores devuelven algo parecido a:
{
"title": "Update index.html",
"authorID": 10701255
}
{
"title": "Edit index file",
"authorID": 53709285
}
Para obtener más información sobre jq, consulta la documentación de jq.
Por ejemplo, puedes obtener el título y el identificador de autor de cada propuesta:
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})
console.log(titleAndAuthor)
} catch (error) {
console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
Por ejemplo, puedes usar >
para redirigir la respuesta a un archivo:
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" > data.json
A continuación, puedes usar jq para obtener el título y el identificador de autor de cada propuesta:
jq '.[] | {title: .title, authorID: .user.id}' data.json
Los dos comandos anteriores devuelven algo parecido a:
{
"title": "Update index.html",
"authorID": 10701255
}
{
"title": "Edit index file",
"authorID": 53709285
}
Para obtener más información sobre jq, consulta la documentación de jq.
Pasos siguientes
En este artículo se ha mostrado cómo enumerar y crear propuestas en un repositorio. Para más práctica, intenta comentar una propuesta, edita el título de una propuesta o cierra una propuesta. Para más información sobre estas operaciones, consulta "Incidencias" y "Incidencias".
Para obtener más información sobre las operaciones que puedes usar, consulta la documentación de referencia de REST.