Saltar al contenido principal
Fire usa dos mecanismos de autenticación: un flujo de login para obtener un token Bearer para las llamadas a la API, y un mecanismo basado en firmas para verificar los eventos webhook entrantes.

Autenticación de la API

El modelo de auth depende de la familia de endpoint que llames:
  • Endpoints /api/v1/* (orders, cancel-order, cash-management, fiscal-callback, fiscal-print, channels-config, payment-methods-config) — solo necesitás x-api-key: pk_live_.... Saltea el flujo de login que sigue abajo.
  • Endpoints /api/v4/integrations/sales/aggregator/* (legacy) — usá el flujo OAuth descripto en esta página para obtener un Bearer access token.
Llamar a la API de Fire requiere dos credenciales en cada petición:
HeaderValor
x-api-keyTu API key de Fire
AuthorizationBearer <access_token>
El x-api-key identifica tu integración. El token Bearer prueba que tu sesión está autenticada. Obtienes el token llamando al endpoint de login.

Paso 1 — Obtén un access token

Llama a POST /auth/login con tu API key en el header y tus credenciales en el body:
POST https://api.fire.rest/v1/auth/login
x-api-key: <your_api_key>
Content-Type: application/json

{
  "username": "<your_username>",
  "password": "<your_password>"
}
La respuesta devuelve un access token y su tiempo de vida:
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 3600
}

Paso 2 — Usa el token en cada petición

Incluye ambos headers en todas las llamadas posteriores a la API:
POST https://api.fire.rest/v1/orders
x-api-key: <your_api_key>
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
Los tokens expiran tras expiresIn segundos. Re-autentica antes de la expiración para evitar errores 401 en peticiones en curso.

Dónde obtener tus credenciales

Las API keys y las credenciales de cuenta se gestionan desde el dashboard de Fire en Settings → API Keys. Contacta a tu equipo de cuenta de Fire si no tienes acceso.

Verificación de firma de webhook

Cada evento que Fire envía está firmado para que tu sistema pueda confirmar que realmente vino de Fire y no fue manipulado en tránsito.

Cómo funciona

Cuando registras tu endpoint en el dashboard de Fire, Fire genera un secret de webhook — una cadena aleatoria que sólo tú y Fire conocen. Nunca viaja en ninguna petición. Cada vez que Fire envía un evento, usa ese secret para calcular una firma del cuerpo de la petición y la adjunta como header X-Fire-Signature. Tu sistema realiza el mismo cálculo sobre el body que recibe y compara el resultado:
Fire:        secret + body  →  firma  →  envía en el header X-Fire-Signature
Tu sistema:  secret + body recibido  →  recalcula  →  compara
Si las firmas coinciden, la petición es auténtica. Si no, descártala.
Verifica siempre la firma antes de procesar un evento. Saltarte este paso expone tu endpoint a peticiones falsificadas por cualquiera que conozca tu URL.

Configuración

Al añadir un endpoint de webhook en una integración de agregadores, el panel muestra el signing secret de ese endpoint (a menudo solo una vez). Cópialo y guárdalo de forma segura — lo necesitas para verificar cada entrega.

Pasos de verificación

1

Lee el header de firma

Extrae el valor del header X-Fire-Signature de la petición entrante.
2

Recalcula la firma

Usando tu secret de webhook, calcula HMAC-SHA256 del body crudo de la petición (antes de cualquier parseo JSON).
3

Compara

Compara el valor calculado con el valor del header usando una comparación de tiempo constante. Si coinciden, procesa el evento. Si no, devuelve 400 y descártalo.
const crypto = require("crypto");

function verifySignature(rawBody, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Usa los bytes crudos del body para el cálculo HMAC — no una versión parseada o re-serializada del JSON. Parsear y re-serializar puede alterar espacios o el orden de las claves y hacer que firmas válidas fallen la verificación.