Cambios en la API pública de Crehana.
Acá publicamos los cambios que afectan el contrato de la API: endpoints nuevos, deprecaciones, cambios de comportamiento y de formato de respuesta.
Los cambios internos que no alteran el contrato no se listan.
Las deprecaciones se anuncian acá antes de retirarse, y los endpoints deprecados quedan marcados en la API Reference con su reemplazo.
Recibí los cambios por correo
Te escribimos cuando cambia el contrato: endpoints nuevos, deprecaciones y cambios de comportamiento. Nada más que eso.
Las vistas viejas de la documentacion redirigen a este portal
GET /api/v5/rest/redocs y GET /api/v5/rest/docs ya no dibujan la referencia
por su cuenta: ahora redirigen —con un 302— al API
Reference de este portal.
Las dos URLs siguen funcionando, así que un enlace guardado no se rompe: te deja en el mismo contenido, con las guías al lado y con el explorador que ya trae el panel de autenticación.
course_enroll_date deja de estar documentado en el reporte general v2
GET /org/{slug}/reports/learning/general-v2/ ya no lista course_enroll_date
entre sus parámetros. El filtro por fecha de inscripción se pide con
from_date y to_date, igual que en los otros tres reportes de learning.
El reemplazo es from_date solo, sin to_date. Es la parte que se presta a
confusión: course_enroll_date no tenía techo —devolvía todo desde esa fecha en
adelante— así que poner la misma fecha en los dos extremos del rango no es
equivalente, deja un solo día.
Los endpoints deprecados salen del portal
Ocho endpoints que ya estaban marcados como deprecados dejan de aparecer en esta documentación. Siguen respondiendo con normalidad: si tu integración los usa, no se rompe nada y no hay que hacer nada con urgencia.
Lo que cambia es que dejamos de ofrecerlos a quien recién empieza, para que nadie construya sobre un camino que ya está marcado para salir.
Eliminar una solicitud de tiempo libre
DELETE /org/{slug}/timeoff/requests/{request_id}/ elimina una solicitud de
ausencia de la organización. La solicitud deja de aparecer en
GET /org/{slug}/timeoff/requests/ y el tiempo que consumía vuelve al saldo
del colaborador.
Con una credencial de administrador de la organización —así se crean las
api-key— podés eliminar cualquier solicitud y en cualquier estado. Si la
credencial corresponde a un colaborador, sólo puede eliminar las solicitudes
propias y sólo mientras sigan pendientes; en el resto de los casos la respuesta
es 403 Forbidden.
Los reportes de asistencia se pueden consultar por API
Los cuatro seguimientos del producto Asistencia —los mismos que hasta ahora solo se podían bajar en Excel desde el panel— ya están disponibles como endpoints paginados:
Los rechazos de autorización devuelven 401 y 403
En la sección de usuarios, cuando una operación se rechaza por credenciales o por permisos, la respuesta ahora trae el status HTTP que le corresponde en vez de uno genérico:
Si tu integración distinguía estos casos leyendo el message de la
respuesta, cambiá a leer el status HTTP o el campo code. Los dos son
estables; el texto del mensaje no.
Los custom fields de organizations quedan deprecados
La funcionalidad de campos personalizados se movió a su propia sección. Los
dos endpoints que vivían bajo organizations quedan deprecados:
Se dejaron de emitir los headers internos de diagnóstico
Las respuestas ya no incluyen los headers que la capa proxy usaba para
depurar (crehana-graphql-proxy-*, cache-graphql-*,
crehana-rest-app-name, crehana-rest-api-version y variantes). Exponían
detalle interno —nombre de operación, módulo y versión— que no forma parte
del contrato.
El cuerpo de las respuestas no cambió. Si tu integración leía alguno de esos headers, va a encontrarlos ausentes.
Nueva sección: Time off
GET /org/{slug}/timeoff/requests/ lista las solicitudes de ausencia de la
organización —vacaciones, licencias y permisos— paginadas y filtrables.
Asignar un track a varios usuarios
POST /org/{slug}/learning/content/knowledge-hub/enrollments/v2/assign-track/
asigna un track a un conjunto de usuarios en una sola llamada, igual que el
assign-course/ que ya existía.
Asignaciones sin usuarios devuelven 422
Los dos endpoints de asignación (assign-course/ y assign-track/) ahora
responden 422 Unprocessable Entity cuando la llamada no termina asignando
a ningún usuario, en vez de devolver un 200 con la lista vacía.
Forzar el cambio de contraseña en el próximo login
Los endpoints de cambio de contraseña aceptan un campo nuevo,
force_change_password. Cuando va en true, al usuario se le va a exigir
cambiar la contraseña la próxima vez que ingrese.
El campo es opcional y por defecto es false, así que las integraciones
existentes no cambian de comportamiento.
Asignar un curso a varios usuarios
POST /org/{slug}/learning/content/knowledge-hub/enrollments/v2/assign-course/
asigna un curso a un conjunto de usuarios en una sola llamada, en lugar de
una petición por usuario.
Editar categorías de posición
PUT /org/{slug}/organizations/position-categories/{position_category_id}/
permite editar una categoría de posición existente. Antes solo se podían
listar y crear.
