> ## 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.

# Vantage Mobile Input によって処理されるデータ

> iOS および Android の Vantage Mobile Input で、documents の作成、画像のアップロード、Vantage でのトランザクション処理の開始に使用されるデータ フローと API 呼び出し。

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 は、API 呼び出しを使用して Vantage サーバーと通信します。これらの呼び出しは、documents の作成、画像のアップロード、特定のパラメーターによるトランザクション処理の開始に使用されます。

<div id="api-calls-by-platform">
  ## プラットフォーム別の API 呼び出し
</div>

<div id="ios-platform">
  ### iOS プラットフォーム
</div>

Vantage Mobile Input の iOS マイクロアプリケーションは、次の API 呼び出しを使用します:

1. 入力セッションのパラメーターを Vantage Mobile Upload Backend に送信する
2. 入力セッションのパラメーターを Vantage Mobile Upload Backend から取得する
3. トランザクションのステータスを取得する
4. ドキュメント画像を分析するためのモデルをダウンロードする
5. トランザクション内の documents の一覧を取得する
6. トランザクション内の既存の documents を削除する
7. トランザクション内に Document を作成する
8. 取得した画像を Document にアップロードする
9. トランザクションを開始する

<div id="android-platform">
  ### Android プラットフォーム
</div>

Vantage Mobile Input の Android マイクロアプリは、次の API 呼び出しを使用します:

1. トランザクションのステータス取得
2. ドキュメント画像を解析するためのモデルのダウンロード
3. トランザクション内のドキュメント一覧の取得
4. トランザクション内の既存ドキュメントの削除
5. トランザクション内でのドキュメントの作成
6. ドキュメントへの撮影画像のアップロード
7. トランザクションの開始

<div id="sending-input-session-parameters-to-the-vantage-mobile-upload-backend">
  ## Vantage Mobile Upload Backend への入力セッション Parameter の送信
</div>

Vantage Mobile Input は、入力セッション Parameter を Vantage Mobile Upload Backend に送信します。これらの Parameter は、Android のマイクロアプリケーションまたは Web ブラウザーでのアップロードセッションに使用されます。

<div id="input-session-parameters">
  ### 入力セッションのパラメーター
</div>

| Key           | Description                                                           |
| :------------ | :-------------------------------------------------------------------- |
| BaseURL       | Vantage server のメインドメイン。                                              |
| TransactionID | トランザクションの識別子。                                                         |
| Token         | Vantage API への認証済みアクセスに使用される、エンコードされた access token。                   |
| v             | Vantage API のバージョン。                                                   |
| md            | 1 つのトランザクションで抽出される文書数。                                                |
| redirect\_uri | Vantage Mobile Upload の完了後に開くリダイレクトリンク。                               |
| dt            | 文書タイプ。                                                                |
| ma            | オンプレミス環境で micro applications を起動するために使用される、ABBYY Vantage クラウド環境のアドレス。 |

リクエスト:

```
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"
    }
```

レスポンス:

```
リクエストのステータスコード
```

<div id="getting-input-session-parameters-from-vantage-mobile-upload-backend">
  ## Vantage Mobile Upload Backend から入力セッションのパラメータを取得する
</div>

入力セッションのパラメータを取得するため、Vantage Mobile Upload は Vantage Mobile Upload Backend にリクエストを送信します。

<div id="input-session-parameters">
  ### 入力セッションのパラメーター
</div>

| キー            | 説明                                                              |
| :------------ | :-------------------------------------------------------------- |
| BaseURL       | Vantage serverのメインドメインです。                                       |
| TransactionID | トランザクションの識別子です。                                                 |
| Token         | Vantage API への認証済みアクセスに使用される、エンコードされたアクセス トークンです。               |
| v             | Vantage API のバージョンです。                                           |
| md            | 1 つのトランザクションで取り込まれる文書数です。                                       |
| redirect\_uri | Vantage Mobile Upload の完了後に開くリダイレクト先のリンクです。                     |
| dt            | 文書タイプです。                                                        |
| ma            | オンプレミス環境でマイクロアプリケーションを開始するために使用される、ABBYY Vantage クラウド環境のアドレスです。 |

リクエスト:

```
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"
    }
```

レスポンス:

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

input session パラメーターの例:

```
{
\"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">
  ## トランザクションのステータスの取得
</div>

Vantage Mobile Upload は、トランザクションの識別子とステータスを取得するためのリクエストを送信します。ドキュメントをアップロードできるのは、ステータスが **New** のトランザクションのみです。

**主なパラメーター**

| キー            | 説明                                                           |
| :------------ | :----------------------------------------------------------- |
| TransactionID | トランザクションの識別子です。                                              |
| Status        | トランザクションのステータスです。使用できる値: New, Started, Processing, Processed |

リクエスト:

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

レスポンス:

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

<div id="downloading-the-models-for-analyzing-images-of-the-documents">
  ## 文書画像の分析用モデルのダウンロード
</div>

Vantage Mobile Upload は、iOS マイクロアプリケーション用に、文書画像内のページの端を検出するためのモデルをダウンロードするリクエストを送信します。

**主なパラメーター**

| キー                  | 説明                                                                                                                                                                                                                                                    |
| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AbbyyRtrSDK-version | 関連するパターンファイルのリクエストに使用する AbbyyRtrSDK フレームワークのバージョンです。値は Vantage のバージョンに応じて変わる場合があります。                                                                                                                                                                  |
| PatternFileName     | 文書画像内のページの端を検出するために使用される AbbyyRtrSDK のファイルパターン名です。ファイルパターンには 6 種類あります: `FactCrop.imodel`, `CnnCrop.Classifier.cnnmodel`, `DIQClassifier.imodel`, `CnnCrop.Detector.GenericWithID.cnnmodel`, `DIQBlockClassifier.imodel`, `CropClassifierPhoto.imodel` |

リクエスト:

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

レスポンス:

```
File pattern
```

<div id="getting-a-list-of-the-documents-in-the-transaction">
  ## トランザクション内のドキュメント一覧の取得
</div>

Vantage Mobile Upload は、ドキュメントをトランザクションにアップロードする前に、トランザクション内に以前作成されたドキュメントがあるかどうかを確認するリクエストを送信します。トランザクションが空でない場合、Vantage Mobile Upload は新しいアップロードセッションを開始する前に、既存のすべてのドキュメントを削除するための **Delete document** リクエストを送信します。

**主なパラメーター**

| キー             | 説明                                                                                                                     |
| :------------- | :--------------------------------------------------------------------------------------------------------------------- |
| TransactionID  | トランザクションの識別子です。                                                                                                        |
| DocumentID     | **Creating a document** リクエストで取得したドキュメントの識別子です。                                                                        |
| SourceFileID   | 文書画像の識別子です。                                                                                                            |
| SourceFileName | 文書画像の名前です。Vantage Mobile Upload は各画像のファイル名を自動生成し、**Uploading Images to the document** リクエストを使用してその画像をドキュメントにアップロードします。 |

リクエスト:

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

レスポンス:

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

<div id="deleting-existing-documents-in-the-transaction">
  ## トランザクション内の既存documentsの削除
</div>

処理を開始する前にトランザクションからdocumentsを削除するには、`DELETE /api/publicapi/v1/transactions/{transactionId}/documents/{documentId}` を使用します。

これにより、ユーザーは次のことが可能になります:

* 誤って取り込まれたdocumentsを削除する
* 再取り込み前にdocumentsを消去する
* トランザクション内のdocumentsセットを管理する

<Info>
  documentsは、トランザクションの処理開始前にのみ削除できます。
</Info>

<div id="creating-a-document-in-the-transaction">
  ## トランザクション内でドキュメントを作成する
</div>

画像をアップロードする際、Vantage Mobile Upload は、トランザクション内の各ドキュメントに対してドキュメントインスタンスを作成するリクエストを送信します。

**主なパラメーター**

| Key           | Description                                   |
| :------------ | :-------------------------------------------- |
| Token         | Vantage API への認証済みアクセスに使用する、エンコードされたアクセストークン。 |
| TransactionID | トランザクションの識別子。                                 |
| DocumentID    | ドキュメントの識別子。                                   |

リクエスト:

<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: UI 内のドキュメントのインデックス>,
        "imageProcessingOptions": 
          {
             "autoOrientationCorrection": "<Yes/No/Default>",
             "autoCrop": "<Yes/No/Default>"
          }
      }
  ```
</VantageRegion>

レスポンス:

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

<div id="uploading-captured-images-to-the-document">
  ## 撮影した画像を文書にアップロードする
</div>

文書インスタンスが作成されると、Vantage Mobile Upload はすべての画像を文書にアップロードするリクエストを送信します。1 つの文書に含まれるすべての画像は、1 回のリクエストでアップロードされます。

**主なパラメーター**

| キー             | 説明                                                              |
| :------------- | :-------------------------------------------------------------- |
| Token          | Vantage API への認証済みアクセスに使用する、エンコードされたアクセストークン。                   |
| TransactionID  | トランザクションの識別子。                                                   |
| DocumentID     | **Creating a document** リクエストで受け取った文書の識別子。                      |
| SourceFileID   | 文書画像の識別子。                                                       |
| SourceFileName | 文書画像の名前。Vantage Mobile Upload は各画像のファイル名を自動生成し、画像を文書にアップロードします。 |
| ImageData      | 画像ファイルのエンコードされたデータ。文書に画像をアップロードするために使用されます。                     |

リクエスト:

<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>

レスポンス:

```
リクエストのステータスコード
```

<div id="starting-the-transaction">
  ## トランザクションの開始
</div>

すべてのドキュメントが作成され、すべての画像がドキュメントにアップロードされると、Vantage Mobile Upload はトランザクションを開始するためのリクエストを送信します。

**主なパラメーター**

| Key           | 説明                                               |
| :------------ | :----------------------------------------------- |
| Token         | Vantage API への認証済みアクセスに使用される、エンコードされた認可アクセストークン。 |
| TransactionID | トランザクションの識別子。                                    |

リクエスト:

<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>

レスポンス:

```
リクエストのステータスコード
```
