Skip to main content

Guía de inicio rápido para la API de REST de GitHub

Aprende cómo iniciar con la API de REST de GitHub.

Este artículo describe cómo iniciar rápidamente con la API de REST de GitHub utilizando el CLI de GitHub, JavaScript o cURL. Para obtener una guía más detallada, consulta la sección "Iniciar con la API de REST".

Iniciar utilizando el CLI de GitHub

Utilizar el CLI de GitHub en la línea de comando

El CLI de GitHub es la forma más fácil de utilizar la API de REST de GitHub desde la línea de comandos.

  1. Instala el CLI de GitHub si aún no lo has hecho. Para obtener las instrucciones de instalación, consulta el repositorio del CLI de GitHub.

  2. Utiliza el subcomando auth login para autenticarte en el CLI de GitHub. Para obtener más información, consulta la documentación de auth login del CLI de GitHub.

    gh auth login
  3. Utiliza el subcomando api para hacer tu solicitud de la API. Para obtener más información, consulta la documentación de api del CLI de GitHub.

    gh api repos/octocat/Spoon-Knife/issues

Utilizar el CLI de GitHub en GitHub Actions

También puedes utilizar el CLI de GitHub en tus flujos de trabajo de GitHub Actions. Para obtener más información, consulta la sección "Utilizar el CLI de GitHub en los flujos de trabajo".

En vez de utilizar el comando gh auth login, pasa un token de acceso como una variable de ambiente llamada GH_TOKEN. GitHub recomienda que utilices el GITHUB_TOKEN integrado en vez de crear un token. Si esto es imposible, almacena tu token como un secreto y reemplaza a GITHUB_TOKEN por el nombre de tu secreto en el siguiente ejemplo. Para obtener más información sobre el GITHUB_TOKEN, consulta ""Automatic token authentication". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

Si te estás autenticando con una GitHub App, puedes crear un token de acceso a la instalación dentro de tu flujo de trabajo:

  1. Almacena la ID de tu GitHub App como un secreto. En el siguiente ejemplo, reemplaza APP_ID con el nombre del secreto. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para obtener más información, consulta la sección "Apps". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".
  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluyendo -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----.) En el siguiente ejemplo, reemplaza a APP_PEM con el nombre del secreto. Para obtener más información, consulta la sección "Autenticarse con GitHub Apps".
  3. Agrega un paso para generar un token y utilizarlo en vez de GITHUB_TOKEN. Nota que este token expirará después de 60 minutos. Por ejemplo:
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

on:
  workflow_dispatch:
jobs:
  track_pr:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PEM }}

      - name: Use API
        env:
          GH_TOKEN: ${{ steps.generate_token.outputs.token }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

Comenzar a utilizar JavaScript

Puedes utilizar Octokit.js para interactuar con la API de REST de GitHub en tus scripts de JavaScript. Para obtener más información, consulta el README de Octokit.js.

Utilizar Octokit.js

  1. Crear un token de acceso. Por ejemplo, crea un token de acceso personal (PAT) o un token de acceso de usuario a servidor de GitHub App. For more information, see "Creating a personal access token" or "Identifying and authorizing users for GitHub Apps."

    Advertencia: Trata a tu token de acceso como si fuera una contraseña.

    Para mantener seguro a tu token, puedes almacenarlo como un secreto y ejecutar tu script mediante GitHub Actions. For more information, see the "Using Octokit.js in GitHub Actions" section.

    You can also store your token as a Codespaces secret and run your script in Codespaces. Para obtener más información, consulta la sección "Administrar los secretos cifrados para tus codespaces".

    Si estas opciones no son posibles, considera utilizar otro servicio tal como el 1Password CLI para almacenar tu token de forma segura.

  2. Install octokit. For example, npm install octokit. For other ways to install or load octokit, see the Octokit.js README.

  3. Import octokit in your script. For example, import { Octokit } from "octokit";. For other ways to import octokit, see the Octokit.js README.

  4. Create an instance of Octokit with your token. Replace YOUR-TOKEN with your token.

    const octokit = new Octokit({
      auth: 'YOUR-TOKEN'
    });
    
  5. Use octokit.request to execute your request. Send the HTTP method and path as the first argument. Specify any path, query, and body parameters in an object as the second argument. For example, in the following request the HTTP method is GET, the path is /repos/{owner}/{repo}/issues, and the parameters are owner: "octocat" and repo: "Spoon-Knife".

    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });
    

Using Octokit.js in GitHub Actions

You can also execute your JavaScript scripts in your GitHub Actions workflows. Para obtener más información, consultala sección "Sintaxis de flujo de trabajo para GitHub Actions".

GitHub recomienda que utilices el GITHUB_TOKEN integrado en vez de crear un token. Si esto es imposible, almacena tu token como un secreto y reemplaza a GITHUB_TOKEN por el nombre de tu secreto en el siguiente ejemplo. Para obtener más información sobre el GITHUB_TOKEN, consulta ""Automatic token authentication". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".

El siguiente flujo de trabajo de ejemplo:

  1. Verifica el contenido del repositorio
  2. Configura a Node.js
  3. Instala octokit
  4. Almacena el valor de GITHUB_TOKEN como una variable de ambiente llamada TOKEN y ejecuta .github/actions-scripts/use-the-api.mjs, que puede acceder a esa variable de ambiente como process.env.TOKEN

Flujo de trabajo de ejemplo:

on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '16.15.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Run script
        run: |
          node .github/actions-scripts/use-the-api.mjs
        env:
          TOKEN: ${{ secrets.GITHUB_TOKEN }}

Script de JavaScript de ejemplo con la ruta de archivo .github/actions-scripts/use-the-api.mjs:

import { Octokit } from "octokit"

const octokit = new Octokit({
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });

  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}`)
}

Si te estás autenticando con una GitHub App, puedes crear un token de acceso a la instalación dentro de tu flujo de trabajo:

  1. Almacena la ID de tu GitHub App como un secreto. En el siguiente ejemplo, reemplaza APP_ID con el nombre del secreto. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para obtener más información, consulta la sección "Apps". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".
  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluyendo -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----.) En el siguiente ejemplo, reemplaza a APP_PEM con el nombre del secreto. Para obtener más información, consulta la sección "Autenticarse con GitHub Apps".
  3. Agrega un paso para generar un token y utilizarlo en vez de GITHUB_TOKEN. Nota que este token expirará después de 60 minutos. Por ejemplo:
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repo content
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '16.15.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PEM }}

      - name: Run script
        run: |
          node .github/actions-scripts/use-the-api.mjs
        env:
          TOKEN: ${{ steps.generate_token.outputs.token }}

Getting started using cURL

Using cURL in the command line

Note: If you want to make API requests from the command line, GitHub recommends that you use CLI de GitHub, which simplifies authentication and requests. For more information about getting started with the REST API using CLI de GitHub, see the CLI de GitHub version of this article.

  1. Install cURL if cURL isn't already installed on your machine. To check if cURL is installed, execute curl --version in the command line. If the output is information about the cURL version, cURL is installed. If you get a message similar to command not found: curl, you need to download and install cURL. Para obtener más información, consulta la página de descarga del proyecto cURL.

  2. Crear un token de acceso. Por ejemplo, crea un token de acceso personal (PAT) o un token de acceso de usuario a servidor de GitHub App. For more information, see "Creating a personal access token" or "Identifying and authorizing users for GitHub Apps."

    Advertencia: Trata a tu token de acceso como si fuera una contraseña.

    To keep your token secure, you can store your token as a Codespaces secret and use the command line through Codespaces. Para obtener más información, consulta la sección "Administrar los secretos cifrados para tus codespaces".

    You can also use CLI de GitHub instead of cURL. El CLI de GitHub se encargará de la autenticación por ti. Para obtener más información, consulta la versión del CLI de GitHub de esta página.

    Si estas opciones no son posibles, considera utilizar otro servicio tal como el 1Password CLI para almacenar tu token de forma segura.

  3. Use the cURL command to make your request. Pass your token in an Authorization header. Replace YOUR-TOKEN with your token.

    curl --request GET \
    --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
    --header "Accept: application/vnd.github.v3+json" \
    --header "Authorization: Bearer YOUR-TOKEN"

    Nota: In most cases, you can use Authorization: Bearer or Authorization: token to pass a token. However, if you are passing a JSON web token (JWT), you must use Authorization: Bearer.

Using cURL in GitHub Actions

You can also use cURL in your GitHub Actions workflows.

GitHub recomienda que utilices el GITHUB_TOKEN integrado en vez de crear un token. Si esto es imposible, almacena tu token como un secreto y reemplaza a GITHUB_TOKEN por el nombre de tu secreto en el siguiente ejemplo. Para obtener más información sobre el GITHUB_TOKEN, consulta ""Automatic token authentication". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          curl --request GET \
          --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
          --header "Accept: application/vnd.github.v3+json" \
          --header "Authorization: Bearer $GH_TOKEN"

Si te estás autenticando con una GitHub App, puedes crear un token de acceso a la instalación dentro de tu flujo de trabajo:

  1. Almacena la ID de tu GitHub App como un secreto. En el siguiente ejemplo, reemplaza APP_ID con el nombre del secreto. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para obtener más información, consulta la sección "Apps". Para obtener más información sobre los secretos, consulta la sección "Secretos cifrados".
  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluyendo -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----.) En el siguiente ejemplo, reemplaza a APP_PEM con el nombre del secreto. Para obtener más información, consulta la sección "Autenticarse con GitHub Apps".
  3. Agrega un paso para generar un token y utilizarlo en vez de GITHUB_TOKEN. Nota que este token expirará después de 60 minutos. Por ejemplo:
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PEM }}

      - name: Use API
        env:
          GH_TOKEN: ${{ steps.generate_token.outputs.token }}
        run: |
          curl --request GET \
          --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
          --header "Accept: application/vnd.github.v3+json" \
          --header "Authorization: Bearer $GH_TOKEN"

Pasos siguientes

Para obtener una guía más detallada, consulta la sección "Iniciar con la API de REST".