> 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/entidades-basicas/clientes/listar-clientes.md).

# Listar Clientes

<mark style="color:blue;">`GET`</mark> `https://api.persat.com.ar/v1/clients`

#### Path Parameters

| Name          | Type   | Description                                                                           |
| ------------- | ------ | ------------------------------------------------------------------------------------- |
| limit         | number | Cantidad de clientes a obtener partiendo desde offset. El valor máximo es 100         |
| offset        | number | Indice comenzando desde 0. Indica a partir de que elemento queremos comenzar a listar |
| last\_updated | string | Fecha en formato ISO. Ejemplo: 2021-09-09T14:30:00.000Z                               |
| group\_id     | number | Numero de id de grupo de clientes a obtener. Debe ser mayor o igual a 0               |

#### Headers

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

{% tabs %}
{% tab title="200 Se obtuvo el listado correctamente." %}

```json
{
    "success": true,
    "paging": {
        "offset": 0,
        "limit": 20,
        "result": 20,
        "total": 14785
    },
    "data": [
        {
            "uid_client": "131058",
            "company_name": "Empresa s.r.l..",
            "company_description": "Empresa de tapizados",
            "type_id": 2,
            "group_id": 3,
            "latitude": -34.90097,
            "longitude": -56.1875,
            "service_time": 20,          // Opcional
            "wt": [480, 780],            // Opcional
            "street": "CERRO LARGO",
            "street_nbr": "1350",
            "neighborhood": "",
            "city": "Buenos Aires",
            "country": "Argentina",
            "last_updated": "2021-09-09T14:30:05.000Z",
            "custom_fields": {
                "2": {
                    "name": "Telefono",
                    "value": "5555-2122"
                },
                "8": {
                    "name": "Entre calle 1",
                    "value": "11100"
                },
                "9": {
                    "name": "Entre calle 2",
                    "value": ""
                },
                "10": {
                    "name": "Mail de notificación",
                    "value": "info@empresa.com.ar"
                },
                "13": {
                    "name": "Nombre del Contacto",
                    "value": "Pedro Lopez"
                }
            }
        }, 
        { ... }      // Otro cliente
    ]
}


```

{% endtab %}

{% tab title="400 Error en alguno de los campos enviados. userMessage contiene informacipon adicional." %}

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

{% endtab %}
{% endtabs %}

Los campos son explicados en la sección [Obtener un cliente](/entidades-basicas/clientes/obtener-un-cliente.md)

## <sub>`Parametros Opcionales`</sub>&#x20;

Por defecto, el listado devuele los primeros 20 resultados. En caso de querer los siguientes 20, debemos agregar el parámetro `offset`. También podemos obtener más de 20 resultados con el parámetro `limit`&#x20;

Curl de ejemplo con estos dos parametros:

```bash
curl --location --request GET "https://api.persat.com.ar/v1/clients?limit=5&offset=20" \
  --header "Authorization: Bearer YOUR_API_KEY"
```

Un parametro opcional, pero muy util para hacer una busqueda mas especifica a la hora de obtener los clientes, es el **group\_id** ([Grupo de clientes](/entidades-basicas/clientes/listar-grupos-de-clientes.md)), permitiendo obtener a los clientes que coincidan con ese **id de grupo.**

Otro parámetro opcional, es **last\_updated**, que es muy util a la hora de realizar una sincronización con otro sistema, y solo obtener los clientes que fueron modificados o creados despues de la fecha indicada incluyendola (mayor o igual)

A continuación un ejemplo con curl, en donde solicitamos 5 clientes desde la posición 20, que hayan sido modificados despues e inclusive el 10 de Septiembre de 2021 a las 14:30 UTC-0 y el Id del grupo 2.

```bash
curl --location --request GET "https://api.persat.com.ar/v1/clients?limit=5&offset=20&last_updated=2021-09-10T14:30:00.000Z&group_id=2" \
  --header "Authorization: Bearer YOUR_API_KEY"
```

## Sincronización

El procedimiento correcto para hacer la sincronización de un listado con muchos clientes es el siguiente:

La primera vez, realizamos un request sin el parametro last\_updated y/o group\_id, e iteramos modificando el offet hasta barrer todos los clientes. Una vez sincronizados guardamos la fecha UTC en que realizamos esta primer sincronización.

Luego, cada vez que queremos sincronizar, repetimos el procedimiento anterior pero indicando en el parámetro **last\_updated** la fecha guardada anteriormente. Finalizado el proceso guardamos la nueva fecha de sincronización.

De esta forma evitamos retrabajar clientes que no han sido modificados
