> For the complete documentation index, see [llms.txt](https://docs.api.persat.com.ar/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.persat.com.ar/modulos/rastreo-satelital/obtener-visitas-a-clientes.md).

# Obtener Visitas a Clientes

En base al recorrido realizado por el dispositivo, se puede obtener cuales fueron los clientes visitados.&#x20;

{% hint style="info" %} <mark style="color:blue;">**IMPORTANTE:**</mark>

Debido a que la generación del recorrido para el cálculo de las visitas, requiere de una gran demanda de computo. Las visitas son calculadas automáticamente por la madrugada. Siendo el resultado obtenido, las visitas del día anterior.

Por lo que si quiero obtener las visitas de "hoy", el resultado va a ser nulo. La consulta debe hacerse a día vencido.
{% endhint %}

Se pueden hacer dos tipos de consulta:

1. Consulta de visitas en una fecha particular
2. Consulta de visitas en un mes entero

### Consulta de visitas en una fecha particular

<mark style="color:blue;">`GET`</mark> `https://api.persat.com.ar/v1/devices-visits/YYYY-MM-dd/device_id`

#### Path Parameters

| Name                                         | Type   | Description                                  |
| -------------------------------------------- | ------ | -------------------------------------------- |
| YYYY-MM-dd<mark style="color:red;">\*</mark> | Date   | Fecha en la que quiero consultar las visitas |
| device\_id<mark style="color:red;">\*</mark> | Number | Identificador del dispositivo                |

#### Headers

| Name                                            | Type   | Description     |
| ----------------------------------------------- | ------ | --------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer API\_KEY |

{% tabs %}
{% tab title="200: OK La consulta se ejecutó con éxito" %}

```json
{
    "success": true,
    "data": [
        {
            "device_id": 104,
            "date": "2022-12-02T20:23:29.000Z",
            "duration": 321000,
            "client": {
                "uid_client": "32488095",
                "company_name": "Empresa 1 s.r.l"
            }
        },
        {
            "device_id": 104,
            "date": "2022-12-02T15:01:32.000Z",
            "duration": 675000,
            "client": {
                "uid_client": "16682996",
                "company_name": "Empresa 2 s.r.l"
            }
        }, {...} 
    ]
}
```

{% endtab %}

{% tab title="404: Not Found No se encontro el dispositivo" %}

```json
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "No existe un device con este id"
    }
}
```

{% endtab %}

{% tab title="400: Bad Request device\_id no es un número" %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'device_id' debe ser un número entero"
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Error en la fecha" %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'localdate' debe estar definido en formato YYYY-MM | YYYY-MM-DD"
    }
}
```

{% endtab %}
{% endtabs %}

### Consulta de visitas en un mes entero

<mark style="color:blue;">`GET`</mark> `https://api.persat.com.ar/v1/devices-visits/YYYY-MM/device_id`

#### Path Parameters

| Name                                         | Type   | Description                                |
| -------------------------------------------- | ------ | ------------------------------------------ |
| YYYY-MM<mark style="color:red;">\*</mark>    | Date   | Mes en el que quiero consultar las visitas |
| device\_id<mark style="color:red;">\*</mark> | Number | Identificador del dispositivo              |

#### Headers

| Name                                            | Type   | Description     |
| ----------------------------------------------- | ------ | --------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer API\_KEY |

{% tabs %}
{% tab title="200: OK La consulta se ejecutó con éxito" %}

```json
{
    "success": true,
    "data": [
        {
            "device_id": 104,
            "date": "2022-12-02T20:23:29.000Z",
            "duration": 321000,
            "client": {
                "uid_client": "32488095",
                "company_name": "Empresa 1 s.r.l"
            }
        },
        {
            "device_id": 104,
            "date": "2022-12-02T15:01:32.000Z",
            "duration": 675000,
            "client": {
                "uid_client": "16682996",
                "company_name": "Empresa 2 s.r.l"
            }
        }, {...} 
    ]
}
```

{% endtab %}

{% tab title="404: Not Found No se encontro el dispositivo" %}

```json
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "No existe un device con este id"
    }
}
```

{% endtab %}

{% tab title="400: Bad Request device\_id no es un número" %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'device_id' debe ser un número entero"
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Error en la fecha" %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'localdate' debe estar definido en formato YYYY-MM | YYYY-MM-DD"
    }
}
```

{% endtab %}
{% endtabs %}

### Analizando la Respuesta para ambos casos

```json
{
    "success": true,
    "data": [
        {
            "device_id": 104,
            "date": "2022-12-02T20:23:29.000Z",
            "duration": 321000,
            "client": {
                "uid_client": "32488095",
                "company_name": "Empresa 1 s.r.l"
            }
        },
        {
            "device_id": 104,
            "date": "2022-12-02T15:01:32.000Z",
            "duration": 675000,
            "client": {
                "uid_client": "16682996",
                "company_name": "Empresa 2 s.r.l"
            }
        }, {...} 
    ]
}
```

**data:** Array con objetos JSON. Cada elemento del array contiene los datos de la visita al cliente. Están ordenados por fecha de visita de mayor a menor. Es decir, el primer item es la última visita realizada del día o mes (dependiendo la consulta)

**device\_id:** Identificador del Dispositivo.&#x20;

**date:** Fecha y hora en que se realizó la visita

{% hint style="warning" %}
Si bien la fecha esta representada en UTC, hay que considerarla en <mark style="color:orange;">**horario local**</mark>. Entonces para el caso del ejemplo, y sin importar si soy un cliente de Argentina, Ecuardor o Mexico, la fecha mostrada representa el día 5 de Diciembre de 2022 a las 15:01 hora de mi país

```
"date": "2022-12-02T15:01:32.000Z",
```

{% endhint %}

**duration:** Duración de la visita en milisegundos

**client:** Cliente visitado. Objeto Json con los siguientes fields:

**client.uid\_client:** Nro. de cliente

**client.company\_name:** Nombre/Razón social del cliente
