CMS Link - API

Documentación de endpoints, parámetros y JSON requerido.

Flujo recomendado: POST /v1/auth/token ➜ usar Bearer token en endpoints protegidos.

POST /v1/auth/token Pública

Generar token

Valida credenciales del cliente y devuelve access_token.

Body JSON

{
  "client_id": "mi_cliente",
  "client_secret": "mi_secreto"
}

Respuesta ejemplo

{
  "access_token": "<jwt>",
  "token_type": "Bearer",
  "expires_in": 3600
}

Errores posibles

HTTP Código Mensaje
401 UNAUTHORIZED Credenciales inválidas
429 RATE_LIMITED Demasiadas solicitudes
500 INTERNAL_ERROR Error interno
GET /v1/asistencias Bearer JWT

Consultar asistencias

Consulta asistencias por rango de fechas del tenant autenticado. inicio/fin en formato YYYY-MM-DD.

Query: inicio=2026-03-01&fin=2026-03-31&empleado=123

Respuesta ejemplo

{
  "items": [
    {
      "CLIENTE": "Cliente Demo",
      "EMPLEADO": "Juan Pérez",
      "FECHA_INICIO": "2026-03-20",
      "ENTRADA": "08:00",
      "SALIDA": "17:00"
    }
  ]
}

Errores posibles

HTTP Código Mensaje
400 VALIDATION_ERROR Debes enviar fecha inicial y fecha final.
400 VALIDATION_ERROR Las fechas deben venir en formato YYYY-MM-DD (ejemplo: 2026-02-27).
400 VALIDATION_ERROR Las fechas enviadas no son válidas. Revisa el formato y el calendario.
400 VALIDATION_ERROR La fecha final no puede ser menor que la fecha inicial.
400 VALIDATION_ERROR La fecha inicial no puede ser anterior a 30 días.
400 VALIDATION_ERROR El empleado debe ser numérico.
401 UNAUTHORIZED Token inválido o expirado.
429 RATE_LIMITED Demasiadas solicitudes
500 INTERNAL_ERROR Error interno
GET /v1/listado-vacantes Bearer JWT

Listado de vacantes

Obtiene vacantes activas del tenant autenticado.

Respuesta ejemplo

{
  "items": [
    {
      "EMPRESA": "Empresa XYZ",
      "GRUPO_COMERCIAL": "Grupo ABC",
      "CLIENTE_ID": 1,
      "CLIENTE": "Cliente Demo",
      "INSTALACION_ID": 10,
      "INSTALACION": "Planta Norte",
      "ESTADO": "Estado Demo",
      "CIUDAD": "Ciudad Demo",
      "PUESTO_ID": 44,
      "UBICACION": "Acceso principal",
      "CARGO": "Guardia de seguridad",
      "SALARIO": "9524.32",
      "PLAZA_ID": 95,
      "POSICION": "A",
      "PROGRAMACION": "Programación 1"
    }
  ]
}

Errores posibles

HTTP Código Mensaje
401 UNAUTHORIZED Token inválido o expirado.
429 RATE_LIMITED Demasiadas solicitudes
500 INTERNAL_ERROR Error interno
POST /v1/agregar-empleado Bearer JWT

Agregar empleado

Inserta un empleado en integracion_empleados para el tenant del token. El campo "adicional" es un JSON con datos extra que se guardan tal cual en la base de datos para ese empleado, útil para integraciones personalizadas.

Body JSON

{
  "codemp": 123,
  "apaterno": "Pérez",
  "amaterno": "Gómez",
  "nombres": "Juan Carlos",
  "fecnac": "1995-08-21",
  "rfc": "PEGJ950821ABC",
  "curp": "PEGJ950821HDFRMR09",
  "imss": "12345678901",
  "correo": "juan.perez@empresa.com",
  "telefono": "5512345678",
  "fecing": "2026-03-30",
  "adicional": {
    "fuente": "integracion_MAAT",
    "comentarios": "Ingreso por API",
    "empresa": "Empresa XYZ",
    "grupo_comercial": "Grupo ABC",
    "cliente_id": 1,
    "cliente": "Cliente Demo",
    "instalacion_id": 10,
    "instalacion": "Planta Norte",
    "estado": "Estado Demo",
    "ciudad": "Ciudad Demo",
    "puesto_id": 44,
    "ubicacion": "Acceso principal",
    "cargo": "Guardia de seguridad",
    "salario": "9524.32",
    "plaza_id": 95,
    "posicion": "A",
    "programacion": "Programación 1"
  }
}

Respuesta ejemplo

{
  "id": 456,
  "message": "Empleado agregado correctamente."
}

Errores posibles

HTTP Código Mensaje
400 VALIDATION_ERROR Las fechas deben estar en formato YYYY-MM-DD.
400 VALIDATION_ERROR Empleado ya cargado.
400 VALIDATION_ERROR RFC existente.
401 UNAUTHORIZED Token inválido o expirado.
429 RATE_LIMITED Demasiadas solicitudes
500 INTERNAL_ERROR Error interno