> ## Documentation Index
> Fetch the complete documentation index at: https://a3erpapi.appcloud.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestión de contraseñas de usuario en la A3ERP API

> Usa los endpoints de email para que los usuarios recuperen su contraseña por correo o la actualicen directamente desde la A3ERP API.

La A3ERP API incluye dos endpoints dedicados a la gestión de contraseñas de usuario: uno para **recuperar** una contraseña olvidada enviando una nueva por email, y otro para **actualizar** la contraseña de forma segura verificando la clave actual. Ambos operan sobre los usuarios dados de alta en el sistema (clientes, proveedores, transportistas, representantes o personas).

***

## Recuperar contraseña

Comprueba si el email proporcionado corresponde a algún usuario registrado en A3ERP. Si existe, genera automáticamente una nueva contraseña, la guarda en el sistema y la envía por correo electrónico a esa dirección.

**`GET https://servidor:<puerto>/api/email/recuperapass/{email}`**

**Ejemplo:**

```
GET https://servidor:5555/api/email/recuperapass/prueba@jnc.es
```

### Parámetros de ruta

<ParamField path="email" type="string" required>
  Dirección de correo electrónico del usuario que desea recuperar su contraseña. Debe coincidir exactamente con el email registrado en A3ERP.

  Ejemplo: `prueba@jnc.es`
</ParamField>

### Ejemplo de petición HTTP

```http theme={null}
GET /api/email/recuperapass/prueba@jnc.es HTTP/1.1
Host: servidor:<puerto>
Accept: */*
```

### Respuesta

| Código | Descripción                                                                                          |
| ------ | ---------------------------------------------------------------------------------------------------- |
| `200`  | OK — la contraseña ha sido generada y enviada por email (sin contenido en el cuerpo de la respuesta) |

<Note>
  Este endpoint **no requiere** token JWT. Cualquier llamada con un email válido registrado en el sistema desencadena el envío de la nueva contraseña. Si el email no existe, la API no devuelve ningún dato para no exponer información sobre los usuarios registrados.
</Note>

***

## Actualizar contraseña

Verifica que el email existe entre los usuarios registrados y que la contraseña actual proporcionada coincide con la almacenada. Si ambas comprobaciones son correctas, reemplaza la contraseña actual por la nueva.

**`GET https://servidor:<puerto>/api/email/actualizapass/{email}/{pass}/{newpass}`**

**Ejemplo:**

```
GET https://servidor:5555/api/email/actualizapass/prueba@jnc.es/passantigua/nuevapass
```

### Parámetros de ruta

<ParamField path="email" type="string" required>
  Dirección de correo electrónico del usuario cuya contraseña se desea actualizar. Debe estar registrada en A3ERP.

  Ejemplo: `prueba@jnc.es`
</ParamField>

<ParamField path="pass" type="string" required>
  Contraseña **actual** del usuario. Se utiliza para verificar la identidad antes de permitir el cambio.

  Ejemplo: `passantigua`
</ParamField>

<ParamField path="newpass" type="string" required>
  Nueva contraseña que se asignará al usuario una vez superada la verificación.

  Ejemplo: `nuevapass`
</ParamField>

### Cabecera requerida

<ParamField header="Authorization" type="string" required>
  Token JWT válido obtenido previamente mediante `POST /api/login`.

  Formato: `Bearer <token>`

  Ejemplo: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...`
</ParamField>

### Ejemplo de petición HTTP

```http theme={null}
GET /api/email/actualizapass/prueba@jnc.es/passantigua/nuevapass HTTP/1.1
Host: servidor:<puerto>
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Accept: */*
```

### Respuesta

| Código | Descripción                                                                                       |
| ------ | ------------------------------------------------------------------------------------------------- |
| `200`  | OK — la contraseña ha sido actualizada correctamente (sin contenido en el cuerpo de la respuesta) |

<Note>
  El endpoint `actualizapass` **requiere un token JWT válido** en la cabecera `Authorization`. Sin él, la API devolverá `401 Authorization Required`. Obtén tu token llamando a [`POST /api/login`](/api/validacion) antes de realizar esta operación.
</Note>
