Skip to main content
Esquema 1.0.0. El sobre (event, timestamp, data.event_type, data.timestamp) es el de Webhooks. Los ejemplos de abajo son solo data.data, salvo que se indique lo contrario.
collaborator.created serializa el modelo del colaborador, incluidos datos personales y de nómina. Trata el cuerpo como confidencial.

Colaboradores

collaborator.created

Se envía cuando se dispara CollaboratorAdded (alta del colaborador). data.event_type es App\Events\CollaboratorAdded. data.data es el arreglo Eloquent del colaborador más company_id.

collaborator.updated

Disparador: CollaboratorStatusUpdated. data.data es el historial del colaborador (CollaboratorHistoryCollection). Si tiene grupo, incluye group_id.

collaborator.deleted

Disparador: CollaboratorDeleted.

collaborator.state_changed

Disparador: CollaboratorStateChanged.
group_id solo viene si el colaborador pertenece a un grupo. collaborator es CollaboratorResource::lightweight: no incluye el catálogo de tipos de documento. El job corre en cola, sin usuario de la petición, así que los campos de nombre personal quedan en null. current_state es el modelo State al iniciar un estado, o null al terminarlo.

collaborator.online_status_changed

Disparador: CollaboratorOnlineStatusChanged.

collaborator.checked_in y collaborator.checked_out

Disparadores: CollaboratorCheckedIn y CollaboratorCheckedOut. El listener no copia la actividad al payload: data solo trae event_type y timestamp. No hay data.data.

Actividades

activity.created, activity.updated y activity.deleted usan ActivityResource. Disparadores: ActivityCreated, ActivityUpdated, ActivityDeleted.
El recurso también puede incluir intervals, scheduled_time, activable, usuarios de auditoría y campos de sincronización offline cuando aplican.

Reportes

Si gdpr.analytics.pseudonymize_report_webhook_payloads está activo, el reporte se pseudonimiza y data.data incluye "_pseudonymized": true.

report.created

Disparador: ReportCreated. Además del sobre, data.idempotency_key vale report-created:{report_id}:{subscription_id}.
report.data trae cada campo del formulario como { value, component, title, description, required }.

report.updated y report.deleted

Disparadores: ReportUpdated y ReportDeleted. No usan ReportResource. El cuerpo es el modelo Eloquent y company_id llega en null porque el evento no lo guarda.

Dispositivos

device.created y device.deleted sí se envían (DeviceCreated, DeviceDeleted). El listener no adjunta el dispositivo: data solo trae event_type y timestamp. device.updated está en el enum y no se envía.

Geocercas

geofence.created

Disparador: GeofenceCreated.
sample_* trae como máximo 5 identificadores.

geofence.deleted

Disparador: GeofenceDeleted.
geofence.updated está en el enum y no se envía.

Horarios

data.data tiene siempre tres llaves: schedule (modelo Eloquent), collaborator_ids y changed_data.

schedule.created

Disparador: ScheduleAssigned. collaborator_ids son los colaboradores asignados. changed_data es null.

schedule.updated

Disparador: ScheduleUpdated. collaborator_ids es null. changed_data son los atributos que cambiaron.
schedule.deleted está en el enum y no se envía.

Solicitudes de estado

state_request.created

Disparador: StateRequestCreated.
collaborator y state vienen poblados solo si esas relaciones estaban cargadas. group_id solo si el colaborador tiene grupo.

state_request.updated

Disparador: StateRequestUpdated. Igual que el alta, con type en state_request_updated y un objeto changes con los atributos modificados.

state_request.deleted

Disparador: StateRequestDeleted.

Ausencias

absence.created, absence.updated y absence.deleted envían absence->toArray().

Retardos

tardiness.created, tardiness.updated y tardiness.deleted envían tardiness->toArray().

Check-in no programado

non_scheduled_checkin_request.created

Disparador: NonScheduledCheckinRequestCreated.