# Modificar un cliente

<mark style="color:orange;">`PUT`</mark> `https://api.persat.com.ar/v1/clients/uid_client`

Modifico alguno de los campos del cliente con número de cliente `uid_client`

#### Headers

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

#### Request Body

| Name                                                                                | Type              | Description                                                                                                                                                                                            |
| ----------------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| company\_name                                                                       | string            | Nombre del cliente, razón social o nombre de fantasía.                                                                                                                                                 |
| company\_description                                                                | string            | Descripción del cliente.                                                                                                                                                                               |
| latitude                                                                            | number            | Ubicación del cliente, latitud                                                                                                                                                                         |
| longitude                                                                           | number            | Ubicación del cliente, longitud                                                                                                                                                                        |
| service\_time                                                                       | number            | Tiempo de servicio. Se utiliza por el algoritmo de ruteo.                                                                                                                                              |
| wt                                                                                  | \[number, number] | Hora de apertura y cierre del local (en minutos). Se utiliza por el algoritmo de ruteo. Ver ejemplo en [Obtener Cliente](https://docs.api.persat.com.ar/entidades-basicas/clientes/obtener-un-cliente) |
| street                                                                              | string            | Calle en donde se encuentra el cliente. No incluir el número.                                                                                                                                          |
| street\_nbr                                                                         | string            | Número de la calle.                                                                                                                                                                                    |
| neighborhood                                                                        | string            | Barrio, por ej: "Devoto"                                                                                                                                                                               |
| city                                                                                | string            | Ciudad, por ejemplo "CABA"                                                                                                                                                                             |
| country                                                                             | string            | País, por ejemplo: "Argentina"                                                                                                                                                                         |
| custom\_fields <mark style="color:red;">\*</mark> (puede haber campos obligatorios) | JSON Object       | Campos personalizados de la ficha de clientes                                                                                                                                                          |
| type\_id                                                                            | Number            | Identificador del tipo de cliente. Debe ser un tipo válido, de lo contrario se recibira un 409 CONFLICT como respuesta                                                                                 |
| group\_id                                                                           | Number            | Identificador del grupo de cliente. Debe ser un grupo valido, de lo contrario se recibirá 409 CONFLICT como respuesta                                                                                  |

{% tabs %}
{% tab title="200 Cliente modificado. Sólo se devuelven los campos que fueron modificados" %}

```javascript
{
    "success": true,
    "data": {
        "uid_client": "CL-0044",
        "company_name": "Persat nuevo",
        "company_description": "Logistica GPS nuevo",
        "latitude": "-32"
        "custom_fields": {
            "2": "4444-5555"
        }
    }
}
```

{% endtab %}

{% tab title="400 Valor de latitude incorrecto" %}

```javascript
{
    "success": false,
    "error": {
        "status": 400,
        "type": "BAD_REQUEST",
        "userMessage": "'latitude' debe ser un número entre -90 y +90"
    }
}
```

{% endtab %}

{% tab title="404 Intento modificar un cliente que no existe." %}

```javascript
{
    "success": false,
    "error": {
        "status": 404,
        "type": "NOT_FOUND",
        "userMessage": "El cliente que desea modificar no existe."
    }
}
```

{% endtab %}

{% tab title="409: Conflict type\_id | group\_id invalidos" %}

```javascript
{
    "success": false,
    "error": {
        "status": 409,
        "type": "CONFLICT",
        "userMessage": "type_id o group_id tiene un valor invalido. Enviar los campos en 0, o no enviar dichos campos"
    }
}
```

{% endtab %}

{% tab title="409: Conflict Ya existe otro cliente con este company\_name" %}

```javascript
{
    "success": false,
    "error": {
        "status": 409,
        "type": "CONFLICT",
        "userMessage": "ER_DUP_ENTRY: Duplicate entry 'Persat' for key 'company_name'"
    }
}
```

{% endtab %}
{% endtabs %}

En caso de que la respuesta sea exitosa, sólo se devuelven los datos que fueron modificados. A diferencia de [Agregar un cliente](https://docs.api.persat.com.ar/entidades-basicas/clientes/agregar-un-cliente), en donde se devuelve el cliente completo

A continuación un ejemplo con curl, en donde modifico, los campos: `company_name, company_description, latitude y custom_fields` del cliente "CL-0044"

```bash
curl --location --request PUT "https://api.persat.com.ar/v1/clients/CL-0044" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --data "{
	\"company_name\":\"Persat nuevo\",
	\"company_description\":\"Logistica GPS nuevo\",
	\"latitude\":-32,
	\"group_id\": 2,
	\"custom_fields\": {
		\"2\": \"4444-5555\"
	}
  }"
```

Los campos son explicados en la sección [Obtener un cliente](https://docs.api.persat.com.ar/entidades-basicas/clientes/obtener-un-cliente)

{% hint style="danger" %}
IMPORTANTE: En ningún caso la dirección se calcula automáticamente en base a `latitude` y `longitude.`Esto si ocurre desde la aplicación web de Persat, o desde la app de Android
{% endhint %}

{% hint style="warning" %}
Si el custom\_field es obligatorio, y se desea modificar el valor. No se aceptará un valor vacío ""
{% endhint %}
