# API de OTP

La API OTP se puede utilizar para generar y validar PINs en campañas VAS, asegurando una autenticación de usuario segura y eficiente.

### **Parámetros comunes**

<table data-header-hidden><thead><tr><th width="150">Ruta</th><th width="150"> </th><th> </th></tr></thead><tbody><tr><td><strong>Consulta</strong></td><td><strong>Tipo</strong></td><td><strong>Descripción</strong></td></tr><tr><td>key</td><td>Cadena</td><td>Clave API</td></tr><tr><td>aid</td><td>Entero</td><td>Id de Afiliado</td></tr><tr><td>mid</td><td>Entero</td><td>Su MID de anunciante</td></tr></tbody></table>

## Generar OTP

```
POST https://api.offer18.com/api/af/otp_gen
```

### Parámetros de la solicitud

<table data-header-hidden><thead><tr><th width="212.5555419921875"></th><th width="191"></th><th></th></tr></thead><tbody><tr><td><strong>Cuerpo</strong></td><td><strong>Tipo</strong></td><td><strong>Descripción</strong>  </td></tr><tr><td>type</td><td>cadena</td><td>Tipo de solicitud</td></tr><tr><td>userId</td><td>cadena</td><td>ID de usuario (bajo el Socio)</td></tr><tr><td>msisdn</td><td>cadena</td><td>Número móvil (numérico)</td></tr><tr><td>partner</td><td>cadena</td><td>Nombre del socio</td></tr></tbody></table>

<pre data-overflow="wrap"><code><strong>https://api.offer18.com/api/af/otp_gen?key=000000000&#x26;aid=0000&#x26;mid=0000&#x26;msisdn=xxxxxxxx&#x26;partner=partnername&#x26;userId=xxxx
</strong></code></pre>

{% code title="Éxito" overflow="wrap" %}

```json
{
  "status": "200",
  "response": "otp_sent",
  "data": "6xxxxx00f3fa55axxxxxxxxxx567a" // data[requestId] clave y valor que se devuelven cuando la API del socio responde en la respuesta 
} 
```

{% endcode %}

{% code title="Fallo" overflow="wrap" %}

```json
{     
  "status": "400",     
  "error": "invalid_user_credentials" 
}
```

{% endcode %}

***

## Verificar OTP

```
POST https://api.offer18.com/api/af/otp_verify
```

### Parámetros de la solicitud

<table data-header-hidden><thead><tr><th width="212.5555419921875"></th><th width="191"></th><th></th></tr></thead><tbody><tr><td><strong>Cuerpo</strong></td><td><strong>Tipo</strong></td><td><strong>Descripción</strong>  </td></tr><tr><td>userId</td><td>cadena</td><td>ID de usuario</td></tr><tr><td>msisdn</td><td>cadena</td><td>Número móvil</td></tr><tr><td>otp</td><td>cadena</td><td>OTP recibido por el usuario</td></tr><tr><td>partner</td><td>cadena</td><td>Nombre del socio</td></tr><tr><td>request_id</td><td>cadena</td><td>ID de solicitud para seguimiento</td></tr></tbody></table>

{% code overflow="wrap" %}

```
https://api.offer18.com/api/af/otp_verify?key=000000000&aid=0000&mid=0000&msisdn=xxxxxxxx&partner=partnername&userId=xxxx&request_id=xxxxx&otp=xxxxx
```

{% endcode %}

### Ejemplo de respuesta de la API

{% code title="Éxito" overflow="wrap" %}

```json
{     
  "status": "200",     
  "response": "otp_verified" 
} 
```

{% endcode %}

{% code title="Fallo" overflow="wrap" %}

```json
{     
  "status": "400",     
  "error": "invalid_user_credentials" 
}
```

{% endcode %}

***

{% hint style="info" %}
**Para interacciones seguras, siempre llame a la API desde el lado del servidor.**
{% endhint %}
