> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raul.ugps.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get timeline of activities and visits for a client

> Get timeline of activities and visits for a client



## OpenAPI

````yaml /generated/specs/operations.json get /api/v1/activity/by-client/{clientId}
openapi: 3.0.0
info:
  title: Raul API - Operaciones
  description: Suscripciones, GPS, actividades, visitas y operacion tecnica.
  version: 2.0.0
  contact: {}
servers:
  - url: https://api.raul.ugps.io
    description: Production
security: []
tags: []
paths:
  /api/v1/activity/by-client/{clientId}:
    get:
      tags:
        - Activities
      summary: Get timeline of activities and visits for a client
      description: Get timeline of activities and visits for a client
      operationId: ActivityController_getByClient
      parameters:
        - name: clientId
          required: true
          in: path
          description: Client UUID
          schema:
            type: string
        - name: activity_type_id
          required: false
          in: query
          description: Filter by activity type
          schema:
            type: number
        - name: contact_id
          required: false
          in: query
          description: Filter by contact
          schema:
            type: string
        - name: date_from
          required: false
          in: query
          description: Filter from date (ISO)
          schema:
            type: string
            example: '2026-01-01'
        - name: date_to
          required: false
          in: query
          description: Filter to date (ISO)
          schema:
            example: '2026-12-31'
            type: string
        - name: include_emails
          required: false
          in: query
          description: 'Include emails in timeline (default: true)'
          schema:
            default: true
            type: boolean
        - name: group_threads
          required: false
          in: query
          description: 'Group emails by thread_id into conversations (default: true)'
          schema:
            default: true
            type: boolean
        - name: whatsapp_gap_hours
          required: false
          in: query
          description: >-
            WhatsApp: split huge conversations into sessions when inactivity gap
            >= N hours (0 = no split). Recommended: 24.
          schema:
            default: 0
            type: number
      responses:
        '200':
          description: Timeline items (activities + visits) sorted by date DESC
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TimelineItemDto'
      security:
        - bearerAuth: []
components:
  schemas:
    TimelineItemDto:
      type: object
      properties:
        item_type:
          type: string
          description: 'Tipo de item: activity, visit o task'
          enum:
            - activity
            - visit
            - task
        date:
          format: date-time
          type: string
          description: Fecha del evento (para ordenamiento)
        client_id:
          type: object
          description: ID del cliente
          nullable: true
        activity_id:
          type: string
          description: ID de la actividad (si item_type = activity)
        contact_id:
          type: object
          description: ID del contacto asociado
        activity_type_id:
          type: number
          description: ID del tipo de actividad
        activity_type_name:
          type: string
          description: Nombre del tipo de actividad
        content:
          type: string
          description: Contenido de la actividad o tarea
        files_count:
          type: number
          description: Cantidad de archivos adjuntos
        contact_name:
          type: object
          description: Nombre del contacto
        created_by_name:
          type: object
          description: Nombre del creador
        external_source:
          type: object
          description: Fuente externa (outlook, whatsapp, etc.)
        external_id:
          type: object
          description: ID externo en el sistema de origen
        emailMeta:
          type: object
          description: Metadatos de correo asociados a la actividad
        whatsappMeta:
          type: object
          description: Metadatos de WhatsApp asociados a la actividad
        visit_detail_id:
          type: string
          description: ID de la visita (si item_type = visit)
        visit_date:
          type: object
          description: Fecha de la visita
        description:
          type: object
          description: Descripción de la visita
        visit_type_name:
          type: object
          description: Tipo de visita
        visit_status_name:
          type: object
          description: Estado de la visita
        technician_name:
          type: object
          description: Nombre del técnico
        address:
          type: object
          description: Dirección de la visita
        task_id:
          type: string
          description: ID de la tarea
        task_status:
          type: string
          description: Estado de la tarea
        assigned_to_name:
          type: object
          description: Nombre del responsable asignado
        isThread:
          type: boolean
          description: Indica si este item es un thread agrupado de emails
          default: false
        threadCount:
          type: number
          description: Cantidad de mensajes en el thread (cuando isThread = true)
        threadMessages:
          type: array
          description: >-
            Array de actividades que forman parte del thread (cuando isThread =
            true)
        threadType:
          type: string
          description: Tipo de hilo agrupado
          enum:
            - email
            - whatsapp
      required:
        - item_type
        - date
        - client_id
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token authentication

````