Ir al contenido principal

Cómo utilizar la API de Plain

Este artículo explica cómo integrarse con la API de Plain para:

  • Autenticarse correctamente

  • Exportar fichajes y ausencias

  • Obtener vacaciones y otras cuentas de empleados

  • Trabajar en entornos multivenue

El objetivo es que puedas entender el flujo completo antes de empezar a programar.


1. Autenticación

Antes de utilizar cualquier endpoint de Plain, es necesario autenticarse y obtener un token JWT.

Este token identifica a tu aplicación y autoriza las peticiones que hagas a la API.


1.1 Cómo obtener el token JWT

El proceso tiene dos pasos:

Paso 1: Enviar credenciales al endpoint de autenticación

Endpoint:

POST /saas/api/auth/token/

Este endpoint requiere un header Authorization con un token dummy estático:

Authorization: Bearer 9cb029da-b5a6-429e-8184-4ebfb89a732c

Body de la petición:

{   "grant_type": "password",   "username": "<usuario>",   "password": "<password>" }

Notas importantes:

  • El username en Plain siempre es un email.

  • El usuario debe tener rol administrador.

  • Es recomendable crear un usuario específico para la integración.


Paso 2: Usar el token devuelto

La respuesta incluirá:

{   "access_token": "<token jwt>",   "token_type": "BEARER",   "expires_in": 43199,   "company_name": "<company name>" }

El access_token es el token JWT que deberás incluir en todas las llamadas posteriores:

Authorization: Bearer <token jwt>

El token es válido durante 12 horas.
No es necesario solicitar uno nuevo en cada llamada. Puedes almacenarlo y reutilizarlo hasta que expire.


1.2 Entornos multivenue

Si trabajas en un entorno multivenue:

  • La respuesta incluirá other_company_tokens.

  • Cada venue tiene su propio token JWT.

  • Debes crear el usuario administrador en cada venue.

  • El username debe ser exactamente el mismo en todas las venues.

Para operar en cada venue, debes usar el token correspondiente.


2. Exportación de datos a Excel

La exportación de datos (fichajes o ausencias) sigue siempre el mismo patrón:

  1. Obtener un token de descarga.

  2. Usar ese token para descargar el archivo.

Este sistema desacopla la generación del archivo de su descarga.


2.1 Exportación de fichajes

Paso 1: Obtener token de descarga

GET /saas/api/time-registrations/export?page_size=1000&start_from=2026-01-01&start_to=2026-02-28

Respuesta:

{   "access_token": "<token descarga documentos>",   "token_type": "EXPORT",   "expires_in": 31535999,   "company_name": "Nombre de empresa" }

Este token no es el JWT de autenticación.
Es un token específico para descargar el archivo generado.


Paso 2: Descargar el Excel

GET /saas/api/store/download/<token descarga documentos>

Este endpoint devuelve directamente el archivo Excel como un stream.


2.2 Exportación de ausencias

El proceso es exactamente el mismo, pero usando otro endpoint:

GET /saas/api/workflows/export?page_size=1000 &workflow_type=Ausencias &sort=-requested &workflow_status=Pendiente &start_from=2026-01-01 &start_to=2026-01-31

Después se descarga el archivo usando:

GET /saas/api/store/download/<token descarga documentos>

Multivenue en exportaciones

Si trabajas con multivenue:

  • Debes repetir el proceso completo para cada venue.

  • Cada venue requiere su propio JWT.

  • Cada exportación genera su propio token de descarga.


3. Obtener vacaciones y otras cuentas de empleados

Plain no expone directamente las vacaciones disponibles o disfrutadas mediante un endpoint aislado.

Las cuentas se obtienen a través de una vista de planificación.

Esto permite controlar qué columnas quieres exponer en la API.


3.1 Crear una vista de planificación

Desde la aplicación:

Planificación → Configurar vistas → Crear nueva vista

Añade las columnas:

  • Vacaciones pendientes periodo

  • Vacaciones disfrutadas periodo

Guarda la vista con un nombre identificable (por ejemplo: “Vista integración”).


3.2 Obtener el ID de la vista

Endpoint:

GET /saas/api/plan-views

Este endpoint devuelve un listado de vistas con su:

  • id

  • name

Busca la vista creada y guarda su id.


3.3 Obtener las cuentas mediante API

Con el id de la vista:

GET /api/accounts/assignments?page_size=1000 &start=2026-01-01 &end=2026-01-31 &group_id=566 &plan_view_id=<id obtenido>

La respuesta contiene un array data.

Para cada empleado:

  • El email está en:
    data[i].employee.email

  • Las cuentas están en:
    data[i].counters

Cada elemento de counters contiene:

  • label → nombre de la cuenta

  • value → valor de la cuenta

Los valores devueltos corresponden exactamente a las columnas configuradas en la vista.

¿Ha quedado contestada tu pregunta?