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.
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.
intervals, scheduled_time, activable, usuarios de auditoría y campos de sincronización offline cuando aplican.
Reportes
Sigdpr.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.