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

# Datos procesados por Vantage Mobile Input

> Flujo de datos y llamadas a la API que utiliza Vantage Mobile Input en iOS y Android para crear documentos, subir imágenes e iniciar el procesamiento de transacciones en Vantage.

export const VantageRegion = ({children}) => {
  const STORAGE_KEY = "abbyy.vantage.region";
  const REGIONS = [{
    code: "eu",
    label: "Europe"
  }, {
    code: "us",
    label: "North America"
  }, {
    code: "au",
    label: "Australia / Asia-Pacific"
  }];
  const [region, setRegion] = useState("eu");
  const [open, setOpen] = useState(false);
  const containerRef = useRef(null);
  const dropdownRef = useRef(null);
  function safeGetSavedRegion() {
    try {
      const saved = typeof window !== "undefined" ? window.localStorage.getItem(STORAGE_KEY) : null;
      const valid = new Set(REGIONS.map(r => r.code));
      return saved && valid.has(saved) ? saved : "eu";
    } catch {
      return "eu";
    }
  }
  function safeSetSavedRegion(code) {
    try {
      if (typeof window !== "undefined") {
        window.localStorage.setItem(STORAGE_KEY, code);
      }
    } catch {}
  }
  function dispatchRegionChanged(code) {
    try {
      if (typeof window !== "undefined") {
        window.dispatchEvent(new CustomEvent("abbyy:region-changed", {
          detail: {
            code
          }
        }));
      }
    } catch {}
  }
  function replaceRegionInString(text, currentRegion) {
    if (typeof text !== "string") return text;
    const hostRegex = /https:\/\/vantage-(eu|us|au)\.abbyy\.com/gi;
    const tokenRegex = /https:\/\/vantage-\[region\]\.abbyy\.com/gi;
    const bareHostRegex = /vantage-(eu|us|au)\.abbyy\.com/gi;
    const bareTokenRegex = /vantage-\[region\]\.abbyy\.com/gi;
    return text.replace(hostRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(tokenRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(bareHostRegex, `vantage-${currentRegion}.abbyy.com`).replace(bareTokenRegex, `vantage-${currentRegion}.abbyy.com`);
  }
  useEffect(() => {
    setRegion(safeGetSavedRegion());
  }, []);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      const href = a.getAttribute("href");
      if (href) {
        const next = replaceRegionInString(href, region);
        if (next !== href) {
          a.setAttribute("href", next);
        }
      }
    });
    const walker = typeof document !== "undefined" ? document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null) : null;
    if (walker) {
      const toUpdate = [];
      let node = walker.nextNode();
      while (node) {
        const updated = replaceRegionInString(node.nodeValue, region);
        if (updated !== node.nodeValue) {
          toUpdate.push([node, updated]);
        }
        node = walker.nextNode();
      }
      toUpdate.forEach(([textNode, value]) => {
        textNode.nodeValue = value;
      });
    }
  }, [region, children]);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      a.style.fontWeight = "600";
      a.style.textDecoration = "underline";
      a.style.textUnderlineOffset = "2px";
    });
  }, [region, children]);
  useEffect(() => {
    const onRegionChanged = evt => {
      const code = evt && evt.detail && evt.detail.code;
      if (!code || code === region) return;
      setRegion(code);
    };
    if (typeof window !== "undefined") {
      window.addEventListener("abbyy:region-changed", onRegionChanged);
    }
    return () => {
      if (typeof window !== "undefined") {
        window.removeEventListener("abbyy:region-changed", onRegionChanged);
      }
    };
  }, [region]);
  useEffect(() => {
    const onClickAway = e => {
      if (!dropdownRef.current) return;
      if (!dropdownRef.current.contains(e.target)) {
        setOpen(false);
      }
    };
    document.addEventListener("click", onClickAway, true);
    return () => document.removeEventListener("click", onClickAway, true);
  }, []);
  const onSelect = code => {
    setRegion(code);
    safeSetSavedRegion(code);
    dispatchRegionChanged(code);
    setOpen(false);
  };
  const current = REGIONS.find(r => r.code === region) || REGIONS[0];
  return <div className="not-prose">
      <div className="mb-4 inline-flex items-center gap-2" ref={dropdownRef}>
        <span className="text-sm text-zinc-950/80 dark:text-white/80">Tenant Region:</span>
        <div className="relative">
          <button type="button" aria-haspopup="listbox" aria-expanded={open ? "true" : "false"} onClick={() => setOpen(v => !v)} className="h-8 px-3 rounded-md bg-zinc-900/5 dark:bg-white/5 border border-zinc-950/20 dark:border-white/20 text-sm inline-flex items-center gap-2">
            <span className="text-zinc-950 dark:text-white">{current.label}</span>
            <svg width="8" height="24" viewBox="0 -9 3 24" className="transition-transform text-gray-400 overflow-visible dark:text-gray-600 ml-auto" style={{
    transform: open ? "rotate(270deg)" : "rotate(90deg)"
  }}>
              <path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"></path>
            </svg>
          </button>
          {open ? <div role="listbox" className="absolute z-50 left-full top-0 ml-2 w-56 rounded-xl border border-zinc-950/20 dark:border-white/20 bg-white dark:bg-zinc-900 shadow-lg p-2">
              {REGIONS.map(r => {
    const selected = r.code === region;
    return <button key={r.code} type="button" role="option" aria-selected={selected ? "true" : "false"} onClick={() => onSelect(r.code)} className={"w-full flex items-center justify-between px-3 py-2 rounded-lg text-sm hover:bg-zinc-950/5 dark:hover:bg-white/10 text-zinc-950 dark:text-white" + (selected ? " font-medium" : "")}>
                    <span style={selected ? {
      color: "#ff2038"
    } : undefined}>{r.label}</span>
                    <span className={selected ? "ml-3" : "ml-3 invisible"} style={selected ? {
      color: "#ff2038"
    } : undefined}>✓</span>
                  </button>;
  })}
            </div> : null}
        </div>
      </div>
      <div ref={containerRef} className="prose dark:prose-invert max-w-none">{children}</div>
    </div>;
};

Vantage Mobile Upload se comunica con el servidor de Vantage mediante llamadas a la API. Estas llamadas se utilizan para crear documentos, subir imágenes e iniciar el procesamiento de transacciones con determinados parámetros.

<div id="api-calls-by-platform">
  ## Llamadas de API por plataforma
</div>

<div id="ios-platform">
  ### Plataforma iOS
</div>

La microaplicación iOS de Vantage Mobile Input utiliza las siguientes llamadas a la API:

1. Envío de parámetros de la sesión de entrada al Vantage Mobile Upload Backend
2. Obtención de parámetros de la sesión de entrada desde el Vantage Mobile Upload Backend
3. Obtención del estado de la transacción
4. Descarga de modelos para analizar imágenes de los documentos
5. Obtención de la lista de documentos de la transacción
6. Eliminación de documentos existentes en la transacción
7. Creación de un documento en la transacción
8. Carga de imágenes capturadas al documento
9. Inicio de la transacción

<div id="android-platform">
  ### Plataforma Android
</div>

La microaplicación Vantage Mobile Input para Android utiliza las siguientes llamadas a la API:

1. Obtener el estado de la transacción
2. Descargar modelos para analizar imágenes de documentos
3. Obtener la lista de documentos de la transacción
4. Eliminar documentos existentes en la transacción
5. Crear un documento en la transacción
6. Cargar imágenes capturadas al documento
7. Iniciar la transacción

<div id="sending-input-session-parameters-to-the-vantage-mobile-upload-backend">
  ## Envío de parámetros de sesión de entrada al backend de carga móvil de Vantage
</div>

Vantage Mobile Input envía parámetros de sesión de entrada al Vantage Mobile Upload Backend. Estos parámetros se utilizan en la sesión de carga de la microaplicación de Android o del navegador web.

<div id="input-session-parameters">
  ### Parámetros de la sesión de entrada
</div>

| Clave         | Descripción                                                                                                                         |
| :------------ | :---------------------------------------------------------------------------------------------------------------------------------- |
| BaseURL       | El dominio principal del servidor de Vantage.                                                                                       |
| TransactionID | El identificador de la transacción.                                                                                                 |
| Token         | El token de acceso de autorización codificado que se utiliza para acceder de forma autorizada a la Vantage API.                     |
| v             | La versión de la Vantage API.                                                                                                       |
| md            | La cantidad de documentos que se capturarán en una sola transacción.                                                                |
| redirect\_uri | El enlace de redirección que se abre cuando finaliza Vantage Mobile Upload.                                                         |
| dt            | El tipo de documento.                                                                                                               |
| ma            | La dirección del entorno en la nube de ABBYY Vantage que se utiliza para iniciar microaplicaciones en implementaciones on-premises. |

Solicitud:

```
curl -X POST "https://mobilesessionmanager-eu.abbyy.com/api/v1/mobilesessions"
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-F "Body=
    {
      "sessionAuxiliaryKey": "string",
      "sessionData": "string"
    }
```

Respuesta:

```
Código de estado de la solicitud
```

<div id="getting-input-session-parameters-from-vantage-mobile-upload-backend">
  ## Obtener parámetros de la sesión de entrada desde Vantage Mobile Upload Backend
</div>

Para obtener los parámetros de la sesión de entrada, Vantage Mobile Upload envía solicitudes a Vantage Mobile Upload Backend.

<div id="input-session-parameters">
  ### Parámetros de la sesión de entrada
</div>

| Clave         | Descripción                                                                                                                      |
| :------------ | :------------------------------------------------------------------------------------------------------------------------------- |
| BaseURL       | El dominio principal del servidor de Vantage.                                                                                    |
| TransactionID | El identificador de la transacción.                                                                                              |
| Token         | El token de acceso codificado que se utiliza para acceder con autorización a Vantage API.                                        |
| v             | La versión de Vantage API.                                                                                                       |
| md            | La cantidad de documentos que se capturarán en una sola transacción.                                                             |
| redirect\_uri | El enlace de redirección que se abre una vez finalizada la carga móvil de Vantage.                                               |
| dt            | El tipo de documento.                                                                                                            |
| ma            | La dirección del entorno en la nube de ABBYY Vantage que se utiliza para iniciar microaplicaciones en instalaciones on-premises. |

Solicitud:

```
curl -X POST "https://mobilesessionmanager-eu.abbyy.com/api/v1/mobilesessions/retrive"
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-F "Body=
    {
      "userCode": "String"
    }
```

Respuesta:

```
{
   "sessionData": "<Input Session Parameters>"
}
```

Ejemplo de parámetros de la sesión de entrada:

```
{
\"sessionData\": \"https://mobilesessionmanager-eu.abbyy.com/mobile?baseUrl=<https://vantage-us.abbyy.com>&transactionId=<transaction-id>&token=<token>&v=<release_version>\"
}
```

<div id="getting-the-status-of-the-transaction">
  ## Consultar el estado de la transacción
</div>

Vantage Mobile Upload envía una solicitud para obtener el identificador y el estado de la transacción. Solo las transacciones con el estado **New** son válidas para cargar documentos.

**Parámetros clave**

| Clave         | Descripción                                                                        |
| :------------ | :--------------------------------------------------------------------------------- |
| TransactionID | El identificador de la transacción.                                                |
| Status        | El estado de la transacción. Valores posibles: New, Started, Processing, Processed |

Solicitud:

<VantageRegion>
  ```
  GET https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id
  ```
</VantageRegion>

Respuesta:

```
{
   "id": "<TransactionID>",
   "status": "<Status>"
}
```

<div id="downloading-the-models-for-analyzing-images-of-the-documents">
  ## Descarga de los modelos para analizar imágenes de documentos
</div>

La carga móvil de Vantage envía solicitudes para descargar modelos que detectan los bordes de las páginas en imágenes de documentos para la microaplicación de iOS.

**Parámetros clave**

| Key                 | Description                                                                                                                                                                                                                                                                                                                                           |
| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AbbyyRtrSDK-version | La versión del framework AbbyyRtrSDK que se utiliza para solicitar los archivos de patrones correspondientes. El valor puede variar según la versión de Vantage.                                                                                                                                                                                      |
| PatternFileName     | El nombre del archivo de patrón de AbbyyRtrSDK que se utiliza para detectar los bordes de las páginas en imágenes de documentos. Hay seis tipos de archivos de patrón: `FactCrop.imodel`, `CnnCrop.Classifier.cnnmodel`, `DIQClassifier.imodel`, `CnnCrop.Detector.GenericWithID.cnnmodel`, `DIQBlockClassifier.imodel`, `CropClassifierPhoto.imodel` |

Solicitud:

<VantageRegion>
  ```
  GET https://vantage-us.abbyy.com/app_clip/mobile_sdk_assets/AbbyyRtrSDK-version/patterns/PatternFileName
  ```
</VantageRegion>

Respuesta:

```
File pattern
```

<div id="getting-a-list-of-the-documents-in-the-transaction">
  ## Obtener la lista de documentos de la transacción
</div>

Antes de cargar documentos en la transacción, Vantage Mobile Upload envía una solicitud para comprobar si la transacción contiene documentos creados previamente. Si la transacción no está vacía, Vantage Mobile Upload envía una solicitud de **Eliminar documento** para eliminar todos los documentos existentes antes de iniciar una nueva sesión de carga.

**Parámetros clave**

| Key            | Description                                                                                                                                                                                                            |
| :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| TransactionID  | El identificador de la transacción.                                                                                                                                                                                    |
| DocumentID     | El identificador del documento recibido de la solicitud **Crear un documento**.                                                                                                                                        |
| SourceFileID   | El identificador de la imagen del documento.                                                                                                                                                                           |
| SourceFileName | El nombre de la imagen del documento. Vantage Mobile Upload genera automáticamente nombres de archivo para cada imagen y carga las imágenes en el documento mediante la solicitud **Cargar imágenes en el documento**. |

Solicitud:

<VantageRegion>
  ```
  GET https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/documents
  ```
</VantageRegion>

Respuesta:

```
[
   {
      "documentId": "<DocumentID>",
      "sourceFiles": 
      [
         {
           "id": "<SourceFileID>",
           "name": "<SourceFileName>.JPG"
         }
      ]
   }, 
   {
      "documentId": "<DocumentID>",
      "sourceFiles": 
      [
         {
           "id": "<SourceFileID>",
           "name": "<SourceFileName>.JPG"
         }
      ]
   }
]
```

<div id="deleting-existing-documents-in-the-transaction">
  ## Eliminación de documentos existentes en la transacción
</div>

Para eliminar un documento de la transacción antes de iniciar el procesamiento, use `DELETE /api/publicapi/v1/transactions/{transactionId}/documents/{documentId}`.

Esto permite a los usuarios:

* Eliminar documentos capturados de forma incorrecta
* Vaciar documentos antes de volver a capturarlos
* Gestionar conjuntos de documentos en la transacción

<Info>
  Los documentos solo se pueden eliminar antes de que la transacción comience a procesarse.
</Info>

<div id="creating-a-document-in-the-transaction">
  ## Crear un documento en la transacción
</div>

Para cargar imágenes, Vantage Mobile Upload envía una solicitud para crear instancias de documento para cada documento de la transacción.

**Parámetros clave**

| Clave         | Descripción                                                                         |
| :------------ | :---------------------------------------------------------------------------------- |
| Token         | El token de acceso codificado que se usa para autorizar el acceso a la Vantage API. |
| TransactionID | El identificador de la transacción.                                                 |
| DocumentID    | El identificador del documento.                                                     |

Solicitud:

<VantageRegion>
  ```
  curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/documents"
  -H "accept: */*" \
  -H "Authorization: Bearer token" \
  -H "Content-Type: application/json; charset=utf-8" \
  -F "Model=
      {
        "index": <Unsigned Integer Value: document index in UI>,
        "imageProcessingOptions": 
          {
             "autoOrientationCorrection": "<Yes/No/Default>",
             "autoCrop": "<Yes/No/Default>"
          }
      }
  ```
</VantageRegion>

Respuesta:

```
{
   "documentId": "<DocumentID>"
}
```

<div id="uploading-captured-images-to-the-document">
  ## Carga de imágenes capturadas al documento
</div>

Una vez que se ha creado la instancia del documento, Vantage Mobile Upload envía una solicitud para cargar todas las imágenes al documento. Todas las imágenes de un mismo documento se cargan en una sola solicitud.

**Parámetros clave**

| Key            | Description                                                                                                                                               |
| :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Token          | El token de acceso de autorización codificado que se utiliza para acceder de forma autorizada a la Vantage API.                                           |
| TransactionID  | El identificador de la transacción.                                                                                                                       |
| DocumentID     | El identificador del documento recibido en la solicitud **Creación de un documento**.                                                                     |
| SourceFileID   | El identificador de la imagen del documento.                                                                                                              |
| SourceFileName | El nombre de la imagen del documento. Vantage Mobile Upload genera automáticamente nombres de archivo para cada imagen y carga las imágenes al documento. |
| ImageData      | Los datos codificados de los archivos de imagen. Se utilizan para cargar imágenes a los documentos.                                                       |

Solicitud:

<VantageRegion>
  ```
  curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/documents/document-id/sourceFiles"
  -H "accept: */*" \
  -H "Authorization: Bearer token" \
  -H "Content-Type: multipart/form-data; boundary=<Boundary>" \
  -F "Body=
      {
        "files": [
         {
           "index": 0,
           "registrationParameters": [
             {
              "key": "SourceType",
              "value": "Vantage Mobile Capture"
             }
           ]
          }
         ]
      },
      {
        "index": 1,
        ...
      },
        ...
     ]
   }

  <Boundary>
  Content-Disposition: form-data; name="Files"; filename="<SourceFileName>.JPG"
  Content-Type: image/jpeg
  <ImageData>

  ...
  <Boundary>
  Content-Disposition: form-data; name="Files"; filename="<SourceFileName>.JPG"
  Content-Type: image/jpeg
  <ImageData>
  ...
  <Boundary>
  ```
</VantageRegion>

Respuesta:

```
Código de estado de la solicitud
```

<div id="starting-the-transaction">
  ## Iniciar la transacción
</div>

Una vez creados todos los documentos y cargadas todas las imágenes en ellos, la carga móvil de Vantage envía una solicitud para iniciar la transacción.

**Parámetros clave**

| Clave         | Descripción                                                                                                     |
| :------------ | :-------------------------------------------------------------------------------------------------------------- |
| Token         | El token de acceso de autorización codificado que se utiliza para acceder de forma autorizada a la Vantage API. |
| TransactionID | El identificador de la transacción.                                                                             |

Solicitud:

<VantageRegion>
  ```
  curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/transaction-id/start"
  -H "accept: */*" \
  -H "Authorization: Bearer token" \
  -H "Content-Type: application/json; charset=utf-8" \
  ```
</VantageRegion>

Respuesta:

```
Status code of the request
```
