Saltar al contenido principal

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ámetroTipoPredeterminadoDescripción
pageentero1Número de página. Debe ser al menos 1.
pageSizeentero1000Registros por página. Debe estar entre 1 y 5000.
includeArchivedbooleanofalseUsa true para incluir registros archivados.
includeInviteStatusbooleanofalseUsa true para incluir el último evento registrado del correo de invitación. La propiedad inviteStatus se omite cuando es false.
enrolledFromfecha o fecha-hora ISO 8601ningunoLímite inferior inclusivo de la fecha de asignación. Excluye registros sin fecha de asignación.
enrolledTofecha o fecha-hora ISO 8601ningunoLí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.

Los filtros de inscripción no realizan seguimiento de cambios

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​

CampoTipoDescripción
recordIdenteroIdentificador del registro de estado. Úsalo para conciliar descargas repetidas.
firstNamecadena o nullNombre del alumno.
lastNamecadena o nullApellidos del alumno.
emailcadena o nullCorreo electrónico o nombre de usuario del alumno.
courseIdUUIDIdentificador del curso. Compáralo con los identificadores de curso de la API de paquetes.
courseNamecadenaNombre del curso.
assignedDateUtcfecha-hora o nullFecha y hora UTC de asignación.
completedDateUtcfecha-hora o nullFecha y hora UTC de finalización.
groupIdUUID o nullIdentificador del grupo asociado a la asignación. Consúltalo en la API de grupos.
groupNamecadena o nullNombre del grupo asociado.
supplierNocadena o nullNúmero de proveedor del grupo.
statuscadenaEstado estable para sistemas. Consulta Valores de estado.
sourcecadenaOrigen de la asignación: annual, ec o headtrax. Un origen sin valor se devuelve como annual.
archivedbooleanoIndica si el registro está archivado.
lastUpdatedUtcfecha-horaÚltima actualización del registro de informes, en UTC.
inviteStatuscadena 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​

ValorSignificado
not_startedEl alumno no ha iniciado el curso.
in_progressEl alumno ha comenzado, pero no ha terminado.
completedEl curso está completado y no tiene resultado de aprobado/suspenso.
passedEl alumno ha completado y aprobado el curso.
failedEl alumno ha completado, pero no ha aprobado el curso.
archivedEl 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 HTTPSignificado
400 Bad RequestUn parámetro no es válido.
401 UnauthorizedFalta el token, no es válido o ha caducado.
403 ForbiddenFalta training.read o el cliente ya no está autorizado para su ámbito.
429 Too Many RequestsSe ha superado un límite. Reintenta con espera progresiva.
500 Internal Server ErrorError 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