Skip to main content

Inicio rápido para GitHub API REST

Obtenga información sobre cómo empezar a trabajar con la GitHub API REST.

Introducción

En este artículo se describe cómo empezar a trabajar rápidamente con la GitHub API REST mediante GitHub CLI, curlo JavaScript. Para ver una guía más detallada, consulta Introducción a la API REST.

Uso de GitHub CLI en la línea de comandos

GitHub CLI es la manera más fácil de usar la GitHub API REST desde la línea de comandos.

  1. Instale GitHub CLI en macOS, Windows o Linux. Para obtener más información, consulte Instalación en el repositorio de GitHub CLI.

  2. Para autenticarte en GitHub, ejecuta el siguiente comando desde el terminal.

    gh auth login
    
  3. Selecciona dónde deseas autenticarte:

    • Si accedes a GitHub en GitHub.com, selecciona GitHub.com.
    • Si accedes a GitHub en un dominio diferente, selecciona Other y, a continuación, escribe tu nombre de host (por ejemplo: octocorp.ghe.com).
  4. Sigue el resto de las instrucciones que aparecen en pantalla.

    GitHub CLI almacena automáticamente sus credenciales de Git automáticamente cuando elija HTTPS como su protocolo preferido para las operaciones de Git y responda “yes” cuando le pregunten si quiere autenticarse en Git con sus credenciales GitHub. Esto puede ser útil, ya que permite usar comandos Git como git push y git pull sin necesidad de configurar un administrador de credenciales independiente o usar SSH.

  5. Realice una solicitud utilizando el subcomando GitHub CLIapi, seguido de la ruta. Usa la marca --method o -X para especificar el método. Para obtener más información, consulte la GitHub CLIapi documentación.

    En este ejemplo se hace una solicitud al punto de conexión “Obtener Octocat”, que usa el método GET y la ruta de acceso /octocat. Para obtener la documentación de referencia completa de este punto de conexión, consulta Puntos de conexión de la API de REST para metadatos.

    Shell
    gh api /octocat --method GET
    

Uso de GitHub CLI en GitHub Actions

También puede usar GitHub CLI en los GitHub Actions flujos de trabajo. Para más información, consulta Uso de GitHub CLI en flujos de trabajo.

Autenticación con token de acceso

En lugar de usar el comando gh auth login, pasa el token de acceso como una variable de entorno denominada GH_TOKEN. GitHub recomienda que utilice 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 Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.

El siguiente flujo de trabajo de ejemplo usa el endpoint List repository issues y solicita una lista de incidencias en el repositorio que especifique. Reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio.

YAML
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues

Autenticación con GitHub App

Si se autentica con un GitHub App, puede crear un token de acceso de una instalación dentro de su flujo de trabajo:

  1. Guarde el ID de cliente de GitHub App como variable de configuración. En el ejemplo siguiente, reemplaza APP_CLIENT_ID por el nombre de la variable de configuración. Puede encontrar el identificador de cliente en la página de configuración de la aplicación o a través de la API. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables.

  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplaza APP_PRIVATE_KEY por el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.

  3. Agrega un paso para generar un token y use ese token en lugar de GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. En el ejemplo siguiente, reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio.

    YAML
    on:
      workflow_dispatch:
    jobs:
      track_pr:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
    

Uso de Octokit.js

Puede usar Octokit.js para interactuar con la GitHub API REST en los scripts de JavaScript. Para obtener más información, consulta Scripting con la API REST y JavaScript.

  1. Creación de un token de acceso. Por ejemplo, cree un personal access token o un GitHub App token de acceso de usuario. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder a ese punto de conexión. Para obtener más información, consulte Autenticación en la API REST o Identificar y autorizar usuarios para aplicaciones de GitHub.

    Advertencia

    Trate el token de acceso igual que una contraseña.

    Para mantener el token seguro, puede almacenar el token como un secreto y ejecutar el script a través de GitHub Actions. Para obtener más información, consulte la sección Uso de Octokit.js en GitHub Actions .

    Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.

  2. Instalar octokit. Por ejemplo, npm install octokit. Para ver otras formas de instalar o cargar octokit, consulta el archivo README de Octokit.js.

  3. Importaroctokit en tu script. Por ejemplo, import { Octokit } from "octokit";. Para obtener otras formas de importar octokit, consulta el archivo README de Octokit.js.

  4. Cree una instancia de Octokit con tu token. Reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplace YOUR-TOKEN por su token.

    JavaScript
    const octokit = new Octokit({ 
      baseUrl: "http(s)://HOSTNAME/api/v3",
      auth: 'YOUR-TOKEN'
    });
    
  5. Usa octokit.request para ejecutar la solicitud. Envía el método HTTP y la ruta de acceso como primer argumento. Especifica cualquier parámetro de ruta, consulta y cuerpo en un objeto como segundo argumento. Para más información sobre los parámetros de consulta, consulta Introducción a la API REST.

    Por ejemplo, en la siguiente solicitud, el método HTTP es , la ruta de acceso es GETy los parámetros son /repos/{owner}/{repo}/issues y owner: "REPO-OWNER"``repo: "REPO-NAME" Reemplace REPO-OWNER por el nombre de la cuenta propietaria del repositorio y REPO-NAME por el nombre del repositorio.

    JavaScript
    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "REPO-OWNER",
      repo: "REPO-NAME",
    });
    

Uso de Octokit.js en GitHub Actions

También puede ejecutar sus scripts JavaScript en los flujos de trabajo GitHub Actions. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.

Autenticación con token de acceso

GitHub recomienda usar 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 Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.

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
on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v6

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '16.17.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 }}

El siguiente es un script de ejemplo en JavaScript con la ruta del archivo .github/actions-scripts/use-the-api.mjs. Reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio.

import { Octokit } from "octokit"

const octokit = new Octokit({ 
  baseUrl: "http(s)://HOSTNAME/api/v3",
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "REPO-OWNER",
      repo: "REPO-NAME",
    });

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

Autenticación con GitHub App

Si se está autenticando con un GitHub App, puede crear un token de acceso a la instalación dentro de su flujo de trabajo:

  1. Guarde el ID de cliente de su GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza APP_CLIENT_ID por el nombre de la variable de configuración. Puede encontrar el identificador de cliente en la página de configuración de la aplicación o a través de la API de aplicaciones. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables.

  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplaza APP_PRIVATE_KEY por el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.

  3. Agrega un paso para generar un token y use ese token en lugar de GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. Por ejemplo:

    on:
      workflow_dispatch:
    jobs:
      use_api_via_script:
        runs-on: ubuntu-latest
        steps:
          - name: Check out repo content
            uses: actions/checkout@v6
    
          - name: Setup Node
            uses: actions/setup-node@v4
            with:
              node-version: '16.17.0'
              cache: npm
    
          - name: Install dependencies
            run: npm install octokit
    
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Run script
            run: |
              node .github/actions-scripts/use-the-api.mjs
            env:
              TOKEN: ${{ steps.generate-token.outputs.token }}
    
    

Uso de curl en la línea de comandos

Nota:

Si desea realizar solicitudes de API desde la línea de comandos, GitHub recomienda usar GitHub CLI, que simplifica la autenticación y las solicitudes. Para obtener más información sobre cómo empezar a trabajar con la API rest mediante GitHub CLI, consulte la GitHub CLI versión de este artículo.

  1. Instala curl si aún no está instalado en la máquina. Para comprobar si curl está instalado, ejecuta curl --version en la línea de comandos. Si la salida es información sobre la versión de curl, significa que curl está instalado. Si recibes un mensaje similar a command not found: curl, debes descargar e instalar curl. Para más información, consulta la página de descarga del proyecto curl.

  2. Creación de un token de acceso. Por ejemplo, cree un token de acceso de usuario personal access token o GitHub App. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder al punto de conexión. Para más información, consulta Autenticación en la API REST.

    Advertencia

    Trate el token de acceso igual que una contraseña.

    También, puede usar GitHub CLI en lugar de curl. GitHub CLI se encargará de la autenticación por usted. Para obtener más información, consulte la GitHub CLI versión de esta página.

    Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.

  3. Usa el comando curl para realizar la solicitud. Pase el token en un Authorization encabezado. Reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio. Reemplace YOUR-TOKEN por su token.

    Shell
    curl --request GET \
    --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
    --header "Accept: application/vnd.github+json" \
    --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.

Uso de los comandos de curl en GitHub Actions

También puede usar comandos curl en sus flujos de trabajo GitHub Actions.

Autenticación con token de acceso

GitHub recomienda usar GITHUB_TOKEN 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 Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.

En el ejemplo siguiente, reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio.

YAML
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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
          --header "Accept: application/vnd.github+json" \
          --header "Authorization: Bearer $GH_TOKEN"

Autenticación con GitHub App

Si se autentica con un GitHub App, puede crear un token de acceso de instalación en el flujo de trabajo:

  1. Guarde el identificador de cliente de GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza APP_CLIENT_ID por el nombre de la variable de configuración. Puede encontrar el identificador de cliente en la página de configuración de la aplicación o a través de la API de aplicaciones. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables.

  2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplaza APP_PRIVATE_KEY por el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre cómo almacenar secretos, consulta Uso de secretos en Acciones de GitHub.

  3. Agrega un paso para generar un token y use ese token en lugar de GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. En el ejemplo siguiente, reemplace por HOSTNAME el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplace REPO-NAME por el nombre del repositorio.

    YAML
    on:
      workflow_dispatch:
    jobs:
      use_api:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              curl --request GET \
              --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
              --header "Accept: application/vnd.github+json" \
              --header "Authorization: Bearer $GH_TOKEN"
    
    

Pasos siguientes

Para obtener más información, consulta Introducción a la API REST.