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

# Data Injection

> Data Injection es un método para actualizar información de un submission existente mediante una ruta separada. Este proceso reemplaza datos de categoría existentes con nueva información.

## 1. Prerrequisitos

<Note>
  Para realizar una Injection, primero debe existir un submission creado mediante Liveform.
</Note>

## 2. Opciones de Query String (Injection)

La información adicional enviada mediante Query Strings se incluye en los datos de respuesta al llamar a la API. Esto permite las siguientes funcionalidades:

* Generación de un ID de usuario único para la identificación del solicitante KYC.
* Adición de hasta tres campos personalizados.

## 3. Método de implementación

Las opciones de Query String pueden aplicarse usando el Liveform de ARGOS ID Check. Todos los valores de Query String deben estar codificados en URL.

## 4. Estructura de URL

* URL básica del formulario: `https://form.argosidentity.com?pid={project_Id}`
* URL de Injection: `https://form.argosidentity.com?pid={project_id}&action=addveri&sid={submission_id}`
* URL de Injection con cifrado: `https://form.argosidentity.com?pid={project_id}&encrypted={encrypted_values}`

<Warning>
  En la URL de Injection con cifrado es obligatorio cifrar los parámetros `sid` y `action`.

  [https://form.argosidentity.com?pid=\{project\_id}\&encrypted=\{encrypted\_values}](https://form.argosidentity.com?pid=\{project_id}\&encrypted=\{encrypted_values}) (O)

  [https://form.argosidentity.com?pid=\{project\_id}\&action=addveri\&sid=\{submission\_id}\&encrypted=\{encrytped\_values}](https://form.argosidentity.com?pid=\{project_id}\&action=addveri\&sid=\{submission_id}\&encrypted=\{encrytped_values}) (X)

  El ejemplo (X) funciona como una URL addveri (verificación de dirección) sin cifrado e ignora las opciones del parámetro encrypted.
</Warning>

<Note>
  Consulte este [enlace](https://developers.argosidentity.com/getting-started/en/encrypt-and-decrypt-data/overview) para los métodos de cifrado.
</Note>

### 4-1. Parámetros clave

<ResponseField name="pid" type="string" required="true">
  Identificador único del proyecto.
</ResponseField>

<ResponseField name="sid" type="string" required="true">
  Identificador único del submission. `sid` también debe cifrarse para usar cualquier parámetro cifrado.
</ResponseField>

<ResponseField name="action" type="string" required="true">
  Acción de la opción Injection, use `addveri`. `action` también debe cifrarse para usar cualquier parámetro cifrado.
</ResponseField>

<ResponseField name="cf1" type="string">
  Campo de opción personalizada #1.
</ResponseField>

<ResponseField name="cf2" type="string">
  Campo de opción personalizada #2.
</ResponseField>

<ResponseField name="cf3" type="string">
  Campo de opción personalizada #3.
</ResponseField>

<ResponseField name="userid" type="string">
  Debe cifrarse. Identificador único personalizado del usuario.
</ResponseField>

<ResponseField name="ipRiskCategory" type="string">
  Debe cifrarse. Establece el riesgo para servicios de enrutamiento basados en IP. Actualmente se admiten los parámetros `vpn`, `proxy` y `tor`. No hay espacio entre la coma y el nombre de opción en cada opción. Esta opción se combina con la opción `ipRiskDurationHours`.
</ResponseField>

<ResponseField name="ipRiskDurationHours" type="int">
  Debe cifrarse. El acceso puede restringirse directamente dentro de una hora especificada si el sistema determina que una dirección IP presenta un riesgo. Las direcciones IP riesgosas serán bloqueadas inmediatamente durante las horas establecidas. Debe usarse con `ipRiskCategory`.
</ResponseField>

<ResponseField name="distanceCheckSource" type="string">
  Debe cifrarse. La opción para evitar que los usuarios continúen si su dirección está distante de su IP. Actualmente solo está disponible `ipGeo`. Esta opción se combina con `distanceMaxDistanceKm`.
</ResponseField>

<ResponseField name="distanceMaxDistanceKm" type="int">
  Debe cifrarse. Puede establecer una distancia entre la dirección ingresada y la dirección basada en IP. Debe usarse con `distanceCheckSource`.
</ResponseField>

<ResponseField name="blacklistCountries" type="bool">
  Debe cifrarse. Para prohibir que un país sea incluido en la lista negra del dashboard, debe establecerse en true. El valor predeterminado es false.
</ResponseField>

<Note>
  La dirección ingresada en la injection es relevante para los países de la lista negra.

  La ubicación IP y el país enviado no son relevantes.
</Note>

## 4-2. Respuestas de rechazo

| Código de rechazo      | Descripción                                                                    |
| ---------------------- | ------------------------------------------------------------------------------ |
| `ipRisk_failCategory`  | Detección de categorías ipRisk seleccionadas.                                  |
| `distanceChecks_ipGeo` | La distancia excede los kilómetros establecidos, según lo indicado por ipGeo.  |
| `blackliskCountries`   | No se puede realizar la injection debido a la presencia de blacklistCountries. |

## 4-3. Respuestas de error

| Código de error              | Descripción                                                                      |
| ---------------------------- | -------------------------------------------------------------------------------- |
| `Invalid required`           | Falta un parámetro obligatorio.                                                  |
| `Required field is missing`  | Falta uno o más de los siguientes: sid, pid o datos de dirección.                |
| `Invalid submissionId`       | El `sid` proporcionado no existe.                                                |
| `Invalid projectId`          | El `pid` proporcionado no existe.                                                |
| `Error in injecting address` | Ocurrió un error indefinido o no especificado durante la injection de dirección. |

## 5. Resultados de actualización de dirección

### 5-1-a. En caso de éxito

* Redirige a la página de resultados.
* Muestra el mensaje: "Address verification completed."

### 5-1-b. En caso de éxito (Webhook)

Consulte la sección [Data Injection de Webhook](https://developers.argosidentity.com/webhooks/en/idcheck-injection).

### 5-2-a. En caso de fallo

* Redirige a una página de error.
* `ipRiskCategory` que se aplicó y el riesgo que se detectó, muestra el mensaje: "VPN/Proxy Detection, Please disable VPN or proxy and try again with a regular network connection."
* El `distanceCheckSource` aplicado y la distancia excede la distancia especificada en km, muestra el mensaje: "Address Verification Failed, Please verify your address or try again on a network near your residence."
* Si el proceso no fue exitoso, muestra el mensaje: "An error occurred while processing the address information. Please try again." El usuario puede entonces proceder con la reverificación.

### 5-2-b. En caso de fallo (Webhook)

No existe un webhook específico para la detección de riesgo IP. Sin embargo, si falla la validación de distancia o se detecta un país de la lista negra, se genera un webhook. Consulte la sección [Data Injection de Webhook](https://developers.argosidentity.com/webhooks/en/idcheck-injection).

Esta guía le ayuda a utilizar efectivamente la función de Data Injection y las opciones de Query String en ID check para gestionar y personalizar el proceso de ID check con mayor flexibilidad.
