Skip to content

Autenticación — API de Zelta Nómina

La API de Zelta Nómina utiliza autenticación basada en tokens Bearer (OAuth 2.0) para proteger el acceso a los datos sensibles de nómina y empleados.

Obtener un token de acceso

Paso 1: Crear una aplicación API

  1. Ve a Ajustes > API > Aplicaciones.
  2. Haz clic en + Nueva aplicación.
  3. Completa los datos:
    • Nombre de la aplicación
    • URL de redirección (para flujo OAuth)
    • Scopes requeridos
  4. Guarda y copia tu client_id y client_secret.

Seguridad

El client_secret solo se muestra una vez al momento de crearlo. Guárdalo en un lugar seguro. Si lo pierdes, deberás generar uno nuevo. Dado que la API maneja datos sensibles de nómina, se recomienda rotar las credenciales periódicamente.

Paso 2: Solicitar un token

bash
curl -X POST https://api.zelta.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "tu_client_id",
    "client_secret": "tu_client_secret",
    "scope": "nomina:read nomina:write"
  }'

Respuesta exitosa

json
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "nomina:read nomina:write"
}

Paso 3: Usar el token

Incluye el token en el header Authorization de cada petición:

bash
curl -X GET https://api.zelta.dev/v1/nomina/employees \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."

Scopes disponibles

ScopeDescripciónPermisos
nomina:readLectura de datos de nóminaConsultar empleados, periodos, recibos y reportes.
nomina:writeEscritura de datos de nóminaCrear/actualizar empleados, registrar incidencias, ejecutar cálculos.
nomina:adminAdministración completaEliminar registros, timbrar CFDI, gestionar configuración fiscal.

Principio de mínimo privilegio

Solicita únicamente los scopes que tu aplicación necesita. Los datos de nómina son información sensible; restringe el acceso al mínimo necesario.

Renovación de tokens

Los tokens tienen una vigencia de 1 hora (3600 segundos). Para renovar:

bash
curl -X POST https://api.zelta.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "refresh_token",
    "refresh_token": "tu_refresh_token",
    "client_id": "tu_client_id"
  }'

Errores de autenticación

Código HTTPErrorDescripción
401unauthorizedToken ausente, expirado o inválido.
403forbiddenEl token no tiene los scopes necesarios.
429rate_limitedSe excedió el límite de peticiones.

Ejemplo de error

json
{
  "error": "forbidden",
  "message": "El scope 'nomina:admin' es requerido para timbrar CFDI.",
  "hint": "Solicita un nuevo token con el scope adecuado."
}

Límites de tasa (Rate Limiting)

PlanLímite
Starter60 peticiones/minuto
Business300 peticiones/minuto
Enterprise1,000 peticiones/minuto

Los headers de respuesta incluyen información sobre tu consumo:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 290
X-RateLimit-Reset: 1709145600

Consejo

Para procesar nóminas masivas vía API, utiliza los endpoints de operaciones en lote (batch) que permiten enviar múltiples registros en una sola petición.

Documentación oficial de Zelta