Skip to main content
Publicamos actualizaciones para la documentación con frecuencia y es posible que aún se esté traduciendo esta página. Para obtener la información más reciente, consulta la documentación en inglés.
GitHub AE es una versión limitada en este momento.

Introducción a la API REST

Obtén información sobre el uso de la API de REST de GitHub.

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 de 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 más información sobre GitHub's APIs, consulta "Sobre 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 "Obtener Octocat".

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, consulta "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 your enterprise.

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 your enterprise.

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.

Aunque se puede acceder a algunas operaciones de la API de REST sin autenticación, debes autenticarte en GitHub CLI para poder usar el subcomando 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, consulta "Creación de un personal access token".

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 "Creación de una aplicación de GitHub", "Autenticación con aplicaciones de GitHub" e "Identificación y autorización de usuarios para aplicaciones de GitHub".

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 más información, vea "Autenticación de token automática".

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 loginGitHub 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 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 your enterprise.

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 más información, vea "Sintaxis de 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 el GITHUB_TOKEN, consulta "Autenticación de token automática". Para más información sobre los secretos, vea "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 más información, vea "Sintaxis de 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 el GITHUB_TOKEN, consulta "Autenticación de token automática". Para más información sobre los secretos, vea "Secretos cifrados".

Observa el siguiente flujo de trabajo de ejemplo:

  1. Comprueba el contenido del repositorio
  2. Configura Node.js
  3. Instala octokit
  4. Almacena el valor de GITHUB_TOKEN como una variable de entorno denominada TOKEN y ejecuta .github/actions-scripts/use-the-api.mjs, que puede tener acceso a esa variable de entorno como process.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@v2

      - name: Setup Node
        uses: actions/setup-node@v2
        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@v5
        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 más información, vea "Sintaxis de 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 el GITHUB_TOKEN, consulta "Autenticación de token automática". Para más información sobre los secretos, vea "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 "Enumerar propuestas del repositorio".

Nota: Para que este comando funcione con your enterprise, reemplaza octocat/Spoon-Knife por un repositorio propiedad de your enterprise. De lo contrario, vuelve a ejecutar el comando gh auth login para autenticarte en GitHub.com en lugar de your enterprise.

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 your enterprise, reemplaza octocat/Spoon-Knife por un repositorio propiedad de your enterprise. 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 your enterprise en lugar de GitHub.com, usa https://HOSTNAME/api/v3 en vez de https://api.github.com y reemplaza [hostname] por el nombre de your enterprise. Reemplaza octocat/Spoon-Knife por un repositorio propiedad de your enterprise.

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 "Crear una propuesta".

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 y jq play.

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 y jq play.

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 obtener más información sobre estas operaciones, consulta "Crear un comentario de propuesta" y "Actualizar una propuesta".

Para obtener más información sobre las operaciones que puedes usar, consulta la documentación de referencia de REST.