Me gusta mucho Notion y lo uso bastante para cosas como organizar tareas, tomar notas, guardar información importante, recortes, enlaces, etc. Entonces, dado este interés por la aplicación, es totalmente natural querer echar un vistazo rápido a su API y conocer las posibilidades que ofrece.

La documentación de la API de Notion especifica cada uno de los end-points disponibles. Estoy interesado principalmente en cómo obtener información de una base de datos, es decir, el listado de páginas y el contenido de estas, porque tengo en mente un pequeño proyecto usando Notion.

Crear una nueva integración

Para poder acceder a la API de notion es necesario, primero, crear una integración para obtener un token y poder consumir la API. Notion tiene un modo peculiar de permitir el acceso a una base de datos, pero vamos por partes, eso te lo explico mas adelante.

Empiezo ingresando a la sección My integrations para crear la nueva integración e inmediatamente después hago click en la opción Create New Integration y completo los datos requeridos en la pantalla que se me presenta.

Tomada de Notion Developers.

Después de este sencillo paso estoy en condiciones de acceder a la API usando mi nuevo token de integración. Por cierto, esto es importante, selecciono Internal Integration como tipo de integración.

Crear una base de datos

Ahora tengo que crear una base de datos para consumir a través de la API. Este es el proceso de toda la vida para crear una nueva tabla en Notion, pero tengo que dar unos pasos adicionales para poder acceder a mi base de datos. a través de la API. Veamos de qué se trata.

En la base de datos hago clic en la opción Share y luego en el cuadro de texto “Add people, emails…“. Notion muestra un diálogo donde puedo ver la nueva integración, así que la selecciono y hago clic en el botón Invite. Listo, ahora tendré acceso a mi base de datos usando el token de mi integración.

Este paso que acabo de describir es justo lo que mencioné anteriormente como la peculiaridad de Notion para permitir el acceso a la información vía su API.

Esta es mi base de datos.

Trabajar con la integración

Ahora sí, es tiempo de escribir un poco de código, pero solo un poco porque está es una prueba rápida y un vistazo general de la API de Notion. Veamos.

Para hacer mis pruebas voy a crear una pequeña aplicación Node y voy a agregar el SDK javascript de Notion como dependencia para ejecutar los requests a la API de Notion.

Creo un nuevo proyecto con npm o yarn ejecutando npm init dentro del directorio donde residirá mi aplicación. Enseguida creo un archivo index.js y agrego el siguiente código:

const { Client } = require('@notionhq/client');
// Esta es el token que puedes obtener desde
// la página My Integrations en Notion.
const NOTION_TOKEN = "<token>";
// El ID de la base de datos que se consulta
const DATABASE_ID = "<id de base de datos>";

// Instanciamos el cliente de Notion
const notion = new Client({ auth: NOTION_TOKEN });

// y ejecutamos el request
(async () => {
  const response = await notion.databases.query({
    database_id: DATABASE_ID,
  });

  // Imprimimos en consola solo para verificar
  // que el resultado sea correcto
  console.log(response.results ?? "Sin resultados");
})();

y voilá, tenemos el resultado como una respuesta JSON:

[
  {
    object: 'page',
    id: '1e2276b0-0fc8-4895-8f7b-3c666b28bc57',
    created_time: '2021-10-27T02:29:00.000Z',
    last_edited_time: '2021-10-27T02:30:00.000Z',
    cover: null,
    icon: null,
    parent: {
      type: 'database_id',
      database_id: '1eb02524-ae4d-4fbd-a99c-8b0ed8349515'
    },
    archived: false,
    properties: { Tags: [Object], Name: [Object] },
    url: 'https://www.notion.so/Tercera-p-gina-1e2276b00fc848958f7b3c666b28bc57'
  },
  {
    object: 'page',
    id: '57477ff8-dfe5-47db-bc90-215d9b0f7b42',
    created_time: '2021-10-27T02:29:00.000Z',
    last_edited_time: '2021-10-27T02:30:00.000Z',
    cover: null,
    icon: null,
    parent: {
      type: 'database_id',
      database_id: '1eb02524-ae4d-4fbd-a99c-8b0ed8349515'
    },
    archived: false,
    properties: { Tags: [Object], Name: [Object] },
    url: 'https://www.notion.so/Segunda-p-gina-57477ff8dfe547dbbc90215d9b0f7b42'
  },
  {
    object: 'page',
    id: '6ee4f992-5108-4757-9d4e-070291a1e53a',
    created_time: '2021-10-27T02:29:00.000Z',
    last_edited_time: '2021-10-27T02:30:00.000Z',
    cover: null,
    icon: null,
    parent: {
      type: 'database_id',
      database_id: '1eb02524-ae4d-4fbd-a99c-8b0ed8349515'
    },
    archived: false,
    properties: { Tags: [Object], Name: [Object] },
    url: 'https://www.notion.so/Primera-p-gina-6ee4f992510847579d4e070291a1e53a'
  }
]

A partir de aquí es posible utilizar el resultado para procesar información, enviar a un cliente los datos procesados, operar sobre las páginas, etc. Creo que puedes darte una idea de las posibilidades.

Conclusión

Creo que dimos un buen vistazo al uso de la API de Notion y, con el ejemplo de una petición, es posible hacerse una idea de lo fácil que es utilizar la API (al menos en Node) para consultar información.

Ahora solo falta ponerme manos a la obra para un pequeño proyecto que traigo entre manos usando Notion. Experimentos que hace uno.

Comenta

Tu dirección de correo electrónico no será publicada.