POST /session/login

Abre una sesión de trabajo y obtiene el token JWT necesario para llamar a los demás endpoints.

Request

POST {{BASE_URL}}/session/login
api-key: {tu-api-key}
secret-key: {tu-clave-secreta}
Content-Type: application/json

{
  "body": {
    "code": "f957f8b8f9664832e6051e3389864682624a8e2b9aaf4dd80fb2aaea7af58940"
  }
}
El code no es un valor fijo

El campo code debe calcularse dinámicamente en cada llamada al login. No es una contraseña estática — es un hash que incluye la fecha del día, por lo que cambia cada 24 horas.

Generación del code (HMAC-SHA256)

El code es un hash HMAC-SHA256 que se calcula con tus propias credenciales. No se transmite ningún secreto como texto plano.

Insumos necesarios:

InsumoTipo / formatoDescripción
API KeyUUIDTu api-key — el mismo que va en el header de todos los endpoints.
Fecha actualstring · YYYY-MM-DDLa fecha del día en que haces el login. El código cambia cada día.
SeedstringTu Código de semilla. Se usa como llave criptográfica del HMAC — no se concatena al mensaje ni se envía en ningún header.

Algoritmo paso a paso:

Paso 1 — Concatenar API Key + Fecha (sin separador):

API Key: 30170525-6ba7-4606-98e3-1391f38662d3
Fecha:   2025-07-07

Mensaje: 30170525-6ba7-4606-98e3-1391f38662d32025-07-07

Paso 2 — Calcular HMAC-SHA256:

code = HMAC_SHA256(
  message = "{api-key}{YYYY-MM-DD}",
  key     = "{seed}"
)

Paso 3 — Resultado: un hash hexadecimal de 64 caracteres. Ese es el valor de body.code.

Ejemplo con valores de referencia:

API Key: 30170525-6ba7-4606-98e3-1391f38662d3
Fecha:   2025-07-07
Seed:    UKEUY-90122904

code resultante:
f957f8b8f9664832e6051e3389864682624a8e2b9aaf4dd80fb2aaea7af58940

Ejemplo de implementación

const crypto = require('crypto');

function generarCode(apiKey, seed) {
  const fecha = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
  const mensaje = apiKey + fecha;
  return crypto.createHmac('sha256', seed).update(mensaje).digest('hex');
}
import hmac, hashlib
from datetime import date

def generar_code(api_key: str, seed: str) -> str:
    fecha = date.today().isoformat()          # YYYY-MM-DD
    mensaje = (api_key + fecha).encode('utf-8')
    return hmac.new(seed.encode('utf-8'), mensaje, hashlib.sha256).hexdigest()
function generarCode(string $apiKey, string $seed): string {
    $fecha   = date('Y-m-d');
    $mensaje = $apiKey . $fecha;
    return hash_hmac('sha256', $mensaje, $seed);
}

Response — 200 OK

{
  "status": {
    "code": "YP-0000",
    "description": "Se ha realizado la ejecución del servicio correctamente"
  },
  "body": {
    "token": "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0...",
    "state": "OPEN",
    "open_at": "2026-06-24T08:02:15.126"
  }
}
CampoTipoDescripción
body.tokenstring · JWTToken de sesión — inclúyelo en el header authorization de los demás endpoints. Sin prefijo Bearer.
body.statestringEstado de la sesión. Valor esperado: OPEN.
body.open_atstring · ISO 8601Fecha y hora de apertura de la sesión.
Duración del token

El token es válido por 24 horas desde su generación. Después de ese tiempo recibirás Unauthorized y deberás hacer login nuevamente.

Cómo usar el token

Incluye el token en el header authorization de todos los demás endpoints. No uses el prefijo “Bearer”, se envía el JWT directamente:

POST {{BASE_URL}}/movement/history
api-key: {tu-api-key}
secret-key: {tu-clave-secreta}
authorization: eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0...
Content-Type: application/json

Errores posibles

CódigoSignificado
YP-0006Sesión expirada o error al procesar el login. Regenera el code y reintenta.
YP-0008Faltan los headers api-key o secret-key.
YP-0002Error genérico de plataforma. Reintenta nuevamente.
¿Te fue útil esta página?