Introducción a la API de Agentes para operaciones de fidelización máquina a máquina.
La API de Agentes permite que sistemas externos operen tu plataforma de fidelización sin una interfaz de usuario. Los sistemas POS otorgan puntos por compra, los asistentes de IA revisan saldos y sugieren recompensas, y las herramientas de automatización activan acciones de fidelidad desde eventos externos — todo a través de una única API REST sin estado.
💡
Diferente de la API estándar: La API REST utiliza tokens de inicio de sesión basados en sesiones. La API de Agentes utiliza claves de API de larga duración con recortes granulares — diseñada para máquinas, no para humanos.
Qué Hace
Capacidad
Descripción
Puntos y Recompensas
Otorgar puntos en compras, canjear recompensas al pagar.
Gestión de Recursos
Crear, leer, actualizar y eliminar clubes, tarjetas, recompensas, sellos, cupones, niveles y personal.
Búsqueda de Miembros
Consultar detalles del miembro y saldos en las tarjetas.
Billetera de Miembros
Los miembros ven su propio saldo, navegan por las recompensas y envían reclamos.
Integración POS
Flujo completo de ganar y gastar para sistemas de punto de venta.
Automatización
Activar acciones de fidelización desde Zapier, Make, n8n o scripts personalizados.
Acceso de Agentes de IA
Los asistentes de IA pueden consultar y operar programas de fidelidad a través de la misma API.
Arquitectura de un vistazo
Tu Sistema
POS / IA / Automatización
HTTPS + JSONEncabezado X-Agent-Key
Fidelización de Recompensas
API de Agentes /api/agent/v1
Autenticación de clave
Aplicación de alcances
Límite de tasa
Registro de auditoría
Lógica de negocio
Principios clave de diseño:
Sin estado — Sin sesiones, sin cookies, sin CSRF. Cada solicitud es independiente.
Basado en JSON — Todas las solicitudes y respuestas son JSON.
Mismas reglas de negocio — La API aplica exactamente las mismas validaciones, límites y permisos que el panel interactivo.
Cero-UI — Sin configuración regional en la URL. El idioma es opcional a través del encabezado Accept-Language.
Auditado — Cada solicitud se registra en los Registros de Actividad con completa trazabilidad.
Es una Herramienta, No una IA
La API de Agentes no incluye una IA — es una interfaz estructurada que los agentes de IA (o cualquier otro sistema) pueden llamar como una herramienta. Se ubica junto a la búsqueda web, operaciones de archivos y consultas de base de datos como algo sobre lo que actúa un agente autónomo.
Piensa en los agentes de IA de hoy — herramientas como Claude (Anthropic), Operator de OpenAI, Perplexity, Google Gemini o modelos alojados como DeepSeek y Qwen — como el lado del "cerebro" de este diagrama. La API de Agentes está en el lado de las "herramientas". Este espacio evoluciona rápidamente; para cuando leas esto, pueden haber surgido nuevos actores. A la API no le importa qué agente se conecte — habla HTTP y JSON puros.
Ya sea que estés conectando un asistente de IA, un sistema POS o un canal de automatización, la arquitectura sigue siendo la misma:
Capa
Dónde se Ejecuta
Responsabilidad
Tu agente / integración
Tu infraestructura
Inteligencia, razonamiento y decisión sobre qué llamadas a la API hacer.
Tu LLM (si lo hay)
Tu configuración
Impulsar tu IA — proveedores en la nube, modelos autoalojados o ninguno.
La API de Agentes
Tu plataforma
Recibir solicitudes REST, devolver JSON, aplicar tus reglas de negocio.
No se necesita una clave de proveedor de LLM en el lado de la plataforma. La API de Agentes solo ve el encabezado X-Agent-Key y el cuerpo de la solicitud JSON. Todo funciona idénticamente — un comando curl es un "agente" tan válido como un asistente de IA autónomo complejo.
Qué está listo para agentes hoy:
Recuperación de errores estructurada — cada respuesta incluye un campo retry_strategy para que los agentes manejen errores autónomamente.
Claves que se auto-identifican — el endpoint /health devuelve el rol de la clave, alcances y límites, permitiendo a los agentes entender sus propios permisos.
Referencia completa de endpoints — documenta cada ruta, parámetro y campo de respuesta.
Especificación OpenAPI 3.0 — Disponible en /api/agent/docs.json para importar en Swagger UI o Postman.
Endpoint de descubrimiento de herramientas — GET /api/agent/v1/tools devuelve definiciones de herramientas legibles por máquina, con el formato que tu framework de agentes requiere.
Inicio Rápido
1
Habilitar la característica de la API de Agentes
Agrega lo siguiente a tu archivo .env:
FEATURE_AGENT_API=true
La API de Agentes es una función opcional. Cuando está desactivada (por defecto), todas las rutas y herramientas de agentes se ocultan en toda la plataforma.
2
Habilitar la API de Agentes para un socio
Como administrador, edita la cuenta del socio y habilita el permiso de la API de Agentes en la pestaña Permisos.
3
Crear una Clave de Agente
En el panel del socio, ve a Integraciones → Claves de Agente y crea una nueva clave escogiendo el nivel de permiso adecuado.
4
Copiar la clave (visualización única)
La clave completa se muestra solo una vez. Se ve así:
Todas las solicitudes de la API de Agentes utilizan:
https://tu-dominio.com/api/agent/v1
Sin prefijo de configuración regional. Sin token de sesión. Solo la clave.
Estado Actual y Hoja de Ruta
Enviado — Cobertura Completa de API
Todos los endpoints a través de los tres roles están en vivo y listos para producción:
Categoría
Estado
Endpoints
Chequeo de salud
✅ En vivo
GET /health
Clubes
✅ En vivo
CRUD Completo
Tarjetas de Fidelidad
✅ En vivo
CRUD Completo
Recompensas
✅ En vivo
CRUD Completo
Miembros
✅ En vivo
Lectura + Saldo
Transacciones
✅ En vivo
Compra + Canje
Tarjetas de Sellos
✅ En vivo
CRUD Completo + Sellar + Canjear
Cupones
✅ En vivo
CRUD Completo + Validar + Canjear
Niveles
✅ En vivo
CRUD Completo
Personal
✅ En vivo
CRUD Completo
Admin: Socios
✅ En vivo
Lista, ver, permisos, activar/desactivar
Admin: Miembros
✅ En vivo
Búsqueda global + detalles
Admin: Analíticas
✅ En vivo
Métricas de plataforma + por socio
Miembro: Perfil
✅ En vivo
Lectura + Actualización
Miembro: Saldos y Tarjetas
✅ En vivo
Vista de billetera + Detalles de tarjeta
Miembro: Transacciones
✅ En vivo
Historial (todos + por tarjeta)
Miembro: Recompensas
✅ En vivo
Navegar + Reclamar
Enviado — Herramientas Nativas de Agente
Características
Descripción
Estado
Especificación OpenAPI 3.0
Especificación de API en /api/agent/docs.json, importable por Swagger UI, Postman, etc.
✅ En vivo
Swagger UI
Documentación interactiva de API en /api/agent/docs.
✅ En vivo
Endpoint de descubrimiento
GET /api/agent/v1/tools?format=openai devuelve operaciones disponibles como definiciones de herramientas.
✅ En vivo
Exportación multi-formato
Definiciones de herramientas en formato de OpenAI, Claude, MCP y JSON Schema genérico.
✅ En vivo
Autenticación
Cómo funcionan las claves de la API de Agentes, modelo de seguridad y flujo de autenticación.
La API de Agentes utiliza claves de API de larga duración en lugar de tokens de inicio de sesión. Cada clave es autosuficiente — contiene la identidad, el rol y los permisos necesarios para autenticar una solicitud.
Cómo Funciona
Cada solicitud debe incluir la clave en el encabezado X-Agent-Key:
curl -X GET https://tu-dominio.com/api/agent/v1/health \
-H "X-Agent-Key: rl_agent_a8f3k2m1x9v4b7n2..."
El flujo de autenticación:
Extraer la clave del encabezado X-Agent-Key
Detectar el rol de la clave desde el prefijo (rl_admin_, rl_agent_, rl_member_)
Buscar claves candidatas por prefijo (consulta de base de datos indexada — rápida)
Verificar la clave sin procesar contra el hash bcrypt almacenado
Comprobar que la clave esté activa y no haya expirado
Comprobar que la cuenta del propietario de la clave esté activa
Vincular la clave y el propietario a la solicitud para uso en etapas posteriores
Formato de Clave
Las claves siguen un formato predecible:
rl_agent_a8f3k2m1x9v4b7n2p5q8r1t6w3y0z4d7f0h3j6l9m2o5r8u1w4z7c0e3...
└──────┘ └──────┘ └─────────────────────────────────────────────────────┘
rol prefijo secreto aleatorio
Componente
Longitud
Descripción
Prefijo de rol
9-11 caracteres
rl_admin_, rl_agent_, rl_member_
Prefijo de clave
8 caracteres
Identificador único para búsqueda en base de datos.
Secreto aleatorio
40 caracteres
Aleatorio criptográficamente, con hash bcrypt.
El prefijo es la única parte almacenada en texto plano. Permite búsquedas rápidas sin escanear toda la tabla. El resto tiene un hash con bcrypt — incluso con acceso a la base de datos, la clave no puede ser reconstruida.
Roles de Clave
Cada clave pertenece a un tipo de propietario:
Prefijo
Rol
Propietario
rl_admin_
Admin
Cuenta de administrador
rl_agent_
Partner
Cuenta de socio/negocio
rl_member_
Member
Cuenta de cliente
Los tres tipos de clave están disponibles.
Modelo de Seguridad
Visualización Única
Cuando se crea una clave, la clave completa se muestra exactamente una vez. Después de cerrar el cuadro de diálogo, solo es visible el prefijo. No hay forma de recuperar la clave completa — si se pierde, crea una nueva.
Hash Bcrypt
Las claves se almacenan como hashes bcrypt (el mismo algoritmo utilizado para las contraseñas). Esto significa:
Las fugas de base de datos no exponen las claves.
Ni siquiera los administradores pueden ver la clave completa.
Cada verificación de clave toma ~100ms (factor de carga incorporado de bcrypt).
Límite de Tasa (Rate Limiting)
Cada clave tiene un límite de tasa configurable (solicitudes por minuto, por defecto: 60). El límite se aplica por clave utilizando una ventana fija de 1 minuto — dos claves propiedad del mismo socio tienen límites separados.
Cada respuesta incluye encabezados de límite de tasa para que los clientes puedan regular el ritmo proactivamente:
X-RateLimit-Limit: 60 ← máximas solicitudes por ventana
X-RateLimit-Remaining: 42 ← solicitudes restantes en la ventana actual
X-RateLimit-Reset: 1741260000 ← marca de tiempo Unix de cuándo se reinicia la ventana
Cuando se excede el límite, la API devuelve HTTP 429 con un encabezado adicional Retry-After:
Las claves pueden tener opcionalmente una fecha de expiración. Las claves expiradas son rechazadas en la autenticación. Esto es útil para:
Integraciones temporales.
Acceso de API por tiempo limitado.
Rotación de claves programada.
Comprobación de Actividad del Propietario
Incluso con una clave válida, si la cuenta del propietario está desactivada (por ejemplo, cuenta de socio deshabilitada por el administrador), la clave es rechazada. Esto asegura que la revocación de la clave a nivel de cuenta sea inmediata.
Errores de Autenticación
Todos los errores de autenticación siguen la estructura de error estándar:
Código de Error
Estado HTTP
Significado
AUTH_MISSING_KEY
401
Ningún encabezado X-Agent-Key proporcionado.
AUTH_INVALID_KEY
401
Formato de clave incorrecto, prefijo no encontrado o el hash no coincide.
AUTH_KEY_REVOKED
401
La clave existe pero ha sido desactivada.
AUTH_KEY_EXPIRED
401
La clave ha superado su fecha de expiración.
AUTH_OWNER_INACTIVE
403
La cuenta del propietario está desactivada.
AUTH_ANONYMOUS_MEMBER
403
Los miembros anónimos no pueden usar claves de agente.
Ejemplo de respuesta de error:
{
"error": true,
"code": "AUTH_KEY_REVOKED",
"message": "This agent key has been revoked.",
"retry_strategy": "no_retry"
}
Consulta el Manejo de Errores para ver el formato completo de la estructura de error.
Mejores Prácticas
Práctica
Por qué Importa
Almacenar claves en variables de entorno
Nunca codifiques las claves en el código fuente.
Utilizar los alcances mínimos requeridos
Principio de menor privilegio — otorga solo lo necesario.
Establecer fechas de expiración
Limitación del radio de impacto de las claves comprometidas.
Rotar claves periódicamente
Crea una nueva clave, actualiza tu integración, revoca la antigua.
Monitorear el registro de auditoría
Busca patrones inesperados en los Registros de Actividad.
Utilizar HTTPS
La clave se envía como un encabezado — usa siempre conexiones cifradas.
Primera Llamada
Realiza tu primera llamada autenticada a la API de Agentes y elige el modelo de clave adecuado para tu integración.
Esta guía permite configurar una nueva integración desde cero hasta su primera solicitud exitosa. Se centra en el contrato de producción real: prefijos de clave, formato de encabezado, sobres de respuesta y las primeras comprobaciones que debe realizar una integración antes de comenzar a otorgar puntos o canjear recompensas.
1. Elije el tipo de clave correcto
Utiliza la clave más restrictiva que se ajuste a la tarea.
Tipo de clave
Prefijo
Úselo para
Clave de socio
rl_agent_
Sistemas de punto de venta, reversiones de transacciones en comercio electrónico, automatización de procesos administrativos.
Clave de miembro
rl_member_
Vistas de la billetera, navegación de recompensas para miembros, flujos de reclamación de autoservicio.
Clave de administrador
rl_admin_
Administración de la plataforma, supervisión de socios, analíticas.
Si tu sistema necesita realizar operaciones financieras o de programas de fidelización en nombre de una empresa, utiliza una clave de socio. Si solo necesitas leer o actualizar la billetera de un miembro, utiliza una clave de miembro. No utilices una clave de socio cuando una clave de miembro sea suficiente.
2. Habilitar la función
La API de Agentes está restringida por funcionalidades.
Establece FEATURE_AGENT_API=true en tu entorno.
Para las integraciones con socios, habilita el permiso de API de Agentes del socio en la interfaz de administración.
Crea la clave en el área correspondiente del panel de control.
Si la función está deshabilitada para un socio, los endpoints del socio devuelven:
{
"error": true,
"code": "FEATURE_DISABLED",
"message": "Agent API access is not enabled for this partner.",
"retry_strategy": "contact_support"
}
3. Almacena la clave correctamente
Cada solicitud envía la clave en el encabezado X-Agent-Key.
Cómo crear, configurar y revocar claves de la API de Agentes.
Las claves de agente se administran mediante el panel del socio. Los administradores controlan qué socios pueden usar la API de Agentes, y los socios crean y revocan sus propias claves.
Requisitos Previos
Antes de que un socio pueda crear claves de agente:
Indicador de característica habilitado — Agrega FEATURE_AGENT_API=true a tu archivo .env. La API de Agentes está desactivada de forma predeterminada.
El administrador habilita la API de Agentes — El permiso de API de Agentes debe estar activado para el socio.
El socio tiene al menos un club — La mayoría de los endpoints de agente operan en el contexto de un club.
Habilitar Acceso a la API de Agentes
Como Administrador:
Navega hasta Socios en la barra lateral del administrador.
Haz clic en el nombre del socio para editar su cuenta.
Cambia a la pestaña Permisos.
Habilita el permiso de la API de Agentes.
Opcionalmente, establece un Límite de Claves de Agente (cuántas claves puede crear este socio; -1 para ilimitado).
Haz clic en Guardar.
Una vez habilitado, el socio verá Claves de Agente en Integraciones en su barra lateral.
Creación de una Clave
Como Socio:
Navega a Integraciones → Claves de Agente en la barra lateral.
Haz clic en Crear.
Rellena:
Nombre — Una etiqueta descriptiva (por ejemplo, "Terminal POS Centro", "Integración Zapier").
Alcances — Elige un ajuste preestablecido de nivel de permiso.
Expira En — Fecha de caducidad opcional.
Haz clic en Guardar.
Visualización Única de Clave
Después de guardar, un cuadro de diálogo muestra la clave completa:
Copia esta clave de inmediato. Después de cerrar este cuadro de diálogo, la clave completa no se volverá a mostrar nunca. Solo el prefijo (rl_agent_a8f3k2m1) permanece visible. Si pierdes la clave, debes crear una nueva.
Preajustes de Nivel de Permiso
Al crear una clave, eliges una de las siguientes preselecciones:
Ajuste Preestablecido
Alcances Otorgados
Caso de Uso
Solo Lectura (View Only)
read
Paneles, informes, comprobaciones de saldo.
Punto de Venta (Point of Sale)
read, write:transactions, write:rewards
Gestión de recompensas, ganancias y gastos en el punto de venta.
Después de la creación, los alcances no se pueden cambiar. Para usar diferentes alcances, crea una nueva clave.
Visualización de Claves
La lista de Claves de Agente muestra:
Columna
Descripción
Nombre
Tu etiqueta descriptiva.
Prefijo de Clave
Primeros caracteres de la clave (para identificación en registros).
Activa
Si la clave está actualmente activa.
Fecha de Caducidad
Fecha de expiración, si está configurada.
Último Uso
Cuándo se utilizó la clave por última vez (se actualiza cada 5+ minutos).
Creada
Cuándo se creó la clave.
Revocación de una Clave
Para revocar una clave de inmediato:
Navega a Integraciones → Claves de Agente.
Encuentra la clave en la lista.
Haz clic en Eliminar para quitarla permanentemente, o haz clic en Editar y desactiva el control de Activa (reversible).
Confirma la acción.
Qué ocurre al revocar una clave:
Todas las solicitudes que utilicen esa clave reciben de inmediato AUTH_KEY_REVOKED (401).
El registro de la clave permanece en la base de datos para seguimiento de auditoría.
Las entradas existentes del registro de actividad para esa clave se conservan.
Cualquier integración que utilice esta clave debe actualizarse con una nueva clave.
⚠️
La revocación es inmediata e irreversible. No se puede deshacer. Si revocas accidentalmente una clave de producción, crea una nueva y actualiza tu integración.
Estrategia de Rotación de Claves
Para integraciones críticas en materia de seguridad, rota las claves periódicamente:
Crea una nueva clave con los mismos alcances.
Actualiza tu integración para usar la nueva clave.
Verifica que la nueva clave funciona (llama a GET /api/agent/v1/health).
Revoca la clave anterior.
Esto asegura que no haya tiempo de inactividad durante la rotación.
Claves de Miembro
Los miembros (clientes) también pueden crear claves de agente para acceder a sus propios datos desde aplicaciones externas e integraciones de billetera.
Creando una Clave de Miembro
Inicia sesión en el panel del miembro.
Abre el menú de usuario y haz clic en Claves de Agente.
Haz clic en Crear.
Elige un nombre y un preset de permiso.
Copia la clave del cuadro de diálogo de visualización única.
Diferencias en las Claves de Miembro
Aspecto
Claves de Socio
Claves de Miembro
Prefijo
rl_agent_
rl_member_
Expiración por defecto
Ninguna (permanente)
90 días
Máximo de claves
Configurable por admin (por defecto 5)
Fijo en 3
Límite de tasa de ejecución
1,000 RPM
120 RPM (automático)
Exportar
Disponible
No disponible
Alcances
4 preajustes
2 preajustes
Ajuste de límite de tasa
Configurable
No se muestra (automático)
Preajustes de Permiso de Miembro
Preajuste
Alcances
Caso de Uso
Solo Lectura (View Only)
read
Comprobaciones de saldo, navegación de recompensas.
Los miembros anónimos no pueden crear claves — Solo los miembros verificados con una dirección de correo electrónico pueden acceder a la gestión de claves de agente.
Expiración predeterminada de 90 días — Las claves de los miembros vencen tras 90 días de forma predeterminada. Los miembros pueden establecer una fecha personalizada, pero el sistema impone un valor predeterminado para la seguridad de la clave orientada al consumidor.
Límites
Claves de socio: Los administradores pueden establecer cuántas claves puede crear cada socio a través del 'Límite de claves de agente' en Permisos de socio. Un valor de -1 indica ilimitado.
Claves de miembro: Fijo a 3 claves por miembro. Esto no es configurable.
Lista de Verificación de Producción
Lista de verificación de seguridad de lanzamiento para integraciones de la API de Agentes, incluyendo idempotencia, reintentos, gestión de claves y reconciliación.
Utiliza esta lista de verificación antes de poner en producción un POS, un conector de comercio electrónico o una automatización.
Gestión de Claves
Utiliza claves separadas por entorno. No compartas una clave entre desarrollo local, pruebas (staging) y producción.
Utiliza claves separadas por superficie de integración cuando sea práctico. Una flota de terminales POS no debe compartir la misma clave que un trabajo de informes nocturno.
Almacena las claves en variables de entorno o un gestor de secretos.
Mantén las claves de socio solo en el lado del servidor. Nunca las expongas en código del navegador o aplicaciones móviles.
Recuerda que las claves completas se muestran una vez y nunca son recuperables.
Rota las claves creando primero el reemplazo, actualizando la integración y luego revocando la clave antigua.
Higiene de Alcances
Empieza con el menor privilegio.
Otorga alcances de escritura (write) solo para los recursos que la integración realmente muta.
Utiliza claves de miembro para operaciones en la billetera del miembro y claves de socio para acciones comerciales propiedad del socio.
Verifica los alcances finalmente otorgados llamando a GET /api/agent/v1/health.
Seguridad de Transacciones
Los flujos de compras y canjes no son idempotentes.
POST /partner/transactions/purchase puede otorgar puntos más de una vez si vuelves a enviar el mismo pedido lógico.
POST /partner/transactions/redeem puede deducir puntos más de una vez si vuelves a enviar el mismo canje lógico.
Práctica recomendada:
Trata una respuesta exitosa confirmada como final.
Compra devuelve 201; canje devuelve 200.
Si obtienes un tiempo de espera agotado o una falla de red ambigua, reconcilia antes de volver a intentar.
Rastrea tus propios identificadores de pedido externos o identificadores de canje.
Pasa esos identificadores en el campo note donde sea compatible, para que la reconciliación sea posible más adelante.
Utiliza el campo note siempre que el endpoint lo admita.
Buenos valores:
Order #12345
POS ticket 98441
Shopify order gid://shopify/Order/123456789
Cashier session 2026-03-08-07
Esto es especialmente útil para:
Reconciliación de compras
Investigación de canje de recompensas
Auditorías de ajustes de sellos
Tickets de soporte
Paginación y Filtrado
No asumas que los endpoints de lista devuelven todos los registros en una sola respuesta.
per_page por defecto es 25.
per_page tiene un máximo de 100.
Los filtros from y to de la lista de transacciones aceptan formato Y-m-d.
Ejemplo:
GET /api/agent/v1/partner/transactions?from=2026-03-01&to=2026-03-08&per_page=100 HTTP/1.1
Host: tu-dominio.com
Accept: application/json
X-Agent-Key: rl_agent_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0
Construye bucles de paginación explícitamente.
Manejo de Errores
Tu cliente debe ramificar la lógica basado en retry_strategy, no solo en el estado HTTP.
Estrategia
Acción
no_retry
Detenerse y mostrar el fallo.
fix_request
Corregir el cuerpo de la solicitud.
backoff
Reintentar con retroceso exponencial (exponential backoff).
contact_support
Alertar a un humano.
Pruebas requeridas antes del lanzamiento:
Clave inválida
Alcance incorrecto
Rol incorrecto
Recurso no encontrado
Puntos o saldo insuficientes
Límite de tasa excedido
API de agentes del socio deshabilitada
Límites de Tasa
Cada respuesta incluye encabezados de límite de tasa:
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-Reset
En caso de un 429 RATE_LIMITED, respeta el encabezado Retry-After. No bombardees la API después de recibir una respuesta de límite de tasa.
Monitoreo Operativo
Registra los identificadores de solicitudes salientes y tus propias referencias de pedidos o tickets.
Monitorea los Registros de Actividad en busca de comportamiento de automatización inesperado.
Mantén una cola de "mensajes muertos" o cola de reintento para los errores de retroceso (backoff).
Alerta sobre respuestas repetidas de AUTH_INVALID_KEY, AUTH_INSUFFICIENT_SCOPE y RATE_LIMITED.
Lista Final de Verificación de Lanzamiento
Indicador de característica activado en el entorno correcto.
Permiso de API de Agentes del socio activado donde se requiera.
Tipo de clave correcto elegido.
Alcances minimizados y verificados mediante /health.
Lógica de reintento implementada.
Flujos de compra y canje no idempotentes reconciliados por referencia externa.
Notas rellenadas con identificadores externos donde esté soportado.
Paginación implementada.
Manejo del límite de tasa implementado.
Ramas de error probadas.
Alcances y Permisos
Entendiendo la aplicación de alcances y lo que permite cada nivel de permiso.
Los alcances (scopes) definen lo que se le permite hacer a una clave de agente. Cada endpoint de agente verifica la clave de la solicitud en busca del alcance requerido antes de ejecutarse. Si la clave carece del alcance requerido, la solicitud es rechazada con un error HTTP 403.
Cómo Funcionan los Alcances
Cada clave lleva un arreglo de alcances asignados en el momento de su creación. Cuando una solicitud llega a un endpoint:
El controlador verifica qué alcance(s) requiere el endpoint.
Los alcances de la clave se comparan con el requisito.
Si coincide cualquier alcance requerido, se concede el acceso (lógica OR).
Si no coincide ningún alcance, se devuelve un error 403 AUTH_INSUFFICIENT_SCOPE.
Alcances Disponibles
Alcance de Lectura
Alcance
Qué Permite
read
Acceso de lectura a todos los recursos (clubes, tarjetas, miembros, recompensas, etc.).
El alcance read es un permiso de lectura global. Cualquier clave con read puede llamar a cualquier endpoint GET.
Alcances de Escritura
Alcance
Qué Permite
write:clubs
Crear, actualizar y eliminar clubes.
write:cards
Crear, actualizar y eliminar tarjetas de fidelidad.
write:rewards
Crear, actualizar y eliminar recompensas.
write:transactions
Registrar compras y canjear recompensas.
write:stamps
Crear, actualizar y eliminar tarjetas de sellos; añadir sellos; canjear recompensas de sellos.
write:vouchers
Crear, actualizar y eliminar cupones; validar y canjear códigos de cupón.
write:tiers
Crear, actualizar y eliminar niveles de membresía.
write:staff
Crear, actualizar y eliminar miembros del personal.
Los alcances de escritura son específicos del recurso. Una clave con write:transactions puede registrar compras pero no puede crear clubes.
Alcances de Escritura de Miembro
Las claves de miembro usan un conjunto separado de alcances de escritura:
Alcance
Qué Permite
write:profile
Actualizar el propio perfil (nombre, idioma).
write:redeem
Enviar solicitudes de reclamo de recompensa.
Los alcances de escritura de miembro están auto-limitados — solo afectan los datos del propietario de la clave.
Súper Alcance
Alcance
Qué Permite
admin
Acceso completo — todas las operaciones de lectura y escritura.
El alcance admin omite todas las verificaciones de alcance. Úsalo para claves que necesiten acceso sin restricciones.
Alcances de Administrador
Las claves de administrador tienen alcances a nivel de plataforma:
Alcance
Qué Permite
read:partners
Ver todos los perfiles de socios y permisos.
write:partners
Actualizar permisos de socio, activar/desactivar socios.
El retry_strategy es no_retry — la clave no puede ganar alcances dinámicamente. En su lugar, crea una nueva clave con los alcances requeridos.
Endpoints de Socio
Referencia completa de endpoints para operaciones de agentes con alcance de socio.
Todos los endpoints de socio tienen el prefijo /api/agent/v1/partner y requieren una clave con alcance de socio (rl_agent_).
Patrones Comunes
Todos los endpoints de socio comparten estos comportamientos:
Aislamiento multi-inquilino (Multi-tenant) — Una clave de socio solo puede acceder a los recursos creados por ese socio.
Contratos de API canónicos — Las solicitudes se validan contra el esquema de agente en vivo, puertas de permisos y verificaciones de propiedad.
Solicitud/respuesta JSON — Envía y recibe application/json.
Paginación — Los endpoints de lista admiten los parámetros de consulta ?page=1&per_page=25.
Chequeo de Salud
Chequeo de Salud
GET /api/agent/v1/health
Disponible para todos los roles de clave. Devuelve la identidad de la clave, los alcances y la información del propietario. Úsalo para verificar que tu clave funciona antes de realizar otras solicitudes.
Alcance: No se requiere alcance.
Clubes
Los clubes organizan el personal y las operaciones de un socio. La mayoría de los recursos (tarjetas, personal) pertenecen a un club.
Identificación de miembro — El campo member_identifier acepta múltiples formatos:
UUID del Miembro
Dirección de correo electrónico
Número de miembro
Identificador único
El sistema resuelve el miembro automáticamente. Esta flexibilidad es fundamental para los sistemas POS que pueden tener solo el correo electrónico de un cliente o un número de lealtad.
El staff_id es opcional — atribuye la transacción a un miembro específico del personal para los informes. Sin él, la transacción se atribuye al "Sistema".
El staff_id es opcional. Sin él, el canje se atribuye al "Sistema" — esto permite integraciones sin interfaz (headless como Shopify o WooCommerce) que no tienen cuentas de personal.
Las respuestas exitosas de canje incluyen transaction_id, points_deducted, member_balance, new_balance, reward_id, reward, card_id, y member_id.
Miembros
Los endpoints de miembro son de solo lectura para las claves de socio. Los miembros no se pueden crear ni modificar a través de la API de agente — ellos se registran solos a través de la plataforma.
Listar Miembros
GET /api/agent/v1/partner/members
Alcance:read
Obtener Miembro
GET /api/agent/v1/partner/members/{id}
Alcance:read
Obtener Saldo de Miembro
GET /api/agent/v1/partner/members/{id}/balance/{cardId}
Alcance:read
Devuelve el saldo de puntos del miembro para una tarjeta de fidelidad específica.
Las respuestas de lista/detalle de miembros exponen solo la carga de datos pública endurecida: id, unique_identifier, name, email, locale, currency, time_zone, last_login_at, created_at, updated_at, avatar, is_anonymous.
Tarjetas de Sellos
Las tarjetas de sellos funcionan como tarjetas perforadas digitales. Los miembros coleccionan sellos y ganan una recompensa cuando la tarjeta está completa.
Listar Tarjetas de Sellos
GET /api/agent/v1/partner/stamp-cards
Alcance:read o write:stamps
Obtener Tarjeta de Sellos
GET /api/agent/v1/partner/stamp-cards/{id}
Alcance:read o write:stamps
Crear Tarjeta de Sellos
POST /api/agent/v1/partner/stamp-cards
Alcance:write:stamps
Actualizar Tarjeta de Sellos
PUT /api/agent/v1/partner/stamp-cards/{id}
Alcance:write:stamps
Eliminar Tarjeta de Sellos
DELETE /api/agent/v1/partner/stamp-cards/{id}
Alcance:write:stamps
Añadir Sellos
POST /api/agent/v1/partner/stamp-cards/{id}/stamps
Alcance:write:stamps
Otorgar sellos a un miembro en una tarjeta de sellos específica.
Canjear Recompensa de Sellos
POST /api/agent/v1/partner/stamp-cards/{id}/redeem
Alcance:write:stamps
Canjear la recompensa de la tarjeta de sellos cuando un miembro ha coleccionado todos los sellos requeridos.
Usar campos canónicos de creación/actualización: stamps_expire_days y requires_physical_claim.
Cupones
Los cupones proporcionan descuentos de valor instantáneo a través de códigos promocionales.
Listar Cupones
GET /api/agent/v1/partner/vouchers
Alcance:read o write:vouchers
Obtener Cupón
GET /api/agent/v1/partner/vouchers/{id}
Alcance:read o write:vouchers
Crear Cupón
POST /api/agent/v1/partner/vouchers
Alcance:write:vouchers
Actualizar Cupón
PUT /api/agent/v1/partner/vouchers/{id}
Alcance:write:vouchers
Eliminar Cupón
DELETE /api/agent/v1/partner/vouchers/{id}
Alcance:write:vouchers
Validar Código de Cupón
POST /api/agent/v1/partner/vouchers/validate
Alcance:write:vouchers
Comprueba si un código de cupón es válido y se puede canjear sin canjearlo realmente.
Usa campos canónicos de cupones: type, value, valid_from, valid_until, max_uses_total, y max_uses_per_member. El identificador code es opcional en la creación y se genera automáticamente cuando se omite.
Los niveles de membresía definen niveles VIP con multiplicadores y beneficios.
Listar Niveles
GET /api/agent/v1/partner/tiers
Alcance:read o write:tiers
Obtener Nivel
GET /api/agent/v1/partner/tiers/{id}
Alcance:read o write:tiers
Crear Nivel
POST /api/agent/v1/partner/tiers
Alcance:write:tiers
Usa el campo canónico de umbral de nivel: points_threshold.
Actualizar Nivel
PUT /api/agent/v1/partner/tiers/{id}
Alcance:write:tiers
Eliminar Nivel
DELETE /api/agent/v1/partner/tiers/{id}
Alcance:write:tiers
Personal
Administra a los miembros del personal que procesan transacciones en las ubicaciones de los socios.
Listar Personal
GET /api/agent/v1/partner/staff
Alcance:read o write:staff
Obtener Miembro del Personal
GET /api/agent/v1/partner/staff/{id}
Alcance:read o write:staff
Crear Miembro del Personal
POST /api/agent/v1/partner/staff
Alcance:write:staff
Usa el campo canónico de asignación de personal: club_id.
Las respuestas de lista/detalle del personal exponen: id, club_id, club_name, name, email, locale, time_zone, number_of_times_logged_in, last_login_at, created_at, updated_at, avatar.
Actualizar Miembro del Personal
PUT /api/agent/v1/partner/staff/{id}
Alcance:write:staff
Eliminar Miembro del Personal
DELETE /api/agent/v1/partner/staff/{id}
Alcance:write:staff
Manejo de Errores
Entendiendo las respuestas de error estructuradas y estrategias de reintento.
Cada respuesta de la API de Agente sigue una estructura predecible. Las respuestas de éxito y de error usan el mismo formato de envoltura, haciéndolas fáciles de analizar programáticamente — crítico para agentes de inteligencia artificial y herramientas de automatización.
{
"error": true,
"code": "VALIDATION_FAILED",
"message": "The request data did not pass validation.",
"retry_strategy": "fix_request",
"details": {
"errors": {
"card_id": ["The card_id field is required."],
"purchase_amount": ["The purchase_amount must be at least 0.01."]
}
}
}
Campos de Error
Campo
Tipo
Descripción
error
boolean
Siempre true para respuestas de error.
code
string
Código de error legible por máquina (ej. AUTH_INVALID_KEY).
message
string
Descripción legible por humanos.
retry_strategy
string
Cómo debe manejar este error el que llama.
details
object
Contexto adicional opcional (errores de validación, límites, etc.).
Estrategias de Reintento
El campo retry_strategy le dice a los agentes de IA y herramientas de automatización cómo manejar el error:
Estrategia
Significado
Qué Hacer
no_retry
La solicitud es fundamentalmente inválida.
Corrige la integración. Clave incorrecta, alcance incorrecto, recurso no encontrado.
fix_request
El cuerpo de la solicitud tiene errores.
Corrige los datos de la solicitud y vuelve a intentar (errores de validación).
backoff
Problema temporal.
Reintenta con retroceso exponencial (exponential backoff). Límite de tasa alcanzado, error de servidor.
contact_support
Requiere intervención humana.
Característica deshabilitada, límite alcanzado, cuenta desactivada.
Ejemplos de Estrategias de Reintento
no_retry — No vuelvas a intentar. La solicitud está mal.
Revisa la sección de Autenticación — Límites de Tasa para detalles completos.
Para Desarrolladores de Agentes de IA
Si estás construyendo un agente de IA que consume esta API, aquí se explica cómo manejar los errores programáticamente:
response = call_agent_api(endpoint, data)
if response["error"]:
match response["retry_strategy"]:
case "no_retry":
log_error(response["code"], response["message"])
raise PermanentError(response["message"])
case "fix_request":
fix_fields(response["details"]["errors"])
retry_with_fixed_data()
case "backoff":
wait_exponential(attempt)
retry()
case "contact_support":
notify_human(response["message"])
raise NeedsHumanIntervention(response["message"])
Endpoints de Miembro
Referencia completa de endpoints para operaciones de agente con alcance de miembro.
Todos los endpoints de miembro tienen el prefijo /api/agent/v1/member y requieren una clave con alcance de miembro (rl_member_).
Patrones Comunes
Todos los endpoints de miembro comparten estos comportamientos:
Alcance propio — Una clave de miembro solo puede acceder a los datos de su propio titular. No es posible el acceso cruzado entre miembros.
Principalmente de solo lectura — Los miembros pueden ver su saldo, tarjetas, transacciones y recompensas. El acceso de escritura se limita a las actualizaciones de perfil y a los reclamos de recompensas.
Solicitud/respuesta JSON — Envía y recibe application/json.
Paginación — Los endpoints de lista admiten los parámetros de consulta ?page=1&per_page=25.
Diferencias Clave con las Claves de Socio
Aspecto
Clave de Socio
Clave de Miembro
Prefijo
rl_agent_
rl_member_
Expiración por defecto
Ninguna (permanente)
90 días
Máx. de claves
Configurable por administrador (por defecto: 5)
Fijo en 3
Límite de tasa máximo
1,000 RPM
120 RPM (automático)
Preajustes de alcance
View Only, POS, Full Management, Full
View Only, Full Access
Perfil
Obtener Perfil
GET /api/agent/v1/member/profile
Alcance:read
Devuelve la propia información de perfil del miembro.
Solo el nombre (name) y el idioma (locale) pueden actualizarse mediante la API. Los cambios de correo electrónico requieren el flujo de autenticación completo mediante el panel del miembro.
{
"name": "Jane Updated",
"locale": "fr_FR"
}
Saldo y Tarjetas
Resumen de Billetera (Todos los Saldos)
GET /api/agent/v1/member/balance
Alcance:read
Devuelve los saldos de todas las tarjetas de fidelidad inscritas en una sola llamada. Este es el endpoint principal para los widgets de "resumen de billetera" (wallet overview) en tiendas web.
Las respuestas dirigidas al miembro omiten intencionalmente la información del club. Los clubes son estructuras internas de enrutamiento y acceso del personal; los miembros interactúan directamente con las tarjetas.
Lista paginada de tarjetas inscritas con mayor nivel de detalle que /balance, incluyendo saldos específicos para el miembro y campos de presentación.
Obtener Tarjeta
GET /api/agent/v1/member/cards/{id}
Alcance:read
Devuelve los detalles y el saldo del miembro para una sola tarjeta. Devuelve un error 404 si el miembro no está inscrito en dicha tarjeta.
Historial de Transacciones
Todas las Transacciones
GET /api/agent/v1/member/transactions
Alcance:read
Devuelve el historial completo de transacciones del miembro en todas las tarjetas. Ordenado por el más reciente primero y también paginado.
Transacciones por Tarjeta
GET /api/agent/v1/member/transactions/{cardId}
Alcance:read
Filtra el historial de transacciones de una tarjeta específica. Devuelve un error 404 si el miembro no está inscrito en esta tarjeta.
Recompensas
Navegar por Recompensas Disponibles
GET /api/agent/v1/member/rewards
Alcance:read
Enumera todas las recompensas disponibles en las tarjetas inscritas del miembro. Cada recompensa incluye:
Si el miembro puede costearla (según su saldo actual).
El mejor saldo del miembro entre las tarjetas vinculadas.
El coste en puntos de la recompensa.
Esto permite crear mensajes como "Necesitas X puntos más" en las interfaces de las webshops.
Reclamar una Recompensa
POST /api/agent/v1/member/rewards/{id}/claim
Alcance:write:redeem
Envía una solicitud de reclamo de recompensa. Esto no deduce directamente los puntos — el personal debe confirmar el canje mediante el panel de socios o la API de agente de socio.
Esto preserva el flujo de la plataforma según el cual "el personal confirma el canje", lo cual previene el fraude de autoservicio en ubicaciones físicas.
Respuesta de Éxito (200):
{
"data": {
"status": "claim_submitted",
"reward_id": "reward-uuid",
"reward_title": "Free Coffee",
"points_required": 100,
"card_id": "card-uuid",
"card_title": "Coffee Rewards",
"current_balance": 250,
"message": "Your claim has been submitted. A staff member will confirm it."
}
}
Saldo Insuficiente (422):
{
"error": true,
"code": "INSUFFICIENT_BALANCE",
"message": "Not enough points. You have 50, but this reward requires 100.",
"details": {
"balance": 50,
"required": 100,
"deficit": 50
}
}
Descubrimiento
Los miembros descubren tarjetas de dos formas:
Navegar por la página inicial — Los recursos activos cuyo ajuste is_visible_by_default está habilitado aparecen de forma pública.
Códigos QR / enlaces compartidos — Se puede hallar cualquier tarjeta de fidelidad, tarjeta de sellos o cupón escaneando un código QR o abriendo un enlace directo.
Navegar Tarjetas Descubribles
GET /api/agent/v1/member/discover
Alcance:read
Devuelve todas las tarjetas (de fidelidad, sellos y cupones) actualmente visibles en la página de inicio. Incluye el estado de inscripción del miembro y el saldo de cada tarjeta que sigue.
Resuelve una URL de tarjeta (desde un escaneo QR o enlace) o identificador en detalles completos. Endpoint principal para flujos de escaneo usando códigos QR.
Guarda una tarjeta de fidelidad de manera segura a la colección de "Mis Tarjetas" del miembro. Idempotente (seguir tarjetas que ya sigues es una operación sin efecto).
{
"card_id": "card-uuid"
}
Dejar de Seguir una Tarjeta
POST /api/agent/v1/member/discover/unfollow
Alcance:write:profile
Remueve una tarjeta de la colección de "Mis Tarjetas".
{
"card_id": "card-uuid"
}
Preajustes de Alcance
Las claves de miembro usan preajustes de alcance simplificados:
Preajuste
Alcances
Caso de Uso
View Only
read
Comprobaciones de saldo, navegación y revisión de recompensas
Full Access
read, write:redeem, write:profile
Funcionalidad de billetera completamente operativa
Para Integraciones de Tiendas Web
La API de agente de miembro se diseñó para el flujo de punto de venta (POS) y tiendas online (eCommerce):
Al iniciar sesión: Usa GET /member/balance para mostrar el resumen de los saldos generales.
En la página de producto: Usa GET /member/rewards para promocionar mensajes como "Usa 100 puntos y obtén 10% de descuento".
En la caja: Combina procesos con la API de socio para otorgar los correspondientes puntos al confirmar una compra final.
Después de la compra: Muestra el saldo actualizado y validado.
Revisa la sección de Autenticación sobre cómo usar ambas claves de la manera ideal y combinada en tus proyectos.
Endpoints de Administrador
Administración de la plataforma mediante la API de Agente — gestión de socios, búsqueda de miembros y analíticas.
Las claves de agente de administrador otorgan a los administradores de la plataforma acceso programático para gestionar socios, ver datos de miembros en toda la plataforma y obtener analíticas — ideal para integraciones CRM, paneles de facturación SaaS y herramientas de monitoreo.
URL Base
/api/agent/v1/admin/
Todos los endpoints requieren una clave de agente de tipo administrador (rl_admin_***).
Alterna la marca is_active del socio. Cuando se desactiva, todas las claves de agente del socio se vuelven inválidas (el middleware de autenticación verifica la propiedad de estado activo).
Miembros (Solo Lectura)
El acceso a miembros por parte del administrador es estrictamente de solo lectura. El ciclo de vida de los miembros se gestiona a través de transacciones de socios (inscripción automática) o el autoservicio del propio miembro.
Listar Miembros
GET /api/agent/v1/admin/members
Alcance:read:members
Parámetro
Tipo
Descripción
search
string
Buscar por nombre, correo electrónico o identificador único
is_active
boolean
Filtrar por estado activo
per_page
integer
Resultados por página (1–100, por defecto 25)
Obtener Miembro
GET /api/agent/v1/admin/members/{id}
Alcance:read:members
Devuelve el perfil del miembro junto con los saldos de todas sus tarjetas.
Búsqueda y detalles de miembros de toda la plataforma
read:analytics
Analíticas de la plataforma y por socio
admin
Todo lo anterior (súper-alcance)
Recetas de Integración
Sincronización CRM
# Sincronizar lista de socios al CRM
GET /api/agent/v1/admin/partners?is_active=true
# Enviar métricas a un panel de monitoreo
GET /api/agent/v1/admin/analytics/overview
Cambio de Nivel de Facturación SaaS
# Actualizar el socio al nivel premium
PATCH /api/agent/v1/admin/partners/{id}/permissions
{
"loyalty_cards_limit": -1,
"stamp_cards_limit": -1,
"vouchers_limit": -1,
"agent_api_permission": true,
"agent_keys_limit": 20
}
Búsqueda de Miembros
# Buscar a un miembro en todos los socios
GET /api/agent/v1/admin/members?search=jane@example.com
# Obtener los saldos de sus tarjetas
Registro de Auditoría
Cómo se rastrean y monitorean las solicitudes de la API del agente.
Cada solicitud autenticada de la API del Agente se registra automáticamente en los Registros de Actividad (Activity Logs). Esto proporciona un rastro de auditoría completo de todas las operaciones de máquina a máquina — crítico para la seguridad, el cumplimiento normativo y la depuración de errores.
Cómo Funciona
El registro de auditoría se ejecuta en la fase de terminación (después de que la respuesta ya ha sido enviada al cliente). Esto significa:
Impacto de latencia cero — El cliente recibe su respuesta sin esperar a que el registro sea escrito en la base de datos.
Automático — No se requiere configuración. Toda solicitud autenticada es registrada sin excepción.
Integrado — Utiliza el mismo sistema global de Registros de Actividad que todos los demás eventos de la plataforma.
Qué se Registra
Cada solicitud de agente crea una entrada de registro de actividad con:
Campo
Ejemplo
Descripción
Nombre del Registro
agent_api
Categoría útil para filtrado en búsquedas
Evento
agent_read, agent_write, agent_delete
Derivado del método HTTP de la petición
Descripción
Agent GET /api/agent/v1/partner/clubs → 200
Resumen legible por humanos
Causante
Partner "Coffee Corner"
El propietario de la clave (quién)
Sujeto
AgentKey "POS Terminal 1"
La clave que fue utilizada (cuál)
Endpoint
/api/agent/v1/partner/clubs
Ruta completa de la solicitud
Método
GET
Verbo y método HTTP usado
Código de Estado
200
Estado de la respuesta del servidor
Prefijo de Clave
rl_agent_a8f3k2m1
Identificación clara de la clave
Tipo de Propietario
Partner
Rol del titular de la clave
Alcances
["read", "write:transactions"]
Permisos asignados a la clave
Dirección IP
192.168.1.100
IP original del cliente
Agente de Usuario
curl/8.1.2
Identificador del cliente
Marca de Tiempo
2026-03-06 10:15:32
Momento exacto en que ocurrió la solicitud
Tipos de Evento
Los eventos se derivan del método HTTP en el registro base de datos:
Método HTTP
Evento
Descripción
GET
agent_read
Recuperación o consulta de datos
POST
agent_write
Creación u operación
PUT / PATCH
agent_write
Actualización y edición
DELETE
agent_delete
Eliminación de entidades o recursos
Visualización de Registros de Agente
La actividad de la API del Agente aparece en los Registros de Actividad globales junto con todos los demás eventos de la plataforma.
En el Panel del Socio
Los socios ven su propia actividad de la API del agente bajo Actividad → Registros de Actividad:
Filtro de categoría → Selecciona Claves de Agente para mostrar solo las solicitudes de los agentes.
Filtro de evento → Selecciona Agent Read, Agent Write o Agent Delete.
Filtro de sujeto → Selecciona una Clave de Agente para ver qué clave específica fue utilizada.
Los eventos del agente se muestran con insignias visuales descriptivas: 👁 Lectura (información), ⚡ Escritura (principal), ❌ Eliminación (peligro).
En el Panel de Administración
Los administradores ven toda la actividad de la API del agente a través de la totalidad de socios:
Los mismos filtros mostrados arriba, además de un filtrado por socio original (causante).
Sumamente útil para monitorear el uso general de la API en toda la plataforma e investigar integraciones o problemas.
Revisa la sección Ver Registros de Actividad general de Fideko para revisar toda la interfaz de filtrado avanzada.
Qué NO se Registra
Por razones fundamentales de seguridad, privacidad y rendimiento de los procesos:
Los cuerpos de solicitud no se registran (podrían contener PII o datos personales sensibles del cliente final).
Los cuerpos de respuesta no se registran (podrían ser pesados, grandes listados JSON, y perjudicarían la DB).
Los intentos de autenticación fallidos no se registran aquí (la solicitud nunca llega al middleware que rastrea las solicitudes de agentes autenticadas — AuthenticateAgent los rechaza mucho antes).
Detalles del chequeo de salud — Los chequeos a /health se registran como cualquier otra solicitud en su bitácora de red, pero no contienen datos confidenciales inherentes a la aplicación.
Patrones de Monitoreo
Detectar Actividad Inusual
Patrón
Lo Que Podría Significar
Alto volumen de eventos agent_delete
Eliminación masiva inesperada
Solicitudes desde IPs extrañas y desconocidas
La clave y el servidor podrían haber sido comprometidos
Numerosos códigos de estado 403 simultáneos
La clave se está utilizando desesperadamente más allá de su alcance o intentando accesos prohibidos
Solicitudes constantes fuera del horario laboral
Sistema automatizado mal configurado o uso no autorizado
Pico repentino en el volumen de solicitudes
Error en el bucle de integración del cliente (abuso de API)
Auditoría Tras Compromiso de Clave
Si sospechas que una clave ha sido expuesta o vulnerada, sigue estos pasos de manera rigurosa y rápida:
Revoca la clave inmediatamente desde tu panel (revisa Gestión de Claves).
Filtra los Registros de Actividad de manera global buscando el prefijo de esa clave específica.
Revisa a qué endpoints se llamó minuciosamente y a qué datos se intentó acceder malintencionadamente.
Si amerita, crea una nueva clave con los mismos alcances únicamente después de verificar la solución o el origen del fallo y utilízala para tu integración legítima.
Para Desarrolladores (Laravel)
Los registros de agente usan el mismo modelo de Activity que todos los demás registros de la plataforma y el ecosistema en Laravel. Si estás construyendo analíticas, flujos o rastreos personalizados dentro del servidor:
use App\Models\Activity;
// Obtener todos los registros de la API de agente
$agentLogs = Activity::agentApi()->latest()->get();
// Obtener registros de agente para un socio o usuario específico
$partnerLogs = Activity::agentApi()
->where('causer_id', $partnerId)
->where('causer_type', Partner::class)
->latest()
->get();
// Filtra para obtener solamente operaciones de escritura o de eliminación exclusivas del agente
$writes = Activity::agentApi()
->forEvents(['agent_write', 'agent_delete'])
->latest()
->get();
Descubrimiento de Herramientas
Descubre operaciones de API disponibles dinámicamente como definiciones de herramientas legibles por máquina.
El endpoint /tools permite a tu agente descubrir por sí mismo qué puede hacer. Éste devuelve definiciones de herramientas limitadas estrictamente al rol y a los permisos de la clave de acceso actualmente autenticada — no se requiere configuración manual alguna de dichas herramientas.
Cómo Funciona
1. El agente se inicia:
Lee agent-api.json desde la base de datos o almacenamiento.
Filtra de inmediato por el Rol de la clave (e.g., admin, partner, member).
Filtra por los Alcances (Scopes) precisos de esa clave.
Filtra por los Permisos vigentes y comprueba que ninguna funcionalidad superior haya sido revocada.
Formatea la lista de retornos para coincidir con tu marco de trabajo elegido (OpenAI, Anthropic, etc.).
2. Disposición: El servidor pasa de forma segura la lista de herramientas disponibles al proveedor del LLM que se haya elegido para actuar en la solicitud.
3. Invocación: Cuando el LLM elige llamar a alguna herramienta, sus llamadas son enrutadas como invocaciones HTTP reales (POST, GET, PUT) hacia la API de Agente como correspondientes.
En resumen, tu agente llama a /tools una sola vez al inciar labores y, luego, confía en usar y reciclar esas definiciones de esquema devueltas para todas sus interacciones subsiguientes.
Petición y Respuesta
GET /api/agent/v1/tools?format=openai
Acepta un parámetro principal a través de la solicitud de búsqueda:
Parámetro
Tipo
Por Defecto
Descripción
format
string
generic
Formato de salida esperado: openai, anthropic, mcp o generic.
La sección superior meta sirve informativamente e incluye cuántas herramientas netas están disponibles para la clave actual y si esa respuesta en particular provino desde la caché de Fideko o tuvo que ser procesada en el momento.
Formatos Soportados
OpenAI Function Calling (?format=openai)
Muestra las herramientas en el formato function calling oficial de OpenAI. Cada herramienta se expone como un objeto de tipo "función" que dispone de estructura con información vital de variables requeridas y de opción múltiple.
[
{
"type": "function",
"function": {
"name": "list_loyalty_cards",
"description": "Lista todas las tarjetas de fidelidad para este socio\n...\n\nHTTP: GET /api/agent/v1/partner/cards",
"parameters": {
"type": "object",
"properties": {
"page": { "type": "integer", "default": 1 },
"per_page": { "type": "integer", "default": 25 }
},
"required": []
}
}
}
]
Anthropic/Claude Tool Use (?format=anthropic)
Devuelve todas las herramientas en su formato tool use especial estandarizado. Cada herramienta provee un name, una description y un bloque interno input_schema.
[
{
"name": "record_purchase",
"description": "Registra una compra y otorga puntos de lealtad\n...\n\nHTTP: POST /api/agent/v1/partner/transactions/purchase",
"input_schema": {
"type": "object",
"properties": { ... },
"required": ["card_id", "member_identifier", "purchase_amount"]
}
}
]
MCP (?format=mcp)
Devuelve las herramientas envueltas para el estándar Model Context Protocol. En específico, va albergadas en una macro estructura { "tools": [...] } y añade el respectivo inputSchema a lo largo de cada herramienta para mantener la compatibilidad.
Generic JSON Schema (?format=generic)
Devuelve un valioso formato muy completo y auto-documentado contando con method, path, scopes y todos sus esquemas de parámetros a través de entidades o campos denominados de primera clase. Es sumamente recomendable y adecuado si haces integraciones de bajo flujo en Zapier / Make / n8n y en la mayoría abrumadora de plataformas de trabajo que aceptan consumir y manipular datos JSON brutos.
{
"api_name": "Reward Loyalty Agent API",
"api_version": "1.0.0",
"base_url": "/api/agent/v1",
"auth": {
"type": "api_key",
"header": "X-Agent-Key"
},
"tools": [
{
"name": "list_loyalty_cards",
"description": "Lista todas las tarjetas de fidelidad para este socio",
"method": "GET",
"path": "/api/agent/v1/partner/cards",
"required_scopes": ["read", "write:cards"],
"parameters": { ... }
}
]
}
Conservación de Esquemas
Los parámetros que recubren las herramientas logran exitosamente preservar toda su compleja estructura y reglas provenientes de la especificación madre original del servidor (OpenAPI Schema). Esto incluye:
Campos traducibles — Aceptan un literal en cadena simple o, alternativamente, un objeto JSON enlazado por idioma y región (e.g. {"en": "...", "es": "..."}).
Objetos anidados — Entidades jerárquicas como diccionarios, acompañados de múltiples sub-propiedades exclusivas.
Arreglos (Arrays) — Soporte para matrices ordenadas y listas de parámetros iterables bajo la etiqueta del esquema items.
Limitaciones Semánticas — Palabras clave para la validación automática desde el modelo original hacia el LLM, como: Enums predefinidos, patrones regex, reglas maximos / mínimos y formatos estandarizados (como uri, base64 o uuid).
Todo el esfuerzo arquitectónico mencionado asegura con una enorme eficacia que el modelo al que te encomiendes (Tu LLM de elección) sea instruido detalladamente logrando enrutar su propia interacción sin erradicar en interpretaciones pobres ni datos erróneos.
Filtrado por Rol, Alcance y Permiso
El endpoint /tools solo devuelve un número y formato limitado de herramientas al que sabe legítimamente que la clave bajo uso tiene derechos para consumirla exitosamente de acuerdo con tres sofisticadas capas restrictivas.
Filtrado de Rol
Claves de Socio: Ven endpoints de socio + chequeo de salud general (hasta un total de 46 herramientas).
Claves de Administrador: Ven endpoints de administrador + chequeos visuales de salud (hasta un total de 10 herramientas).
Claves de Miembro: Identifican perfiles de cuentas cerradas, limitados a miembros + status check base de salud (hasta un total de 14 posibles herramientas).
Filtrado de Alcance
Si la clave está delimitada por alcances cortos y parciales (Ej: Únicamente read o vista simple), la respuesta únicamente emitirá los métodos GET limitando severamente la huella técnica. Las claves equipadas con el súper alcance absoluto del modelo maestro o administrador verán absolutamente y sin exclusión, cualquier endpoint pertinente que concierna a la naturaleza entera de su rol.
Filtrado de Permisos (Sólo Socio)
Las claves de socio están sujetas a dos chequeos severos más que pueden recortar sus resultados devueltos:
Acceso API de Agente Absoluto: Si agent_api_permission se encuentra marcado en falso o desactivado desde su administración central, la petición de la API abortará devoviendo la alerta de 403 FEATURE_DISABLED con la orden clara de "Acceso de API de Agente Revocado". Las herramientas retornarán una matriz vacía sin dar más detalles.
Filtrado por Funciones Específicas: Si el socio retiene los accesos a la API general temporalmente y legalmente preestablecido, pero de su propio conjunto se ha revocado artificialmente uno o más servicios del backend o plan desahabilitado de pago. Dichos servicios simplemente quedarán en exclusión estricta frente al modelo:
Permiso de Dominio de Función
Endpoints Excluidos y Bloqueados si ha sido Apagado o Rescindido
loyalty_cards_permission
Todas las validaciones, crud y manejos de puntos o recompensas (10 endpoints ocultos)
stamp_cards_permission
Comprobaciones de las tarjetas para colecciones / cupones temporales tipo plantilla (7 endpoints ocultos)
vouchers_permission
Exclusión total de redenciones del apartado de Vouchers o vales exclusivos (7 endpoints ocultos)
Exportación CLI
También puedes exportar cómodamente descripciones generales de múltiples escenarios dentro de los parámetros esperados de estas herramientas mediante la consola o terminal del servidor internamente y en tu entorno dev local u otro entorno que permita Laravel.
# Por defecto: formato `generic`, rol de socio
php artisan agent:export-tools
# Formato `openai` para herramientas de tipo administrador (admin endpoints)
php artisan agent:export-tools openai --role=admin
# Formato `anthropic` únicamente referenciado como nivel de miembro final
php artisan agent:export-tools anthropic --role=member
# Herramientas de solo-lectura destinadas a socios en un subformato de lectura (`generic`)
php artisan agent:export-tools generic --role=partner --scopes=read
Cualquier salida de estos mandatos se va a procesar en plano y depositar amigablemente sobre storage/api-docs/agent-tools-{formato_requerido}.json.
Caché
Las definiciones resultantes pueden y van a ser precacheadas sin remordimiento durante bloques exactos de 24 horas por métricas identificadas que incluyan todas sus iteraciones de atributos en simultáneo. Un vaciado y sobreescritura de cachés ocurre rápida, obligatoria y desatendidamente al percibir esto en su motor:
La especificación de la OpenAPI original generada y subyacente ha sido sustituida o refaccionada por Laravel.
Un intento de obtención a la API cruza por un umbral no listado pidiendo un recálculo bajo demanda sobre un rol específico que difiera en la longitud de caracteres de su Scope o en su árbol de permisos.
No es en ningún sentido y forma, útil o provechoso aplicar órdenes arbitrarias tipo cache:clear.
Códigos de Error
Status
Código Interno
Causa Subyacente del Error a Nivel Plataforma
403
FEATURE_DISABLED
El acceso a la API del socio ha sido revocado en panel. (agent_api_permission = false)
422
INVALID_FORMAT
El parámetro format de la petición carece de validez. Se esperaba openai, anthropic, mcp o generic.
503
TOOLS_UNAVAILABLE
La especificación madre interna sobre la OpenAPI no está lista o es defectuosa en este despliegue.
Ejemplo de Integración con Python y OpenAI
A continuación se demuestra una manera eficiente para vincular el entorno, recuperar e inyectar todas las iteraciones dispuestas en cuestión de un vistazo para el famoso LLM gpt-4:
import openai, requests, json
AGENT_KEY = "rl_agent_..."
BASE_URL = "https://your-domain.com"
# 1. Rutina de arranque, recuperar definiciones e imprimirlas pasándolas al proveedor en "startUp"
resp = requests.get(
f"{BASE_URL}/api/agent/v1/tools?format=openai",
headers={"X-Agent-Key": AGENT_KEY}
)
# Convertir o extraer un listado a partir de esta macro matriz provista de un Array base
tools = resp.json()["tools"]
# 2. Paso hacia los modelos o APIs de OpenAI propiamente.
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Award 50 points to customer@email.com"}],
tools=tools,
)
# 3. Invocar la llamada a la herramienta si el LLM nos devolvió parámetros a ejecutar e invocar
tool_call = response.choices[0].message.tool_calls[0]
fn = tool_call.function
# Búsqueda manual de su respectivo HTTP Method predefinido incrustado en nuestra propia descripción provista a GPT en pasos previos.
desc = next(t["function"]["description"] for t in tools if t["function"]["name"] == fn.name)
http_line = [l for l in desc.split("\n") if l.startswith("HTTP:")][0]
method, path = http_line.replace("HTTP: ", "").split(" ", 1)
# Procesar ejecución y reflejar éxito global de todos los eventos solicitados por nuestra IA
result = requests.request(
method=method,
url=f"{BASE_URL}{path}",
headers={"X-Agent-Key": AGENT_KEY},
json=json.loads(fn.arguments),
)
print(result.json())
Referencia Completa de Endpoints
Todos los endpoints de la API del agente a través de todos los roles — rutas, métodos, alcances, parámetros y campos de respuesta. El panorama completo.
Cada endpoint de la API del agente, leído desde el código fuente. URL Base:/api/agent/v1 (69 endpoints en total).
Todos los endpoints requieren una clave de agente válida a través del encabezado X-Agent-Key. Consulta la sección de Autenticación para más detalles.
Versión interactiva disponible: Explora la especificación OpenAPI completa en la UI interactiva (Swagger) o descarga el archivo JSON para importarlo en Postman o generadores de código. Para definiciones legibles por máquinas de LLMs, consulta la sección Descubrimiento de Herramientas.
Globales
Chequeo de Salud
GET /health
Alcance: Cualquier clave válida (no requiere alcance específico)
Rol: Todos (socio, miembro, administrador)
Devuelve la identidad de la clave, alcances, límite de tasa y el estado de conectividad.
Alcance: Cualquier clave válida (no requiere alcance específico)
Rol: Todos (socio, miembro, administrador)
Devuelve definiciones de herramientas legibles por máquina limitadas al rol y a los permisos de la clave de agente que autentica. Enviar ?format=openai, ?format=anthropic, ?format=mcp o ?format=generic (por defecto) para obtener un resultado apto a integrarlo en el marco de trabajo o lenguaje escogido.
Este endpoint queda excluido por sí solo internamente.
Parámetros de consulta:format (cadena, defecto: generic)
Campos de respuesta:tools[], meta.role, meta.format, meta.tool_count, meta.cached
Endpoints de Socio
Todos los endpoints de socio tienen el prefijo /partner y exigen una clave con rol socio.
Clubes (Clubs)
Unidades organizativas que agrupan y albergan tarjetas, personal y niveles (tiers).
Método
Endpoint
Alcance
Descripción
GET
/partner/clubs
read o write:clubs
Listar todos los clubes
GET
/partner/clubs/{id}
read o write:clubs
Obtener detalle del club
POST
/partner/clubs
write:clubs
Crear un club
PUT
/partner/clubs/{id}
write:clubs
Actualizar un club
DELETE
/partner/clubs/{id}
write:clubs
Eliminar un club
Campos de creación (POST):name (requerido), is_active (defecto: true).
Tarjetas de Fidelidad (Loyalty Cards)
Método
Endpoint
Alcance
Descripción
GET
/partner/cards
read o write:cards
Listar tarjetas de fidelidad
POST
/partner/cards
write:cards
Crear una tarjeta de fidelidad
PUT
/partner/cards/{id}
write:cards
Actualizar una tarjeta de fidelidad
DELETE
/partner/cards/{id}
write:cards
Eliminar una tarjeta de fidelidad
Recompensas (Rewards)
Método
Endpoint
Alcance
Descripción
GET
/partner/rewards
read o write:rewards
Listar todas las recompensas
POST
/partner/rewards
write:rewards
Crear una recompensa
PUT
/partner/rewards/{id}
write:rewards
Actualizar una recompensa
DELETE
/partner/rewards/{id}
write:rewards
Eliminar una recompensa
Transacciones
Flujo central de "ganar y canjear" para puntos de venta o CRM.
Método
Endpoint
Alcance
Descripción
GET
/partner/transactions
read o write:transactions
Listar transacciones
POST
/partner/transactions/purchase
write:transactions
Registrar compra → otorgar puntos
POST
/partner/transactions/redeem
write:rewards
Canjear recompensa → deducir puntos
Miembros
Acceso de lectura a miembros registrados o auto-inscritos bajo las franquicias del socio.
Método
Endpoint
Alcance
Descripción
GET
/partner/members
read
Listar miembros registrados
GET
/partner/members/{id}
read
Obtener detalle del miembro
GET
/partner/members/{id}/balance/{cardId}
read
Obtener saldo del miembro en una tarjeta
Tarjetas de Sellos (Stamp Cards)
Método
Endpoint
Alcance
Descripción
GET
/partner/stamp-cards
read o write:stamps
Listar tarjetas de sellos
POST
/partner/stamp-cards
write:stamps
Crear tarjeta de sellos
POST
/partner/stamp-cards/{id}/stamps
write:stamps
Añadir sellos a miembro
POST
/partner/stamp-cards/{id}/redeem
write:stamps
Canjear sello completado
Cupones (Vouchers)
Método
Endpoint
Alcance
Descripción
GET
/partner/vouchers
read o write:vouchers
Listar cupones
POST
/partner/vouchers
write:vouchers
Crear un cupón
POST
/partner/vouchers/validate
write:vouchers
Validar si un cupón sirve aún
POST
/partner/vouchers/{id}/redeem
write:vouchers
Canjear cupón final por el usuario
Niveles (Tiers)
Método
Endpoint
Alcance
Descripción
GET
/partner/tiers
read o write:tiers
Listar todos los niveles
POST
/partner/tiers
write:tiers
Crear un nivel VIP o estándar
DELETE
/partner/tiers/{id}
write:tiers
Borrar un nivel
Personal (Staff)
Método
Endpoint
Alcance
Descripción
GET
/partner/staff
read o write:staff
Listar operadores personal de la tienda
POST
/partner/staff
write:staff
Crear cajero / personal
PUT
/partner/staff/{id}
write:staff
Actualizar personal
DELETE
/partner/staff/{id}
write:staff
Revocar personal
Endpoints de Miembro
Todos los endpoints de miembro están prefijados con /member y requieren de inicio de sesión con clave rl_member_.
Grupo
Método
Endpoint
Descripción
Perfil
GET
/member/profile
Obtener registro propio
PUT
/member/profile
Actualizar registro
Tarjetas
GET
/member/balance
Agrupación de saldos completos
GET
/member/cards
Ver mis tarjetas listadas
Transacciones
GET
/member/transactions
Consultar mi historial
Recompensas
GET
/member/rewards
Listar recompensas para canjear en tiendas
POST
/member/rewards/{id}/claim
Hacer reclamo explícito que requerirá visita física
Descubrimiento
POST
/member/discover/resolve
Escanear URL del comercio para añadir club
POST
/member/discover/follow
Mover a Mis Tarjetas
POST
/member/discover/unfollow
Olvidar / desvincular un club
Endpoints de Administrador
Tienen super-privilegios por bloque /admin. Dedicados para el SaaS base.