# 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](/entidades-basicas/clientes/obtener-un-cliente.md) |
| 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](/entidades-basicas/clientes/agregar-un-cliente.md), 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](/entidades-basicas/clientes/obtener-un-cliente.md)

{% 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.api.persat.com.ar/entidades-basicas/clientes/modificar-un-cliente.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
