API de registros de formación
Devuelve las asignaciones y los resultados de finalización de los alumnos de la organización o el grupo asociado al cliente de API.
Listar registros de formación
GET /api/v1/training-records
Ámbito requerido: training.read. Consulta Autenticación para obtener y utilizar un token de acceso.
curl --request GET \
--url "https://courses.e-learningcourses.com/api/v1/training-records?page=1&pageSize=1000" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json"
La credencial determina qué registros se devuelven. El endpoint no acepta un identificador de organización o grupo.
Parámetros de consulta
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
page | entero | 1 | Número de página. Debe ser al menos 1. |
pageSize | entero | 1000 | Registros por página. Debe estar entre 1 y 5000. |
includeArchived | booleano | false | Usa true para incluir registros archivados. |
includeInviteStatus | booleano | false | Usa true para incluir el último evento registrado del correo de invitación. La propiedad inviteStatus se omite cuando es false. |
enrolledFrom | fecha o fecha-hora ISO 8601 | ninguno | Límite inferior inclusivo de la fecha de asignación. Excluye registros sin fecha de asignación. |
enrolledTo | fecha o fecha-hora ISO 8601 | ninguno | Límite superior exclusivo de la fecha de asignación. Excluye registros sin fecha de asignación. |
Las fechas sin desplazamiento se interpretan como UTC. Es preferible utilizar valores UTC explícitos, como 2026-09-01T00:00:00Z.
El intervalo es semiabierto: incluye enrolledFrom y excluye enrolledTo. Para incluir todas las asignaciones del 30 de septiembre, por ejemplo, usa enrolledTo=2026-10-01.
enrolledFrom y enrolledTo filtran la fecha en que se asignó la formación, no lastUpdatedUtc. Una sincronización que deba detectar cambios de finalización posteriores debe leer todas las páginas relevantes y conciliar los registros mediante recordId.
Ejemplo con filtros
curl --request GET \
--url "https://courses.e-learningcourses.com/api/v1/training-records?page=1&pageSize=5000&enrolledFrom=2026-09-01T00%3A00%3A00Z&enrolledTo=2026-10-01T00%3A00%3A00Z&includeArchived=true&includeInviteStatus=true" \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json"
Respuesta
{
"data": [
{
"recordId": 125804,
"firstName": "Alex",
"lastName": "Morgan",
"email": "alex.morgan@example.com",
"courseId": "38f595b7-2ff4-4da6-bf24-91316399ec9a",
"courseName": "Supplier Code of Conduct",
"assignedDateUtc": "2026-09-03T08:30:00Z",
"completedDateUtc": "2026-09-05T14:12:08Z",
"groupId": "fbc74870-3995-4f2c-b129-c2812b3e56c7",
"groupName": "Example Supplier",
"supplierNo": "SUP-1042",
"status": "passed",
"source": "annual",
"archived": false,
"lastUpdatedUtc": "2026-09-05T14:12:12Z",
"inviteStatus": "delivered"
}
],
"pagination": {
"page": 1,
"pageSize": 1000,
"totalRecords": 1,
"totalPages": 1
}
}
Campos del registro
| Campo | Tipo | Descripción |
|---|---|---|
recordId | entero | Identificador del registro de estado. Úsalo para conciliar descargas repetidas. |
firstName | cadena o null | Nombre del alumno. |
lastName | cadena o null | Apellidos del alumno. |
email | cadena o null | Correo electrónico o nombre de usuario del alumno. |
courseId | UUID | Identificador del curso. Compáralo con los identificadores de curso de la API de paquetes. |
courseName | cadena | Nombre del curso. |
assignedDateUtc | fecha-hora o null | Fecha y hora UTC de asignación. |
completedDateUtc | fecha-hora o null | Fecha y hora UTC de finalización. |
groupId | UUID o null | Identificador del grupo asociado a la asignación. Consúltalo en la API de grupos. |
groupName | cadena o null | Nombre del grupo asociado. |
supplierNo | cadena o null | Número de proveedor del grupo. |
status | cadena | Estado estable para sistemas. Consulta Valores de estado. |
source | cadena | Origen de la asignación: annual, ec o headtrax. Un origen sin valor se devuelve como annual. |
archived | booleano | Indica si el registro está archivado. |
lastUpdatedUtc | fecha-hora | Última actualización del registro de informes, en UTC. |
inviteStatus | cadena o null | Último evento registrado de la invitación para el paquete y destinatario. Solo aparece con includeInviteStatus=true. Trata el valor del proveedor como una cadena opaca. |
Valores de estado
| Valor | Significado |
|---|---|
not_started | El alumno no ha iniciado el curso. |
in_progress | El alumno ha comenzado, pero no ha terminado. |
completed | El curso está completado y no tiene resultado de aprobado/suspenso. |
passed | El alumno ha completado y aprobado el curso. |
failed | El alumno ha completado, pero no ha aprobado el curso. |
archived | El registro está archivado. Este valor prevalece sobre el resultado de finalización. |
Paginación
Los registros se devuelven en un orden estable por recordId. Sigue solicitando páginas hasta que page alcance totalPages. Si no hay coincidencias, data está vacío y totalPages vale 0.
Utiliza el objeto pagination; no calcules la página siguiente solo por la cantidad de registros recibidos, porque la última página puede contener menos que pageSize.
Errores
| Estado HTTP | Significado |
|---|---|
400 Bad Request | Un parámetro no es válido. |
401 Unauthorized | Falta el token, no es válido o ha caducado. |
403 Forbidden | Falta training.read o el cliente ya no está autorizado para su ámbito. |
429 Too Many Requests | Se ha superado un límite. Reintenta con espera progresiva. |
500 Internal Server Error | Error inesperado. Guarda el traceId para solicitar asistencia. |
Los errores de validación utilizan el formato Problem Details estándar:
{
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"pageSize": [
"Page size must be between 1 and 5000."
]
},
"traceId": "00-..."
}
Consulta los límites de autenticación para conocer el límite compartido.
OpenAPI
https://courses.e-learningcourses.com/api/v1/openapi.json