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

# フローAPI

> フローAPI を使用して、CData Arc のフローをクエリ可能なREST エンドポイントとして作成し公開する方法。

export const CommonCors = () => <>
    <table>
      <thead>
        <tr><th>設定</th><th>説明</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>Enable cross-origin resource sharing (CORS)</strong></td>
          <td>CORS を有効にするかどうか。このチェックボックスをオンにした場合にのみ、その他のオプションが利用可能になります。</td>
        </tr>
        <tr>
          <td><strong>Allow all domains without '*'</strong></td>
          <td>有効にすると、ドメインオリジンは特定のリストに制限されません。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Origin</strong></td>
          <td>許可するドメインオリジンのカンマ区切りのリスト。HTTP レスポンスヘッダーとして含まれます。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Credentials</strong></td>
          <td>Cookie などのユーザー認証情報をクロスオリジンリクエストで許可するかどうか。HTTP レスポンスヘッダーとして含まれます。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Methods</strong></td>
          <td>許可するメソッドのカンマ区切りのリスト。HTTP レスポンスヘッダーとして含まれます。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Allow-Headers</strong></td>
          <td>許可するヘッダーのカンマ区切りのリスト。HTTP レスポンスヘッダーとして含まれます。</td>
        </tr>
        <tr>
          <td><strong>Access-Control-Max-Age</strong></td>
          <td>Access-Control レスポンスヘッダーの値をキャッシュできる最大時間（秒単位）。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

フローAPI を使用すると、モジュール式のシングルパスの{siteNameShort} フローを作成し、クエリ可能なエンドポイントとして公開できます。{siteNameShort} は、フローAPI エンドポイントに渡したデータを処理し、結果をクエリサービスに返します。

フローAPI を使用して、外部アプリケーションやサービスから{siteNameShort} ワークフローを実行できます。この柔軟性により、お好みのツールを使用してワークフローと自動化を管理できます。

## ビデオリソース（英語）

フローAPI の設定方法と使い方は、こちらの動画をご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/Ed25uck0mwo" frameborder="0" allowfullscreen />

## フローAPI の作成

フローAPI を作成するには、次の手順を実行してください：

1. フローキャンバスで、コネクタを右クリックして**API 設定を作成**を選択します。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_create.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=521c7ca54f06098f5fede525affd18c8" alt="コネクタのコンテキストメニューのAPI 設定を作成オプション" width="350" data-path="public/images/flow_api_create.png" />

   <Note>フローAPI は現在、特定のコネクタをサポートしていません。コネクタがサポートされていない場合、そのコネクタをフローAPI に追加しようとすると{siteNameShort} はエラーメッセージを表示します。フローAPI で使用できないコネクタのリストについては、[サポートされていないコネクタ](#サポートされていないコネクタ)を参照してください。</Note>

2. **API 設定を作成**ページが開きます。**メソッド**フィールドで、フローAPI がリクエストを受け付けるHTTP メソッドを選択します。オプションは、**GET**、**POST**、**PUT**、**PATCH**、および**DELETE** です。これは、フローAPI 作成後に必要に応じて変更できます。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_createsettings.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=c12dbee734b8b5db6f78430726fa87db" alt="API 設定を作成ページ" width="500" data-path="public/images/flow_api_createsettings.png" />

3. **パス**フィールドで、フローAPI の名前を入力します。この名前は、API にクエリを発行するときに使用します。

   <Note>異なる機能を実行する場合に限り、API 名を再利用できます。例えば、POST 機能を実行するAPI\_X12 というフローAPI とPATCH 機能を実行するAPI\_X12 というフローAPI を持つことはできますが、POST 機能を実行するAPI\_x12 というフローAPI を2つ持つことはできません。</Note>

4. **API を作成**をクリックします。フローAPI がワークスペースに表示されます。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_workspace.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=8b71cb92ca4ac8b8e326d2304e48cff8" alt="ワークスペース内のフローAPI" width="500" data-path="public/images/flow_api_workspace.png" />

5. 追加のコネクタをフローAPI ボックスにドラッグし、それらを接続します。フローAPI ボックスにメモを追加することもできます。

<Note>フローAPI の最初のコネクタは、クエリを発行するエンティティからインプットデータを受信し、最後のコネクタは、クエリを発行するエンティティにアウトプットデータを送り返します。</Note>

コネクタの追加と接続が完了したら、[フローAPI の設定およびテスト](#フローapi-の設定およびテスト)ができます。

### サポートされていないコネクタ

フローAPI のコネクタは、インプットメッセージごとに1つのアウトプットメッセージが生成されるように接続する必要があります。スケジュールまたは外部プロセスに基づいてファイルを処理するコネクタはサポートされていません。そのため、次のコネクタはフローAPI では使用できません：

* [API](../connectors/api/api)
* [Copy](../connectors/copy)
* [Email Receive](../connectors/email-receive)
* [Form](../connectors/form)
* [FTP Server](../connectors/ftp-server)
* [RSS](../connectors/rss)
* [Schedule](../connectors/schedule)
* [SFTP Server](../connectors/sftp-server)
* [Webhook](../connectors/webhook)
* [Workspace Receive](../connectors/workspace-receive)

### フローAPI の例

以下の例は、POST で構成されたフローAPI の実際の使用例を示しています：

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_example.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=0eb28ba46621ba56cbae92cd801b0999" alt="ワークスペース内のフローAPI の例" width="600" data-path="public/images/flow_api_example.png" />

このフローAPI は、以下のワークフローを実行します：

1. データは、開始ノードで、暗号化されたX12 ファイルの形式で受信されます。

2. OpenPGP\_Decrypt コネクタは、X12 ファイルを復号化してX12 コネクタに渡します。

3. X12 コネクタは、X12 ファイルをXML に変換し、変換したXML ファイルをJSON コネクタに渡します。

4. JSON コネクタは、XML ファイルをJSON 形式に変換し、変換したファイルをOpenPGP\_Encrypt コネクタに渡します。OpenPGP\_Encrypt コネクタは、JSON ファイルを暗号化します。

5. 暗号化されたJSON ファイルは、終了ノードを通じて返されます。

この例では、各コネクタは前後2つの別のコネクタにリンクされています。開始ノードと終了ノードは、フローのエンドポイントに自動的に追加されます。

## フローAPI の設定およびテスト

フローAPI を作成したら、設定を構成し、サンプルリクエストを実行して構成をテストできます。

### 設定の構成

フローAPI のヘッダーにある歯車形の設定アイコンをクリックし、**設定**ペインを開きます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_opensettings.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=5482c0acc385976bf8430847a213bc41" alt="フローAPI の設定ペインを開く" width="400" data-path="public/images/flow_api_opensettings.png" />

このペインでは、フローAPI の動作を設定できます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_settings.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=bfe68c50f274da258829518021656b23" alt="フローAPI の設定ペイン" width="600" data-path="public/images/flow_api_settings.png" />

これらの設定については、以下のセクションで概要を説明します。

#### リクエスト

**パス**フィールドでは、フローAPI のリクエストの種類を選択します。リクエストの種類を変更する場合は、コネクタの構造と構成が新しいリクエストの種類に適していることを必ず確認してください。

フローAPI の任意の説明を入力するには、**説明**フィールドを使用します。これは、複数のフローAPI があり、それぞれの目的を追跡したい場合に便利です。

#### メタデータヘッダー

リクエストに含めたすべてのヘッダーは、メッセージがフローを通過する際に保持されます。これらのヘッダーには`API-Header-` プレフィックスが付くため、`MyHeader` というヘッダーは`API-Header-MyHeader` として表示されます。これらのヘッダーは、[アクティビティページ](../getting-started/administration/activity)でメッセージやトランザクションを展開したとき、またはメッセージの詳細を表示したときに表示されます。コネクタの**トランザクション**タブでトランザクションを展開した場合も、ヘッダー情報を確認できます。

#### クエリパラメータ

このセクションでは、フローのクエリ文字列パラメータを指定できます。ここでパラメータを追加すると、メッセージがフローを通過するときにメタデータヘッダーとして保持されます。これらのヘッダーには`API-QueryParameter-` プレフィックスが付くため、`test` のクエリ文字列は`API-QueryParameter-test` になります。これらのヘッダーは、[メタデータヘッダー](#メタデータヘッダー)と同じ場所に表示されます。

この機能は、リクエストの一部として渡したい情報があるが、その情報がボディの一部ではない場合に便利です。例えば、データベース内の特定の会社の最新の注文Id が必要な場合は、CompanyName クエリパラメータをAPI に追加して、フロー内で`API-QueryParameter-CompanyName` ヘッダーを使用して参照することができます。

#### ボディとレスポンス

**ボディ**セクションでは、クエリを実行するクライアントがフローAPI と通信する方法に対応する**種類**を選択します：

* **None**—リクエストにボディを含まない
* **Raw**—任意の形式の自由形式データ
* **Form data**—name-value ペア
* **x-www-form-urlencoded**

**ボディ**および**レスポンス**のテキストフィールドでは、ドロップダウンメニューを使用して、ボディとレスポンスに期待するデータ形式（**XML**、**JSON**、または**Custom**）を選択します。

#### バイナリファイルの操作

フローAPI は、リクエストボディまたはレスポンスボディとして、バイナリファイル（PDF、JPEG、またはその他のバイナリファイル形式）のアップロードとダウンロードをサポートしています。テストペインを開くと（[フローAPI のテスト](#フローapi-のテスト)を参照）、フローAPI には次が含まれます：

* リクエストボディのコンテンツタイプがバイナリファイルの場合、次の画像に示すようにファイルアップロードボタンが表示されます

  <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_upload_file.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=1b3b2ff31bc8d5388ea5dea86311c5b4" alt="テストペインのファイルアップロードボタン" width="500" data-path="public/images/flow_api_upload_file.png" />

* レスポンスのコンテンツタイプがバイナリファイルの場合、ファイルダウンロードボタンが表示されます

<Note>API がバイナリファイルの代わりにBase64 エンコードされたテキストを返す必要がある場合は、[Script](../connectors/script) コネクタを使用して出力をBase64 としてエンコードし、レスポンスのコンテンツタイプを`text/plain` などに設定する必要があります。</Note>

### フローAPI のテスト

フローAPI のテストペインを開くには、フローAPI のヘッダーにある三角形のアイコンをクリックします。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_opentest.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=ad382afdd574840c9a36ed13b3c04fc2" alt="フローAPI のテストペインを開く" width="400" data-path="public/images/flow_api_opentest.png" />

テストペインでは、左側のボックスがリクエストとして機能し、右側のボックスにレスポンスが表示されます。各ボックスには、設定ペインで選択された期待するデータ形式が表示されます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/flow_api_test.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=a29ae041059ce1bde171680625690539" alt="フローAPI のテストペイン" width="800" data-path="public/images/flow_api_test.png" />

フローAPI をテストするには、左側のボックスにテストクエリを入力して**実行**をクリックします。レスポンスが期待する結果と一致したら、フローAPI は使用できる状態になります。レスポンスが正しくない場合は、フローAPI の構成とフローAPI 内の各コネクタの設定を確認してください。

## 外部アプリケーションでのフローAPI の使用

以下の手順は、外部クライアントからフローAPI を呼び出す方法について説明します。この例では、Postman からフローAPI を実行する方法を示していますが、REST リクエストを送信できる任意のクライアントであれば使用できます。

1. フローデザイナーの右下にある**複数コネクタを選択**オプションを使用して、API として公開するフローを選択します。次に**API 設定を作成**をクリックします。このアクションにより、**API 設定を作成**ダイアログが開きます。

2. 以下のように、メソッド（例えば、**POST**）を選択してAPI に意味のある名前を付けます。

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/arc_flow_method.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=3ad1754dc8894c5d1f7825345b8d43c7" alt="API 設定を作成でメソッドを選択する" width="500" data-path="public/images/arc_flow_method.png" />

3. **API を作成**をクリックし、フローAPI を作成します。

4. **設定**ペインで、フローAPI を構成して、**ボディ**セクションの期待する<var>Content-Type</var> 値と**レスポンス**セクションのレスポンスに必要な<var>Content-Type</var> 値を定義します。オプションとして、リクエストとレスポンスのサンプルデータを提供できます。

5. 以下に示すように、**リクエスト**ペインに表示されるパスをコピーします。

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/arc_copy_path_from_request_pane.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=95bf96367f5484790ec1b106ec663ce0" alt="リクエストペインのパス" width="500" data-path="public/images/arc_copy_path_from_request_pane.png" />

6. Postman アプリケーションを開きます。<var>Content-Type</var> ドロップダウンリストに同じコンテンツタイプ（この場合は**POST**）が表示されていることを確認します。{siteNameShort} (手順5) でコピーしたパスを、リクエストURL フィールドにペーストします。リクエストのボディをフローを開始するコンテンツとして指定します。

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/arc_body_content.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=8f2ab3766076a10b883419790553ff08" alt="Postman でContent-Type パスをコピー＆ペーストする" width="800" data-path="public/images/arc_body_content.png" />

7. フローAPI を認証します。フローAPI は、管理API と同じ認証ルールを使用します。この例では、認証方式として認証トークンヘッダー（**x-cdata-authtoken**）を使用します。

   この方式を使用するには：

   1. ナビゲーションバーの**設定**歯車アイコンをクリックします。次に、**追加**をクリックして**ユーザーを追加**ダイアログを開くか、既存のユーザーを編集します。

   2. ダイアログが表示されたら、**API 接続**チェックボックスを選択して認証トークンを表示します。（ダイアログは再度表示されないので、このトークンを安全な場所に控えておいてください。認証トークンを紛失または削除した場合は、新しい認証トークンを作成する必要があります。）次に、**変更を保存**をクリックします。

   3. Postman アプリケーションに戻り、フローAPI の認証情報を以下のように追加します：

      1. **Headers** タブをクリックします。

      2. **Key** フィールドに、**x-cdata-authtoken** をペーストします。

      3. **Value** フィールドに、{siteNameShort} でコピーした認証トークンをペーストします。

8. リクエストの準備が整ったら**Send** ボタンをクリックします。以下の例に示すように、送信したリクエストに対するレスポンスが表示されます：

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/arc_response_to_request.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=76b9562ad3368e3a6adf4b4a2cfca3fe" alt="Postman でのリクエストに対するレスポンス" width="800" data-path="public/images/arc_response_to_request.png" />

### クロスオリジンリソース共有（CORS）

[セキュリティタブ](../getting-started/administration/settings/security)の[管理API](../admin-api) セクションに移動すると、フローAPI のクロスオリジンリソース共有（CORS）を設定できます。CORS によって、ブラウザベースのクライアントから{siteNameShort} に接続することができます。CORS ができない場合、ブラウザにより同一オリジンポリシーが強制されるため、ブラウザベースのスクリプトは{siteNameShort} に接続できません。このポリシーは、クライアントサイドスクリプトおよびドキュメントが、自身のオリジン以外のリソースをロードすることを制限します。スクリプトのオリジンは、プロトコル、ホスト、およびポートから成ります。

<CommonCors />
