

AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization Service (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、[AWS 「 Mainframe Modernization の可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS メインフレームランタイム APIs変換
<a name="ba-runtime-endpoints"></a>

 AWS Transform for mainframe Runtime は、複数のウェブアプリケーションを使用して REST エンドポイントを公開し、REST クライアントを使用してモダナイズされたアプリケーションを操作する方法を提供します (スケジューラを使用してジョブを呼び出すなど）。

このドキュメントの目的は、利用可能な REST エンドポイントを一覧表示し、以下の詳細を記載することです。
+ その役割
+ 正しく使う方法 

エンドポイントのリストは、提供されるサービスの性質とエンドポイントを公開するウェブアプリケーションに応じて、カテゴリ別に整理されています。

[POSTMAN](https://www.postman.com/)、[Thunder Client](https://www.thunderclient.com/)、[CURL](https://curl.se/)、ウェブブラウザなどの専用ツールを使用した REST エンドポイントの使用に関する基本的な知識は既にあることを前提としています。または、API コールを行うための独自のコードを書いてください。

**Topics**
+ [URL の構築時にユーザーが使用できるエンドポイント](ba-endpoints-build-urls.md)
+ [AWS Transform for Mainframe での Gapwalk アプリケーションのエンドポイント](ba-endpoints-gapwalk.md)
+ [Blusam アプリケーションコンソールの REST エンドポイント](ba-endpoints-bac.md)
+ [メインフレームの AWS 変換で JICS アプリケーションコンソールを管理する](ba-endpoints-jac.md)
+ [メインフレームユーザーの AWS 変換のデータ構造](ba-endpoints-apx.md)

# URL の構築時にユーザーが使用できるエンドポイント
<a name="ba-endpoints-build-urls"></a>

このトピックでは、エンドポイントのルートパスを持つ URL を一覧表示します。以下の各ウェブアプリケーションは、すべてのエンドポイントで共有される**ルートパス**を定義しています。**各エンドポイントは、独自の専用パスを追加します**。パスを連結したものが、使用する URL になります。例えば、Gapwalk-Application の最初のエンドポイントを考えた場合、次のようになります。
+ `/gapwalk-application` は、ウェブアプリケーションのルートパス用です。
+ `/scripts` は、専用エンドポイントパス用です。

その結果、使用する URL は `http://server:port/gapwalk-application/scripts` になります。

**server**  
サーバー名 (特定のウェブアプリケーションをホストしているサーバー) を指します。

**port**  
サーバーが公開するポートです。

# AWS Transform for Mainframe での Gapwalk アプリケーションのエンドポイント
<a name="ba-endpoints-gapwalk"></a>

このトピックでは、Gapwalk ウェブアプリケーションのエンドポイントについて説明します。これらはルートパス `/gapwalk-application` を使用します。

**Topics**
+ [バッチジョブ (モダナイズされた JCL など) に関連付けられたエンドポイント](#ba-endpoints-gapwalk-batch)
+ [エンドポイントのメトリクス](#ba-endpoints-gapwalk-metrics)
+ [その他のエンドポイント](#ba-endpoints-gapwalk-other)
+ [ジョブキューに関連付けられたエンドポイント](#ba-endpoints-gapwalk-jobq)

## バッチジョブ (モダナイズされた JCL など) に関連付けられたエンドポイント
<a name="ba-endpoints-gapwalk-batch"></a>

バッチジョブは、同期または非同期で実行できます (詳細は以下を参照)。バッチジョブは、レガシースクリプト (JCL) のモダナイゼーションの成果である groovy スクリプトを使用して実行されています。

**Topics**
+ [デプロイされたスクリプトの一覧表示](#ba-list-deployed-scripts)
+ [スクリプトを同期で起動する](#ba-launch-script-synchronously)
+ [スクリプトを非同期で起動する](#ba-launch-script-asynchronously)
+ [トリガーされたスクリプトの一覧表示](#ba-launch-script-triggered)
+ [ジョブ実行の詳細を取得する](#ba-retrieve-job-execution-details)
+ [非同期で起動されたスクリプトのうち、強制終了できるスクリプトの一覧表示](#ba-list-async-scripts)
+ [同期で起動されたスクリプトのうち、強制終了できるスクリプトの一覧表示](#ba-list-sync-scripts)
+ [指定したジョブ実行を強制終了する](#ba-kill-job-execution)
+ [再開可能な既存のチェックポイントを一覧表示する](#ba-list-existing-checkpoints)
+ [ジョブの再開 (同期)](#ba-restart-job-sync)
+ [ジョブの再開 (非同期)](#ba-restart-job-async)
+ [非同期ジョブ実行のスレッド制限の設定](#ba-set-thread-limit)

### デプロイされたスクリプトの一覧表示
<a name="ba-list-deployed-scripts"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/scripts`
+ 引数: なし
+ このエンドポイントは、サーバーにデプロイされている groovy スクリプトのリストを String として返します。このエンドポイントは、結果の String はアクティブリンク (起動可能なスクリプトごとのリンクで、以下の例を参照) 付きの HTML であるため、主にウェブブラウザから使用することを想定しています。

レスポンス例:

```
<p><a href=./script/COMBTRAN>COMBTRAN</a></p><p><a href=./script/CREASTMT>CREASTMT</a></p><p><a href=./script/INTCALC>INTCALC</a></p><p><a href=./script/POSTTRAN>POSTTRAN</a></p><p><a href=./script/REPROC>REPROC</a></p><p><a href=./script/TRANBKP>TRANBKP</a></p><p><a href=./script/TRANREPT>TRANREPT</a></p><p><a href=./script/functions>functions</a></p>
```

**注記**  
このリンクは、リストされている各スクリプトを**同期的**に起動するために使用する URL を表します。
+ サポートされているメソッド: GET / POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/triggerscripts`
+ 引数: なし
+ このエンドポイントは、サーバーにデプロイされている groovy スクリプトのリストを String として返します。このエンドポイントは、結果の String はアクティブリンク (起動可能なスクリプトごとのリンクで、以下の例を参照) 付きの HTML であるため、主にウェブブラウザから使用することを想定しています。

  前のエンドポイントレスポンスとは対照的に、リンクは、リストされた各スクリプトを**非同期的**に起動するために使用する URL を表します。  
![\[リストスクリプトのサンプル (ブラウザビュー)\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/trigger_scripts.png)

### スクリプトを同期で起動する
<a name="ba-launch-script-synchronously"></a>

このエンドポイントには GET と POST 用の専用パスを持つ 2 つのバリアントがあります (以下を参照)。
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/script/{scriptId:.+}`
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/post/script/{scriptId:.+}`
+ 引数:
  + **入力検証**を起動するスクリプトの識別子: スクリプト ID は空白にできず、255 文字を超えることはできません。パターンと一致する必要があります。 `^[a-zA-Z0-9._-]+$`
  + オプション: リクエストパラメータ (「`Map<String,String>`」を参照) を使用してスクリプトに渡すパラメータ。指定したパラメータは、呼び出された groovy スクリプトの[バインディング](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html)に自動的に追加されます。**入力検証**: パラメータマップは 50 エントリを超えることはできません。
+ 呼び出しは、オプションのパラメータを使用してスクリプト (scriptId で識別) を実行し、完了を待ってから、次のいずれかの *ResponseEntityString* を返します。
  + HTTP 200: 「完了」 実行成功時の または JSON 成功メッセージ
  + HTTP 200: 実行失敗の詳細を含む JSON エラーメッセージ。サーバーログで利用可能な追加情報。
**注記**  
ランタイムは、失敗したジョブ実行の HTTP 500 ステータスコードを返すことをサポートするようになりました。[「メインアプリケーションの使用可能なプロパティ](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-key-value.html#ba-runtime-key-value-main)」を参照して、このレスポンスコードを設定します。
  + **入力検証**: 無効なスクリプト ID またはパラメータは、検証エラーの詳細を含む HTTP 400 Bad Request を返します。

    ```
    {
        "exitCode": -1,
        "stepName": "STEP15",
        "program": "CBACT04C",
        "status": "Error"
    }
    ```

    サーバーログを見ると、これがデプロイメントの問題であることがわかります (想定していたプログラムが正しくデプロイされていないため、それが見つからず、ジョブの実行が失敗しています)。  
![\[スクリプト実行エラーの例\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/script_exec_error_logs.png)

**注記**  
同期呼び出しは、実行時間が短いジョブ専用にしてください。長時間実行されるジョブは、非同期で起動する必要があります (以下の専用エンドポイントを参照)。

### スクリプトを非同期で起動する
<a name="ba-launch-script-asynchronously"></a>
+ サポートされているメソッド: GET / POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/triggerscript/{scriptId:.+}`
+ 引数:
  + **入力検証**を起動するスクリプトの識別子: スクリプト ID は空白にできず、255 文字を超えることはできません。パターンと一致する必要があります。 `^[a-zA-Z0-9._-]+$`
  + オプション: リクエストパラメータ (「`Map<String,String>`」を参照) を使用してスクリプトに渡すパラメータ。指定したパラメータは、呼び出された groovy スクリプトの[バインディング](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html)に自動的に追加されます。**入力検証**: パラメータマップは 50 エントリを超えることはできません。
+ 上記の同期モードとは対照的に、エンドポイントはジョブの実行が終了するのを待たずにレスポンスを送信します。使用可能なスレッドが見つかると、直ちにジョブの実行を開始し、ジョブの実行を表す一意の識別子であるジョブ実行 ID を含むレスポンスが呼び出し元に送信されます。これを使用して、ジョブの実行状況を問い合わせたり、誤動作していると思われるジョブの実行を強制終了したりすることができます。レスポンスの形式は次のとおりです。

  ```
  Triggered script <script identifier> [unique job execution id] @ <date and time>
  ```
+ ジョブの非同期実行は、固定の限られた数のスレッドに依存しているため、使用可能なスレッドが見つからない場合、ジョブの実行が開始されない場合があります。この場合、返されるメッセージは次のようになります。

  ```
  Script [<script identifier>] NOT triggered - Thread limit reached (<actual thread limit>) - Please retry later or increase thread limit.
  ```

  スレッド上限を引き上げる方法については、次の `settriggerthreadlimit` エンドポイントを参照してください。

レスポンス例:

```
Triggered script INTCALC [d43cbf46-4255-4ce2-aac2-79137573a8b4] @ 06-12-2023 16:26:15
```

一意のジョブ実行識別子により、必要に応じてサーバーログ内の関連するログエントリを迅速に取得できます。また、以下に詳述する、他のいくつかのエンドポイントで使用されています。

### トリガーされたスクリプトの一覧表示
<a name="ba-launch-script-triggered"></a>
+ サポートされているメソッド: GET / POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/triggeredscripts/{status:.+}`、`/triggeredscripts/{status:.+}/{namefilter}`
+ 引数:
  + ステータス (必須): 取得するトリガースクリプトのステータス。**入力検証**: ステータスは空白にできず、50 文字を超えることはできません。可能な値は以下のとおりです。
    + `all`: ジョブが実行中かどうかにかかわらず、ジョブ実行の詳細をすべて表示します。
    + `running`: 現在実行中のジョブの詳細のみを表示します。
    + `done`: 実行が終了したジョブの詳細のみを表示します。
    + `killed`: 専用エンドポイント (以下を参照) を使用して、実行が強制終了されたジョブの詳細のみを表示します。
    + `triggered`: トリガーされたがまだ起動していないジョブの詳細のみを表示します。
    + `failed`: 実行が失敗とマークされたジョブの詳細のみを表示します。
    + \$1namefilter (オプション): 指定したスクリプト識別子の実行のみを取得します。**入力検証**: 255 文字を超えることはできません
+ ジョブ実行の詳細のコレクションを JSON として返します。詳細については、「[ジョブ実行の詳細メッセージの構造](ba-endpoints-apx.md#job-execution-details)」を参照してください。

レスポンス例:

```
[
    {
      "scriptId": "INTCALC",
      "caller": "127.0.0.1",
      "identifier": "d43cbf46-4255-4ce2-aac2-79137573a8b4",
      "startTime": "06-12-2023 16:26:15",
      "endTime": "06-12-2023 16:26:15",
      "status": "DONE",
      "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
      "executionMode": "ASYNCHRONOUS"
    }
  ]
```

### ジョブ実行の詳細を取得する
<a name="ba-retrieve-job-execution-details"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/getjobexecutioninfo/{jobexecutionid:.+}`
+ 引数:
  + jobexecutionid (必須): 対応するジョブ実行の詳細を取得するために使用する一意のジョブ実行識別子。**入力検証**: ジョブ実行 ID は空白にできず、255 文字を超えることはできません
+ 1 つのジョブ実行の詳細を表す JSON 文字列 (「[ジョブ実行の詳細メッセージの構造](ba-endpoints-apx.md#job-execution-details)」を参照)、または指定した ID のジョブ実行の詳細が見つからない場合は空のレスポンスを返します。

### 非同期で起動されたスクリプトのうち、強制終了できるスクリプトの一覧表示
<a name="ba-list-async-scripts"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/killablescripts`
+ 非同期で起動され、現在も実行中で強制終了できるジョブのジョブ実行識別子のコレクションを返します (以下の `/kill` エンドポイントを参照)。

### 同期で起動されたスクリプトのうち、強制終了できるスクリプトの一覧表示
<a name="ba-list-sync-scripts"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/killablesyncscripts`
+ 同期で起動され、現在も実行中で強制終了できるジョブのジョブ実行識別子のコレクションを返します (以下の `/kill` エンドポイントを参照)。

### 指定したジョブ実行を強制終了する
<a name="ba-kill-job-execution"></a>
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/kill/{identifier:.+}`
+ 引数: ジョブ実行識別子 (必須): 強制終了されるジョブ実行を示す、一意のジョブ実行識別子。**入力検証**: 識別子は空白にできず、255 文字を超えることはできません
+ ジョブ実行の強制終了試行の結果の詳細を記述したテキストメッセージを返します。メッセージには、スクリプト識別子、一意のジョブ実行識別子、実行強制終了が発生した日時が含められます。指定した識別子に対して実行中のジョブが見つからなかった場合は、代わりにエラーメッセージが返されます。

**警告**  
 ランタイムでは、対象のジョブ実行が確実に強制終了するように最善を尽くします。したがって、メインフレームランタイムの AWS 変換はジョブを強制終了することによるビジネスへの影響を最小限に抑えようとするため、/kill エンドポイントからの応答が発信者に到達するまでに少し時間がかかる場合があります。
ジョブの実行を強制終了することは、データの損失や破損の可能性など、ビジネスに直接的な影響をもたらす可能性があるため、安易に実行するものではありません。特定のジョブの実行に不具合があり、データ修復手段が明確に特定されている場合に限って使用する必要があります。
ジョブを強制終了させた場合、詳細な調査 (事後分析) を行って何が問題であったかを特定し、適切な是正措置を講じる必要があります。
どのような場合でも、実行中のジョブを強制終了しようとすると、警告レベルのメッセージとともにサーバーログに記録されます。

### 再開可能な既存のチェックポイントを一覧表示する
<a name="ba-list-existing-checkpoints"></a>

ジョブを再開できるかどうかは、スクリプトが `CheckpointRegistry` にチェックポイントを登録して、ジョブ実行の進行状況を追跡できるかどうかで決まります。ジョブの実行が正しく終了しない場合、再開チェックポイントが登録されていれば、最後に登録されたことが判明しているチェックポイントからジョブ実行を再開できます (チェックポイントより上の先行ステップを実行する必要はありません)。
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/restarts/{scriptId}/{jobId}`
+ 引数:
  + scriptId (オプション - 文字列): 再開するスクリプト。
  + jobId (オプション - 文字列): ジョブ実行の一意識別子。
+ 既存の再開ポイントの JSON 形式のリストを返します。このリストは、実行が正常に終了しなかったジョブを再開したり、以前に実行されたステップをバイパスして遅延再開をトリガーしたりするために使用できます。どのスクリプトでもチェックポイントが登録されていない場合、ページの内容は「チェックポイントが登録されていません」になります。

### ジョブの再開 (同期)
<a name="ba-restart-job-sync"></a>
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/restart/{hashcode}/{scriptId}/{skipflag}`
+ 引数: 
  + hashcode (整数 - 必須): 指定されたハッシュコードをチェックポイント値として使用して、ジョブの最新の実行を再開します (有効なチェックポイント値を取得する方法については、上記の `/restarts` エンドポイントを参照してください)。
  + scriptId (オプション - 文字列): 再開するスクリプト。
  + skipflag (オプション - ブール値): 選択した (チェックポイント) ステップの実行をスキップし、直後の後続ステップ (存在する場合) から再開を発行します。
+ 戻り値: 上記の `/script` の戻り値の説明を参照してください。

### ジョブの再開 (非同期)
<a name="ba-restart-job-async"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/triggerrestart/{hashcode}/{scriptId}/{skipflag}`
+ 引数: 
  + hashcode (整数 - 必須): 指定されたハッシュコードをチェックポイント値として使用して、ジョブの最新の実行を再開します (有効なチェックポイント値を取得する方法については、上記の `/restarts` エンドポイントを参照してください)。
  + scriptId (オプション - 文字列): 再開するスクリプト。
  + skipflag (オプション - ブール値): 選択した (チェックポイント) ステップの実行をスキップし、直後の後続ステップ (存在する場合) から再開を発行します。
+ 戻り値: 上記の `/triggerscript` の戻り値の説明を参照してください。

### 非同期ジョブ実行のスレッド制限の設定
<a name="ba-set-thread-limit"></a>

ジョブの非同期実行は、JVM 内のスレッドの専用プールに依存します。そのプールには、使用可能なスレッド数に関する一定の制限があります。ユーザーは、ホストの機能 (CPU 数、使用可能なメモリなど) に応じて制限を調整できます。デフォルトでは、スレッド制限は 5 スレッドに設定されています。
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/settriggerthreadlimit/{threadlimit:.+}`
+ 引数 (整数): 適用する新しいスレッド制限。**入力検証**: 1～1000 の範囲で指定する必要があります。
+ 指定したスレッド制限値が有効でない (厳密な正の整数ではない) 場合は、新しいスレッド制限と直前のスレッド制限を示すメッセージ (`String`) を返すか、エラーメッセージを返します。

レスポンス例:

```
Set thread limit for Script Tower Control to 10 (previous value was 5)
```

#### 現在実行中のトリガーされたジョブの実行回数のカウント
<a name="ba-count-current-jobs"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/countrunningtriggeredscripts`
+ 非同期で起動された実行中のジョブの数とスレッドの上限 (同時に実行できるトリガーされたジョブの最大数) を示すメッセージを返します。

レスポンス例:

```
0 triggered script(s) running (limit =10)
```

**注記**  
これを使用して、ジョブを起動する前に、スレッドの上限に達していないかどうかを確認できます (ジョブが起動できなくなる)。

#### ジョブ実行情報を消去する
<a name="ba-purge-job-info"></a>

ジョブ実行情報は、サーバーが稼働している限り、サーバーのメモリに残ります。古くなった情報は関連性がないので、メモリから消去すると便利な場合があります。これが、このエンドポイントの目的です。
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/purgejobinformation/{age:.+}`
+ 引数: 消去する情報の経過時間 (時間単位) を表す、厳密な正の整数値。**入力検証**: 0～365 の範囲である必要があります。
+ 次の情報を含むメッセージを返します。
  + アーカイブ目的で消去されたジョブ実行情報が保存される消去ファイル名。
  + 消去されたジョブ実行情報の数。
  + メモに残っているジョブ実行情報の数

## エンドポイントのメトリクス
<a name="ba-endpoints-gapwalk-metrics"></a>

**入力検証**: すべてのメトリクスエンドポイントがリクエストパラメータを検証し、無効な値に対して HTTP 400 Bad Request を返します。

### JVM
<a name="ba-metrics-jvm"></a>

このエンドポイントは、JVM に関連する利用可能なメトリクスを返します。
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/metrics/jvm`
+ 引数: なし
+ 次の情報を含むメッセージを返します。
  + threadActiveCount: アクティブなスレッドの数。
  + JVMMemoryUsed: Java 仮想マシンがアクティブに使用しているメモリ。
  + JVMMemoryMax: Java 仮想マシンに許容される最大メモリ容量。
  + JVMMemoryFree: Java 仮想マシンが現在使用していない利用可能なメモリ。

### Session
<a name="ba-metrics-session"></a>

このエンドポイントは、現在開いている HTTP セッションに関連するメトリクスを返します。
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/metrics/session`
+ 引数: なし
+ 次の情報を含むメッセージを返します。
  + sessionCount: 現在サーバーが管理しているアクティブなユーザーセッションの数。

### バッチ
<a name="ba-metrics-batch"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/metrics/batch`
+ 引数:
  + startTimestamp (オプション、数値): データのフィルタリングの開始時のタイムスタンプ。**入力検証**: 有効な数値である必要があります。
  + endTimestamp (オプション、数値): データのフィルタリングの終了時のタイムスタンプ。**入力検証**: 有効な数値である必要があります。
  + page (オプション、番号): ページ分割用のページ番号。**入力検証**: 正の整数である必要があります。
  + pageSize (オプション、数値): ページ分割の 1 ページあたりの項目数。**入力検証**: 厳密に正の整数、最大 500 である必要があります。
  + **入力検証**: パラメータマップは 20 エントリを超えることはできません
+ 次の情報を含むメッセージを返します。
  + content: バッチ実行メトリクスのリスト。
  + pageNumber: ページ分割の現在のページ番号。
  + pageSize: 1 ページあたりに表示されるアイテムの数。
  + totalPages: 利用可能なページの合計。
  + numberOfElements: 現在のページにある項目数。
  + last: 最終ページのブール型フラグ。
  + first: 最初のページのブール値フラグ。

### トランザクション
<a name="ba-metrics-transaction"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/metrics/transaction`
+ 引数:
  + startTimestamp (オプション、数値): データのフィルタリングの開始時のタイムスタンプ。**入力検証**: 有効な数値である必要があります。
  + endTimestamp (オプション、数値): データのフィルタリングの終了時のタイムスタンプ。**入力検証**: 有効な数値である必要があります。
  + page (オプション、番号): ページ分割用のページ番号。**入力検証**: 正の整数である必要があります。
  + pageSize (オプション、数値): ページ分割の 1 ページあたりの項目数。**入力検証**: 厳密に正の整数、最大 500 である必要があります。
  + **入力検証**: パラメータマップは 20 エントリを超えることはできません
+ 次の情報を含むメッセージを返します。
  + content: 移行する実行メトリクスのリスト。
  + pageNumber: ページ分割の現在のページ番号。
  + pageSize: 1 ページあたりに表示されるアイテムの数。
  + totalPages: 利用可能なページの合計。
  + numberOfElements: 現在のページにある項目数。
  + last: 最終ページのブール型フラグ。
  + first: 最初のページのブール値フラグ。

## その他のエンドポイント
<a name="ba-endpoints-gapwalk-other"></a>

これらのエンドポイントを使用して、登録されているプログラムやサービスの一覧表示、ヘルスステータスの検出、JICS トランザクションの管理を行います。

**Topics**
+ [登録済みプログラムの一覧表示](#ba-list-registered-programs)
+ [登録済みサービスの一覧表示](#ba-list-registered-services)
+ [ヘルスステータス](#ba-health-status)
+ [使用可能な JICS トランザクションの一覧表示](#ba-list-jics-transactions)
+ [JICS トランザクションの起動](#ba-launch-jics-transaction)
+ [JICS トランザクションの起動 (代替)](#ba-launch-jics-transaction-alt)
+ [アクティブなセッションの一覧表示](#ba-active-session-list)

### 登録済みプログラムの一覧表示
<a name="ba-list-registered-programs"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/programs`
+ 登録されているプログラムのリストを HTML ページとして返します。各プログラムはメインプログラムの識別子によって指定されます。モダナイズされたレガシープログラムとユーティリティプログラム (IDCAMS、IEBGENER など) の両方がリストで返されます。利用可能なユーティリティプログラムは、tomcat サーバーにデプロイされているユーティリティウェブアプリケーションによって異なることに注意してください。例えば、モダナイズされた iSeries アセットには z/OS ユーティリティサポートプログラムは関連性がないため利用できない場合があります。

### 登録済みサービスの一覧表示
<a name="ba-list-registered-services"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/services`
+ 登録されているランタイムサービスのリストを HTML ページとして返します。指定されたサービスは、メインフレームランタイムの AWS 変換によってユーティリティとして提供され、groovy スクリプトのインスタンスに使用できます。Blusam ロードサービス (レガシーデータセットから Blusam データセットを作成する) は、そのカテゴリに分類されます。

レスポンス例:

```
<p>BluesamESDSFileLoader</p><p>BluesamKSDSFileLoader</p><p>BluesamRRDSFileLoader</p>
```

### ヘルスステータス
<a name="ba-health-status"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/`
+ gapwalk-application が起動して実行中であることを示す簡単なメッセージを返します (`Jics application is running.`)

### 使用可能な JICS トランザクションの一覧表示
<a name="ba-list-jics-transactions"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/transactions`
+ 使用可能なすべての JICS トランザクションを一覧表示する HTML ページを返します。これは、JICS 要素 (レガシー CICS 要素のモダナイゼーション) のある環境でのみ提供されます。

レスポンス例:

```
<p>INQ1</p><p>MENU</p><p>MNT2</p><p>ORD1</p><p>PRNT</p>
```

### JICS トランザクションの起動
<a name="ba-launch-jics-transaction"></a>
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/jicstransrunner/{jtrans:.+}`
+ 引数:
  + JICS トランザクション識別子 (文字列、必須): 起動する JICS トランザクションの識別子 (最大 8 文字)
  + 必須: トランザクションに Map<String,Object> として渡す追加の入力データ。このマップの内容は、JICS トランザクションによって消費される [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) をフィードするために使用されます。トランザクションの実行に必要なデータがない場合は、マップを空にしても構いません。
  + オプション: 特定のトランザクションの実行環境をカスタマイズする HTTP ヘッダーエントリ。次のヘッダーキーがサポートされています。
    + `jics-channel`: このトランザクションの起動によって起動されるプログラムが使用する JICS CHANNEL の名前。
    + `jics-container`: この JICS トランザクションの起動に使用される JICS コンテナの名前。
    + `jics-startcode`: JICS トランザクションの開始時に使用する STARTCODE (文字列、最大 2 文字)。指定できる値については、「[STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign)」を参照してください (ページの下を参照)。
    + `jicxa-xid`: 呼び出し元によって開始され、現在の JICS トランザクション起動が参加する「グローバルトランザクション」([XA](https://en.wikipedia.org/wiki/X/Open_XA)) の XID (X/Open トランザクション識別子 XID 構造)。**入力検証**: XID は空白にできず、255 文字を超えることはできません。
+ JICS トランザクション起動の結果を表す `com.netfective.bluage.gapwalk.rt.shared.web.TransactionResultBean` JSON のシリアル化を返します。
+ **入力検証**: 無効な XID 値 (空白または 255 文字を超える) は、検証エラーの詳細を含む HTTP 400 Bad Request を返します。

構造の詳細については、「[トランザクション起動結果の構造](ba-endpoints-apx.md#transaction-outcome)」を参照してください。

### JICS トランザクションの起動 (代替)
<a name="ba-launch-jics-transaction-alt"></a>
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/jicstransaction/{jtrans:.+}`
+ 引数:  
**JICS トランザクション ID (文字列、必須)**  
起動する JICS トランザクションの識別子 (最大 8 文字)  
**必須: トランザクションに Map<String,Object> として渡す追加の入力データ**  
このマップの内容は、JICS トランザクションによって消費される [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) をフィードするために使用されます。トランザクションの実行に必要なデータがない場合は、マップを空にしても構いません。  
**オプション: 特定のトランザクションの実行環境をカスタマイズする HTTP ヘッダーエントリ。**  
次のヘッダーキーがサポートされています。  
  + `jics-channel`: このトランザクションの起動によって起動されるプログラムが使用する JICS CHANNEL の名前。
  + `jics-container`: この JICS トランザクションの起動に使用される JICS コンテナの名前。
  + `jics-startcode`: JICS トランザクションの開始時に使用する STARTCODE (文字列、最大 2 文字)。指定できる値については、「[STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign)」を参照してください (ページの下を参照してください)。
  + `jicxa-xid`: 呼び出し元によって開始され、現在の JICS トランザクション起動が参加する「グローバルトランザクション」([XA](https://en.wikipedia.org/wiki/X/Open_XA)) の XID (X/Open トランザクション識別子 XID 構造)。**入力検証**: XID は空白にできず、255 文字を超えることはできません。
+ JICS トランザクション起動の結果を表す `com.netfective.bluage.gapwalk.rt.shared.web.RecordHolderBean` JSON のシリアル化を返します。構造の詳細は、「[トランザクション起動レコードの構造](ba-endpoints-apx.md#transaction-record-outcome)」を参照してください。
+ **入力検証**: 無効な XID 値 (空白または 255 文字を超える) は、検証エラーの詳細を含む HTTP 400 Bad Request を返します。

### アクティブなセッションの一覧表示
<a name="ba-active-session-list"></a>
+ サポートされているメソッド: GET

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/activesessionlist`
+ 引数: なし
+ **入力検証**: パラメータマップは 20 エントリを超えることはできません
+ アクティブなユーザーセッションのリストを表す JSON のシリアル化内の `com.netfective.bluage.gapwalk.application.web.sessiontracker.SessionTrackerObject` のリストを返します。セッション追跡を無効にすると、空のリストが返されます。

## ジョブキューに関連付けられたエンドポイント
<a name="ba-endpoints-gapwalk-jobq"></a>

 ジョブキューは、AS400 ジョブ送信メカニズムのメインフレームサポートの AWS 変換です。ジョブキューは、AS400 で特定のスレッドプールでジョブを実行するために使用されます。ジョブキューは、名前と、そのキューで同時に実行できるプログラムの最大数に対応する最大スレッド数によって定義されます。最大スレッド数よりも多くのジョブがキューに送信された場合、ジョブはスレッドが使用可能になるまで待機します。

キューのジョブのステータスを網羅したリストについては、「[キューでジョブの可能性のあるステータス](ba-endpoints-apx.md#jobs-status)」を参照してください。

ジョブキューのオペレーションは、次の専用エンドポイントによって処理されます。これらのオペレーションは、ルート URL `http://server:port/gapwalk-application/jobqueue` を使用して Gapwalk アプリケーション URL から呼び出すことができます。

**Topics**
+ [利用可能なキューを一覧表示する](#ba-list-available-queues)
+ [ジョブキューの開始または再開](#ba-start-restart-queue)
+ [送信してジョブを起動する](#ba-submit-job-launch)
+ [送信されたすべてのジョブを一覧表示する](#ba-list-scheduled-jobs)
+ [「保留中」になっているすべてのジョブをリリースする](#ba-release-held-jobs)
+ [特定のジョブ名で「保留中」になっているジョブをすべてリリースする](#ba-release-held-jobs-name)
+ [特定のジョブ番号のジョブをリリースする](#ba-release-job-number)
+ [繰り返しスケジュールでジョブを送信する](#ba-submit-job-on-repeating-schedule)
+ [送信された繰り返しジョブをすべて一覧表示する](#ba-list-all-submitted-repeating-jobs)
+ [繰り返しジョブのスケジュールをキャンセルする](#ba-cancel-scheduling-of-repeating-job)

### 利用可能なキューを一覧表示する
<a name="ba-list-available-queues"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `list-queues`
+ 利用可能なキューのリストを、そのステータスとともにキー値の JSON リストとして返します。

レスポンス例:

```
{"Default":"STAND_BY","queue1":"STARTED","queue2":"STARTED"}
```

可能性のあるジョブキューのステータスは次のとおりです。

**STAND\$1BY**  
ジョブキューは開始を待っています。

**開始**  
ジョブキューは実行中です。

**UNKNOWN**  
ジョブキューのステータスを判断できません。

### ジョブキューの開始または再開
<a name="ba-start-restart-queue"></a>
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/restart/{name}`
+ 引数: 開始/再開するキューの名前 (String) - 必須。**入力検証**: キュー名は空白にできず、255 文字を超えることはできません。
+ エンドポイントは何も返さず、開始/再開オペレーションの結果を表示するのに http ステータスに依存しています。  
**HTTP 200**  
開始/再起動オペレーションは正常に実行されました。指定したジョブキューが開始されました。  
**HTTP 404**  
ジョブキューが存在しません。  
**HTTP 503**  
起動/再起動の試行中に例外が発生しました (サーバーログを調査して原因を特定する必要があります)。

### 送信してジョブを起動する
<a name="ba-submit-job-launch"></a>
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/submit`
+ 引数: リクエスト本文に `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` オブジェクトの JSON のシリアル化が必須。詳細については、「[送信ジョブとスケジュールジョブの入力](ba-endpoints-apx.md#submit-job)」を参照してください。
+ オリジナルの `SubmitJobMessage` と、ジョブが送信されたかどうかを示すログを含む JSON を返します。

### 送信されたすべてのジョブを一覧表示する
<a name="ba-list-scheduled-jobs"></a>
+ サポートされているメソッド: GET

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/list-jobs?status={status}&size={size}&page={page}&sort={sort}`
+ 引数:
  + page: 取得するページ番号 (デフォルト = 1)
  + size: ページのサイズ (デフォルト = 50、最大 = 300)
  + sort: ジョブの順序 (デフォルト =「executionId」)。現在サポートされている値は「executionId」のみです。
  + status: (オプション) 存在する場合、ステータスでフィルタリングされます。
+ スケジュールされたすべてのジョブのリスト (JSON 文字列) を返します。レスポンス例については、「[スケジューリングされているジョブのレスポンス一覧](ba-endpoints-apx.md#list-scheduled-jobs)」を参照してください。

### 「保留中」になっているすべてのジョブをリリースする
<a name="ba-release-held-jobs"></a>
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/release-all`
+ リリース試行オペレーションの結果を示すメッセージを返します。次の 2 つのケースが考えられます。
  + HTTP 200 と「すべてのジョブが正常にリリースされました」というメッセージ すべてのジョブが正常にリリースされた場合。
  + HTTP 503 と「ジョブはリリースされていません」というメッセージ。不明なエラーが発生しました。リリース試行で問題が発生した場合、詳細についてはログを参照してください。

### 特定のジョブ名で「保留中」になっているジョブをすべてリリースする
<a name="ba-release-held-jobs-name"></a>

指定されたジョブ名に対して、異なるジョブ番号を持つ複数のジョブを送信できます (ジョブ実行の単一性は、<job name, job number> の組み合わせで付与されます)。エンドポイントは、「保留中」になっている、指定されたジョブ名を持つすべてのジョブ送信のリリースを試行します。
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/release/{name}`
+ 引数: 検索するジョブ名 (文字列)。必須。
+ リリース試行オペレーションの結果を示すメッセージを返します。次の 2 つのケースが考えられます。
  + HTTP 200 と「group <name> (<number of released jobs>) 内のジョブは正常にリリースされました」というメッセージ。ジョブは正常にリリースされました。
  + HTTP 503 と「group <name> のジョブはリリースされていません」というメッセージ。不明なエラーが発生しました。リリース試行で問題が発生した場合、詳細についてはログを参照してください。

### 特定のジョブ番号のジョブをリリースする
<a name="ba-release-job-number"></a>

エンドポイントは、指定された組み合わせ <job name, job number> に対し、一意のジョブ送信のリリースを試行します。
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/release/{name}/{number}`
+ 引数:  
**名前**  
検索するジョブ名 (文字列)。必須。  
**数値**  
検索するジョブ番号 (整数)。必須。  
** が返す**  
 リリース試行オペレーションの結果を示すメッセージ。次の 2 つのケースが考えられます。  
  + HTTP 200 と「Job <name/number> が正常にリリースされました」というメッセージ ジョブが正常にリリースされたかどうか。
  + HTTP 503 と「Job <name/number> はリリースされていません」というメッセージ 不明なエラーが発生しました。リリース試行で問題が発生した場合、詳細についてはログを参照してください。

### 繰り返しスケジュールでジョブを送信する
<a name="ba-submit-job-on-repeating-schedule"></a>

繰り返しスケジュールで実行されるジョブをスケジュールします。
+ サポートされているメソッド: POST

  認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/schedule`
+ 引数: リクエスト本文には、`com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` オブジェクトの JSON のシリアル化が含まれている必要があります。

### 送信された繰り返しジョブをすべて一覧表示する
<a name="ba-list-all-submitted-repeating-jobs"></a>
+ サポートされているメソッド: GET

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/schedule/list?status={status}&size={size}&page={page}&sort={sort}`
+ 引数:

  1. page: 取得するページ番号 (デフォルト = 1)

  1. size: ページのサイズ (デフォルト = 50、最大 = 300)

  1. sort: ジョブの順序 (デフォルト = 「id」)。現在サポートされている値は「id」のみです。

  1. status: (オプション) 存在する場合、ステータスでフィルタリングされます。指定できる値は、セクション 1 に記載されている値です。

  1. status: (オプション) 存在する場合、ステータスでフィルタリングされます。指定できる値は、セクション 1 に記載されている値です。

  1. スケジュールされたすべてのジョブのリスト (JSON 文字列) を返します。

### 繰り返しジョブのスケジュールをキャンセルする
<a name="ba-cancel-scheduling-of-repeating-job"></a>

繰り返しスケジュールで作成されたジョブを削除します。ジョブのスケジュールステータスは INACTIVE に設定されます。
+ サポートされているメソッド: POST

  認証と ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN のいずれかのロールが必要です
+ パス: `/schedule/remove/{schedule_id}`
+ 引数: `schedule_id`、削除するスケジュールされたジョブの識別子。

# Blusam アプリケーションコンソールの REST エンドポイント
<a name="ba-endpoints-bac"></a>

このセクションでは、モダナイズされた VSAM データセットの管理を簡素化するために設計された API であるBlusamアプリケーションコンソールについて説明します。Blusam ウェブアプリケーションのエンドポイントはルートパス を使用します`/bac`。

**Topics**
+ [エンドポイントに関連付けられたデータセット](#ba-endpoints-bac-datasets)
+ [エンドポイントに関連付けられたバルクデータセット](#ba-endpoints-bac-bulk)
+ [レコード](#ba-endpoints-bac-records)
+ [マスク](#ba-endpoints-bac-masks)
+ [その他](#ba-endpoints-bac-other)
+ [BAC ユーザー管理エンドポイント](#ba-endpoints-bac-users)

## エンドポイントに関連付けられたデータセット
<a name="ba-endpoints-bac-datasets"></a>

次のエンドポイントを使用して、特定のデータセットを作成または管理します。

**Topics**
+ [データセットの作成](#ba-create-data-set)
+ [ファイルのアップロード](#ba-upload-file)
+ [データセットのロード (POST)](#ba-load-data-set-post)
+ [データセットのロード (GET)](#ba-load-data-set-get)
+ [Amazon S3 バケットからデータをロードする](#ba-load-data-set-s3)
+ [データセットを Amazon S3 バケットにエクスポートする](#ba-export-data-set-s3)
+ [データセットの消去](#ba-clear-data-set)
+ [データセットの削除](#ba-delete-data-set)
+ [データセットのレコード数のカウント](#ba-count-data-set-records)

### データセットの作成
<a name="ba-create-data-set"></a>

このエンドポイントを使用すると、データセット定義を作成できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/createDataSet`
+ 引数:  
名前  
(必須、文字列): データセットの名前。  
型  
(必須、文字列): データセットタイプ。可能な値は、`ESDS`、`KSDS`、`RRDS` です。  
recordSize  
(オプション、文字列): データセットの各レコードの最大サイズ。  
fixedLength  
(オプション、ブール値): レコード長が固定かどうかを示します。  
compression  
(オプション、ブール値): データセットが圧縮されているかどうかを示します。  
cacheEnable  
(オプション、ブール値): データセットのキャッシュが有効になっているかどうかを示します。  
alternativeKeys  
(オプション、キーのリスト):  
  + offset (必須、数値)
  + length (必須、数値)
  + name (必須、数値)
+ 新規に作成されたデータセットを表す JSON ファイルを返します。

リクエスト例:

```
POST /api/services/rest/bluesamservice/createDataSet
{
  "name": "DATASET",
  "checked": false,
  "records": [],
  "primaryKey": {
    "name": "PK"
  },
  "alternativeKeys": [
    {
      "offset": 10,
      "length": 10,
      "name": "ALTK_0"
    }
  ],
  "type": "ESDS",
  "recordSize": 10,
  "compression": true,
  "cacheEnable": true
}
```

レスポンス例:

```
{
    "dataSet": {
      "name": "DATASET",
      "checked": false,
      "nbRecords": 0,
      "keyLength": -1,
      "recordSize": 10,
      "compression": false,
      "fixLength": true,
      "type": "ESDS",
      "cacheEnable": false,
      "cacheWarmup": false,
      "cacheEviction": "100ms",
      "creationDate": 1686744961234,
      "modificationDate": 1686744961234,
      "records": [],
      "primaryKey": {
        "name": "PK",
        "offset": null,
        "length": null,
        "columns": null,
        "unique": true
      },
      "alternativeKeys": [
        {
          "offset": 10,
          "length": 10,
          "name": "ALTK_0"
        }
      ],
      "readLimit": 0,
      "readEncoding": null,
      "initCharacter": null,
      "defaultCharacter": null,
      "blankCharacter": null,
      "strictZoned": null,
      "decimalSeparator": null,
      "currencySign": null,
      "pictureCurrencySign": null
    },
    "message": null,
    "result": true
  }
```

### ファイルのアップロード
<a name="ba-upload-file"></a>

このエンドポイントを使用すると、サーバーにファイルをアップロードできます。ファイルは、特定の各ユーザーに対応する一時フォルダに保存されます。このエンドポイントは、ファイルをアップロードする必要が生じるたびに使用します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/upload`
+ 引数:  
および  
(必須、multipart/form-data): アップロードするファイル。
+ アップロードのステータスを反映するプール値を返します。

### データセットのロード (POST)
<a name="ba-load-data-set-post"></a>

`createDataSet` を使用してデータセット定義を作成したら、アップロードされたファイルに関連付けられているレコードを特定のデータセットにロードできます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/loadDataSet`
+ 引数:  
名前  
(必須、文字列): データセットの名前。
+ 戻り値: リクエストのステータスと、ロードされたデータセット。

### データセットのロード (GET)
<a name="ba-load-data-set-get"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/loadDataSet`
+ 引数:  
listcatFileOrDatasetName  
(必須、文字列): データセットの名前。  
datasetFile  
(必須、文字列): データセットファイルの名前。
+ 戻り値: リクエストのステータスと、ロードされたデータセット。

### Amazon S3 バケットからデータをロードする
<a name="ba-load-data-set-s3"></a>

listcat ファイルを使用して、Amazon S3 バケットからデータセットをロードします。
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/loadDataSetFromS3`
+ 引数:  
listcatFileS3Location  
(必須、文字列): listcat ファイルの Amazon S3 の場所。  
datasetFileS3Location  
(必須、文字列): データセットファイルの Amazon S3 の場所。  
リージョン  
(必須、文字列): ファイルが保存されている Amazon S3 AWS リージョン 。
+ 新規に作成されたデータセットを返します

リクエスト例:

```
/BAC/api/services/rest/bluesamservice/loadDataSetFromS3?region=us-east-1&listcatFileS3Location=s3://bucket-name/listcat.json&datasetFileS3Location=s3://bucket-name/dataset.DAT
```

### データセットを Amazon S3 バケットにエクスポートする
<a name="ba-export-data-set-s3"></a>

データセットを指定した Amazon S3 バケットにエクスポートします。
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/exportDataSetToS3`
+ 引数:  
S3 の場所  
(必須、文字列): データセットをエクスポートする Amazon S3 の場所。  
datasetName   
(必須、文字列): エクスポートするデータセットの名前。  
リージョン  
(必須、文字列): Amazon S3 バケット AWS リージョン の 。  
kmsKeyId  
(オプション、文字列): Amazon S3 バケットにエクスポートされたデータセットの暗号化に使用される AWS KMS ID。
+ エクスポートされたデータセットを返します。

リクエスト例:

```
/BAC/api/services/rest/bluesamservice/exportDataSetToS3?region=eu-west-1&s3Location=s3://bucket-name/dump&datasetName=dataset
```

### データセットの消去
<a name="ba-clear-data-set"></a>

 データセットからすべてのレコードを消去します。
+ サポートされているメソッド: POST、GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/clearDataSet`
+ 引数:   
名前  
(必須、文字列): 消去するデータセットの名前。GET メソッドを使用する場合、パラメータ名は です`datasetName`。
+ リクエストのステータスを返します。

### データセットの削除
<a name="ba-delete-data-set"></a>

データセット定義とレコードを削除します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/deleteDataSet`
+ 引数:  
名前  
(必須、文字列): 削除するデータセットの名前。
+ 戻り値: リクエストのステータスと、削除されたデータセット。

### データセットのレコード数のカウント
<a name="ba-count-data-set-records"></a>

このエンドポイントは、データセットに関連付けられたレコード数を返します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/countRecords`
+ 引数:  
名前  
(必須、文字列): データセットの名前。
+ 戻り値: レコード数

## エンドポイントに関連付けられたバルクデータセット
<a name="ba-endpoints-bac-bulk"></a>

次のエンドポイントを使用して、一度に複数のデータセットを作成または管理します。

**Topics**
+ [データセットのエクスポート (GET)](#ba-export-data-sets-get)
+ [データセットのエクスポート (POST)](#ba-export-data-sets-post)
+ [複数のデータセットの作成](#ba-create-multiple-data-sets)
+ [すべてのデータセットのリスト](#ba-list-all-data-sets)
+ [すべてのデータセットの直接の一覧表示](#ba-direct-list-all-data-sets)
+ [すべてのデータセットの直接の一覧表示 (ページ単位)](#ba-direct-list-all-data-sets-by-page)
+ [データセットのストリーミング](#ba-stream-data-sets)
+ [すべてのデータセットの削除](#ba-delete-all-data-sets)
+ [listcat ファイルからデータセット定義を取得する](#ba-get-definitions-listcat)
+ [アップロードした listcat ファイルからデータセット定義を取得する](#ba-get-definitions-uploaded-listcat)
+ [データセットの取得](#ba-get-data-set)
+ [JSON ファイルから listcat をロードする](#ba-load-listcat)

### データセットのエクスポート (GET)
<a name="ba-export-data-sets-get"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/exportDataSet`
+ 引数:  
datasetName  
(必須、文字列): エクスポートするデータセットの名前。  
datasetOutputFile  
(必須、文字列): エクスポートされたデータセットを保存するサーバー上のフォルダのパス。  
rdw  
(必須、ブール値): レコード記述語 (RDW) をエクスポートされたレコードの一部にするかどうか。データセットに固定長レコードがある場合、このパラメータの値は無視されます。
+ リクエストのステータスと、エクスポートされたデータセット (ある場合) を含むファイルのパスを返します。レスポンスでデータセットが null の場合、指定された名前のデータセットをシステムが見つけることができなかったことを意味します。

### データセットのエクスポート (POST)
<a name="ba-export-data-sets-post"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/exportDataSet`
+ 引数:  
dumpParameters  
(必須、BACReadParameters): Bluesam 読み取りパラメータ。
+ エクスポートされたデータセットのステータスを返します。

### 複数のデータセットの作成
<a name="ba-create-multiple-data-sets"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/createAllDataSets`
+ 引数:
  + データセットのリスト  
名前  
(必須、文字列): データセットの名前。  
型  
(必須、文字列): データセットタイプ。可能な値は、`ESDS`、`KSDS`、`RRDS` です。  
recordSize  
(オプション、文字列): データセットの各レコードの最大サイズ。  
fixedLength  
(オプション、ブール値): レコード長が固定かどうかを示します。  
compression  
(オプション、ブール値): データセットが圧縮されているかどうかを示します。  
cacheEnable  
(オプション、ブール値): データセットのキャッシュが有効になっているかどうかを示します。
+ 戻り値: リクエストのステータスと、新規に作成されたデータセット。

### すべてのデータセットのリスト
<a name="ba-list-all-data-sets"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/listDataSet`
+ 引数: なし
+ 戻り値: リクエストのステータスと、データセットのリスト。

### すべてのデータセットの直接の一覧表示
<a name="ba-direct-list-all-data-sets"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/directListDataSet`
+ 引数: なし
+ 戻り値: リクエストのステータスと、データセットのリスト。

### すべてのデータセットの直接の一覧表示 (ページ単位)
<a name="ba-direct-list-all-data-sets-by-page"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/directListDataSetByPage`
+ 引数:  
名前  
(必須、文字列): データセットの名前。指定しない場合、デフォルトは `%` (すべてのデータセット) です。  
page  
(必須、int): ページ番号 (最小 0)。  
pageSize  
(必須、int): ページサイズ (最小 1、最大 500)。
+ 戻り値: リクエストのステータスと、データセットのリスト。

### データセットのストリーミング
<a name="ba-stream-data-sets"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/streamDataset`
+ 引数:  
datasetName  
(必須、文字列): データセットの名前。
+ 戻り値: リクエストされたデータセットのストリーム。

### すべてのデータセットの削除
<a name="ba-delete-all-data-sets"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/removeAll`
+ 引数: なし
+ 戻り値: リクエストのステータスを表すブール値。

### listcat ファイルからデータセット定義を取得する
<a name="ba-get-definitions-listcat"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromListcat`
+ 引数:   
paramFilePath  
(必須、文字列): listcat ファイルへのパス。
+ 戻り値: データセットのリスト

### アップロードした listcat ファイルからデータセット定義を取得する
<a name="ba-get-definitions-uploaded-listcat"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromUploadedListcat`
+ 引数: なし
+ 戻り値: データセットのリスト

### データセットの取得
<a name="ba-get-data-set"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/getDataSet`
+ 引数:  
名前  
(必須、文字列): データセットの名前。
+ リクエストされたデータセットを返します。

### JSON ファイルから listcat をロードする
<a name="ba-load-listcat"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/loadListcatFromJsonFile`
+ 引数:   
filePath  
(必須、文字列): listcat ファイルへのパス。
+ 戻り値: データセットのリスト

## レコード
<a name="ba-endpoints-bac-records"></a>

次のエンドポイントを使用して、データセット内のレコードを作成または管理します。

**Topics**
+ [レコードを作成する](#ba-create-record)
+ [データセットの読み込み](#ba-read-data-set)
+ [レコードを削除する](#ba-delete-record)
+ [レコードの更新](#ba-update-record)
+ [レコードの保存](#ba-save-record)
+ [レコードの検証](#ba-validate-record)
+ [レコードツリーの取得](#ba-get-record-tree)

### レコードを作成する
<a name="ba-create-record"></a>

このエンドポイントを使用すると、新しいレコードを作成できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/createRecord`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
マスク  
(必須、マスク): マスクオブジェクト。
+ 戻り値: リクエストのステータスと、作成されたレコード。

### データセットの読み込み
<a name="ba-read-data-set"></a>

このエンドポイントを使用すると、データセットを読み取ることができます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/readDataSet`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト
+ 戻り値: リクエストのステータスと、レコードを含むデータセット。

### レコードを削除する
<a name="ba-delete-record"></a>

このエンドポイントを使用すると、データセットからレコードを削除できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/deleteRecord`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
record  
(必須、レコード): 削除するレコード
+ 削除のステータスを返します。

### レコードの更新
<a name="ba-update-record"></a>

このエンドポイントを使用すると、データセットに関連付けられたレコードを更新できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/updateRecord`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
record  
(必須、レコード): 更新するレコード  
マスク  
(オプション、マスク): 更新中に適用するマスクオブジェクト。
+ 戻り値: リクエストのステータスと、レコードを含むデータセット。

### レコードの保存
<a name="ba-save-record"></a>

このエンドポイントを使用すると、マスクを使用してレコードをデータセットに保存できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/saveRecord`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
record  
(必須、レコード): 保存するレコード  
マスク  
(オプション、マスク): 保存中に適用するマスクオブジェクト。
+ 戻り値: リクエストのステータスと、レコードを含むデータセット。

### レコードの検証
<a name="ba-validate-record"></a>

このエンドポイントは、レコードを検証するために使用します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/validateRecord`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
record  
(オプション、レコード): 検証するレコード。  
マスク  
(オプション、マスク): 検証中に適用するマスクオブジェクト。
+ 戻り値: リクエストのステータスと、レコードを含むデータセット。

### レコードツリーの取得
<a name="ba-get-record-tree"></a>

このエンドポイントは、レコードの階層ツリーを取得するために使用します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/getRecordTree`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
record  
(必須、レコード): 取得するレコード  
マスク  
(オプション、マスク): マスクオブジェクト。
+ リクエストのステータスと、リクエストされたレコードの階層ツリーを返します。

## マスク
<a name="ba-endpoints-bac-masks"></a>

次の以下のエンドポイントを使用して、データセットにマスクをロードまたは適用します。

**Topics**
+ [マスクのロード](#ba-load-mask)
+ [マスクの適用](#ba-apply-mask)
+ [マスクフィルタの適用](#ba-apply-mask-filter)

### マスクのロード
<a name="ba-load-mask"></a>

このエンドポイントを使用すると、特定のデータセットに関連するすべてのマスクを取得できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/loadMasks`
+ パス変数:  
recordSize: .../loadMasks/\$1recordSize\$1  
(オプション、数値): レコードサイズ。このレコードサイズに一致する、ロードされたマスクをフィルタリングします。
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト
+ 戻り値: リクエストのステータスと、マスクのリスト。

### マスクの適用
<a name="ba-apply-mask"></a>

このエンドポイントを使用すると、特定のデータセットにマスクを適用できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/applyMask`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
マスク  
(必須、マスク): データセットオブジェクト
+ 戻り値: リクエストのステータスと、適用したマスクを含むデータセット。

### マスクフィルタの適用
<a name="ba-apply-mask-filter"></a>

このエンドポイントを使用すると、特定のデータセットにマスクとフィルタを適用できます。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/crud/applyMaskFilter`
+ 引数:  
データセット  
(必須、データセット): データセットオブジェクト  
マスク  
(必須、マスク): マスクオブジェクト  
フィルター  
(必須、フィルター): 適用するフィルターオブジェクト。
+ 戻り値: リクエストのステータスと、適用したマスクとフィルタを含むデータセット。

## その他
<a name="ba-endpoints-bac-other"></a>

次のエンドポイントを使用して、データセットのキャッシュの管理や、データセットの特性の確認を行います。

**Topics**
+ [ウォームアップキャッシュの確認](#ba-check-warm-up-cache)
+ [チェックキャッシュの有効化](#ba-check-cache-enabled)
+ [キャッシュの有効化](#ba-enable-cache)
+ [割り当てられた RAM キャッシュの確認](#ba-check-allocated-ram-cache)
+ [永続性の確認](#ba-check-persistence)
+ [サポートされているデータセットタイプの確認](#ba-check-supported-data-set-types)
+ [サーバーヘルスの確認](#ba-check-server-health)
+ [PostgreSQL マルチスキーマ設定を確認する](#ba-check-postgres-multi-schema)

### ウォームアップキャッシュの確認
<a name="ba-check-warm-up-cache"></a>

特定のデータセットに対して、ウォームアップキャッシュが有効になっているかどうかを確認します。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/warmupCache`
+ 引数:  
名前  
(必須、文字列): データセットの名前。
+ 戻り値: ウォームアップキャッシュが有効になっている場合は「true」、それ以外の場合は「false」。

### チェックキャッシュの有効化
<a name="ba-check-cache-enabled"></a>

特定のデータセットに対して、キャッシュが有効になっているかどうかを確認します。
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/isEnableCache`
+ 引数: なし
+ キャッシュが有効になっている場合は「true」を返します。

### キャッシュの有効化
<a name="ba-enable-cache"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールおよび ROLE\$1SUPER\$1ADMIN ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/enableDisableCache/{enable}`
+ 引数:   
enable  
(必須、プール値): 「true」に設定すると、キャッシュが有効になります。  
データセット  
(必須、データセット): データセットオブジェクト
+ 戻り値: なし

### 割り当てられた RAM キャッシュの確認
<a name="ba-check-allocated-ram-cache"></a>

このエンドポイントを使用すると、割り当てられた RAM キャッシュメモリを取得できます。
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/allocatedRamCache`
+ 引数: なし
+ 戻り値: メモリのサイズ (文字列)

### 永続性の確認
<a name="ba-check-persistence"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/persistence`
+ 引数: なし
+ 戻り値: 文字列として使用される永続性

### サポートされているデータセットタイプの確認
<a name="ba-check-supported-data-set-types"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/rest/bluesamservice/getDataSetTypes`
+ 認証と ROLE\$1USER ロールが必要です。
+ 引数: なし
+ 戻り値: サポートされているデータセットタイプのリスト (文字列のリスト)。

### サーバーヘルスの確認
<a name="ba-check-server-health"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/rest/bluesamserver/serverIsUp`
+ 引数: なし
+ 戻り値: なし HTTP レスポンスステータスコード 200 は、サーバーが稼働中であることを示します。

### PostgreSQL マルチスキーマ設定を確認する
<a name="ba-check-postgres-multi-schema"></a>

PostgreSQL マルチスキーマ設定が有効になっているかどうかを確認します。
+ サポートされているメソッド: GET
+ 認証と ROLE\$1USER ロールが必要です。
+ パス: `/api/services/rest/bluesamservice/isPostgresMultiSchema`
+ 引数: なし
+ 戻り値: PostgreSQL マルチスキーマ設定が有効になっている場合は true、それ以外の場合は false。

## BAC ユーザー管理エンドポイント
<a name="ba-endpoints-bac-users"></a>

次のエンドポイントを使用して、ユーザーインタラクションを管理します。

**Topics**
+ [ユーザーのログイン](#ba-log-user-in)
+ [システムに少なくとも 1 人のユーザーが存在するかどうかの確認](#ba-verify-at-least-one-user-exists)
+ [新規ユーザーの記録](#ba-record-new-user)
+ [ユーザー情報の取得](#ba-user-info)
+ [ユーザーの一覧表示](#ba-list-users)
+ [ユーザーの削除](#ba-delete-user)
+ [現在のユーザーのログアウト](#ba-log-user-out)

### ユーザーのログイン
<a name="ba-log-user-in"></a>
+ サポートされているメソッド: POST
+ パス: `/api/services/security/servicelogin/login`
+ 引数: なし
+ 現在のリクエストで入力された認証情報を持つユーザーを表す、`com.netfective.bluage.bac.entities.SignOn` オブジェクトの JSON のシリアル化を返します。パスワードは、返されたオブジェクトの中では表示されません。ユーザーに割り当てられたロールが一覧表示されます。

レスポンス例:

```
{
     "login": "some-admin",
     "password": null,
     "roles": [
       {
         "id": 0,
         "roleName": "ROLE_ADMIN"
       }
     ]
   }
```

### システムに少なくとも 1 人のユーザーが存在するかどうかの確認
<a name="ba-verify-at-least-one-user-exists"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogin/hasAccount`
+ 引数: なし
+ デフォルトのスーパー管理者ユーザー以外のユーザーが少なくとも 1 人作成されている場合は、ブール値 `true` を返します。それ以外の場合は `false` を返します。

### 新規ユーザーの記録
<a name="ba-record-new-user"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/recorduser`
+ 引数: ストレージに追加されるユーザーを表す `com.netfective.bluage.bac.entities.SignOn` オブジェクトの JSON のシリアル化。ユーザーのロールを定義する必要があります。定義されていないと、ユーザーは BAC 機能やエンドポイントを使用できない可能性があります。
+ ユーザーが正常に作成された場合は、ブール値 `true` を返します。それ以外の場合は `false` を返します。
+ サンプルリクエスト JSON:

  ```
   {
       "login": "simpleuser",
       "password": "simplepassword",
       "roles": [
         {
           "id": 2,
           "roleName": "ROLE_USER"
         }
       ]
     }
  ```

  次に示すのは、`roleName` の 2 つの有効な値です。
  + `ROLE_ADMIN`: はBlusamリソースとユーザーを管理できます。
  + `ROLE_USER`: はBlusamリソースを管理できますが、ユーザーは管理できません。

### ユーザー情報の取得
<a name="ba-user-info"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogin/userInfo`
+ 引数: なし
+ 現在接続されているユーザーのユーザー名とパスワードを返します。

### ユーザーの一覧表示
<a name="ba-list-users"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/listusers`
+ 引数: なし
+ JSON としてシリアル化された `com.netfective.bluage.bac.entities.SignOn` の一覧を返します。

### ユーザーの削除
<a name="ba-delete-user"></a>

**重要**  
このアクションを元に戻すことはできません。削除されたユーザーは、BAC アプリケーションに再度接続できなくなります。
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/deleteuser`
+ 引数: ストレージから削除するユーザーを表す `com.netfective.bluage.bac.entities.SignOn` オブジェクトの JSON のシリアル化。
+ ユーザーが正常に削除された場合は、ブール値 `true` を返します。

### 現在のユーザーのログアウト
<a name="ba-log-user-out"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogout/logout`
+ 引数: なし
+ 現在のユーザーが正常にログアウトされた場合は、JSON メッセージ `{"success":true}` を返します。関連する HTTP セッションは無効になります。

# メインフレームの AWS 変換で JICS アプリケーションコンソールを管理する
<a name="ba-endpoints-jac"></a>

JICS コンポーネントは、レガシー CICS リソースのモダナイゼーションのためのメインフレームサポートの AWS 変換です。JICS アプリケーションコンソールのウェブアプリケーションは、JICS リソースの管理専用です。次のエンドポイントを使用すると、JAC ユーザーインターフェイスを操作しなくても管理タスクを実行できます。エンドポイントが認証を要求する場合は、必ず、リクエストには認証の詳細 (通常は基本的な認証で要求されるユーザー名/パスワード) を含める必要があります。JICS アプリケーションコンソールのウェブアプリケーションのエンドポイントには、ルートパス `/jac/` を使用します。

**Topics**
+ [JICS リソースの管理](#ba-endpoints-jac-resources)
+ [その他](#ba-endpoints-jac-other)
+ [JAC ユーザー管理エンドポイント](#ba-endpoints-jac-users)

## JICS リソースの管理
<a name="ba-endpoints-jac-resources"></a>

次のエンドポイントは、すべて JICS リソース管理に関連するものであり、JICS 管理者は日常的にリソースを扱うことができます。

**Topics**
+ [JICS LISTS と GROUPS の一覧表示](#list-jics-lists-groups)
+ [JICS リソースの取得](#retrieve-jics-resources)
+ [JICS GROUPS の一覧表示](#list-jics-groups)
+ [特定の LIST の JICS GROUPS の一覧表示](#list-jics-groups-given-list)
+ [特定の GROUP の JICS リソースの一覧表示](#list-jics-resources-given-group)
+ [指定された GROUP の LIST JICS (名前の使用による代替)](#list-jics-resources-given-group-alt)
+ [複数の LISTS の所有 GROUPS の編集](#edit-owned-groups-lists)
+ [LIST の削除](#delete-list)
+ [GROUP の削除](#delete-group)
+ [TRANSACTION の削除](#delete-transaction)
+ [PROGRAM の削除](#delete-program)
+ [FILE の削除](#delete-file)
+ [TDQUEUE の削除](#delete-tdqueue)
+ [TSMODEL の削除](#delete-tsmodel)
+ [要素の削除](#delete-elements)
+ [LIST の作成](#create-list)
+ [GROUP の作成](#create-group)
+ [RESOURCES 作成に関する一般的な考慮事項](#common-create-considerations)
+ [TRANSACTION の作成](#create-transaction)
+ [PROGRAM の作成](#create-program)
+ [FILE の作成](#create-file)
+ [TDQUEUE の作成](#create-tdqueue)
+ [TSMODEL の作成](#create-tsmodel)
+ [要素の作成](#create-elements)
+ [LIST の更新](#update-list)
+ [GROUP の更新](#update-group)
+ [RESOURCES の更新に関する一般的な考慮事項](#common-update-considerations)
+ [TRANSACTION の更新](#update-transaction)
+ [PROGRAM の更新](#update-program)
+ [FILE の更新](#update-file)
+ [TDQUEUE の更新](#update-tdqueue)
+ [TSMODEL の更新](#update-tsmodel)
+ [要素の更新](#update-elements)
+ [要素のアップサート](#upsert-elements)
+ [要素の取得](#retrieve-elements)
+ [JICS CRUD オペレーション](#jics-crud-operation)

### JICS LISTS と GROUPS の一覧表示
<a name="list-jics-lists-groups"></a>

LIST と GROUPS は、JICS コンポーネント内の主要な所有コンテナリソースです。すべての JICS リソースは GROUP に属している必要があります。グループは LISTS に帰属できますが、必須ではありません。LISTS は特定の JICS 環境には存在しない場合もありますが、ほとんどの場合、LISTS はリソースを整理するためのものです。CICS リソース組織についての詳細は、「[CICS リソース](https://www.ibm.com/docs/en/cics-ts/6.1?topic=fundamentals-how-it-works-cics-resources)」を参照してください。
+ サポートされているメソッド: GET
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/listJicsListsAndGroups`
+ 引数: なし
+ 戻り値: シリアル化された JicsContainer オブジェクトの一覧 (LISTS と GROUPS 両方) を JSON 形式で返します。

レスポンス例:

```
[
    {
      "name": "Resources",
      "children": [
        {
          "jacType": "JACList",
          "name": "MURACHS",
          "isActive": true,
          "children": [
            {
              "jacType": "JACGroup",
              "name": "MURACHS",
              "isActive": true,
              "children": []
            }
          ]
        },
        {
          "jacType": "JACGroup",
          "name": "TEST",
          "isActive": true,
          "children": []
        }
      ],
      "isExpanded": true
    }
  ]
```

### JICS リソースの取得
<a name="retrieve-jics-resources"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/retrieveJicsResources`
+ 引数: 取得する JICS リソースを表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.request.RetrieveOperationRequest` オブジェクトの JSON のシリアル化です。
+ シリアル化された JicsResource オブジェクトの一覧を返します。オブジェクトは順不同で返されます。また、さまざまなタイプ (PROGRAM、TRANSACTION、FILE など) があります。

### JICS GROUPS の一覧表示
<a name="list-jics-groups"></a>
+ サポートされているメソッド: GET
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/listJicsGroups`
+ 引数: なし
+ シリアル化された JicsContainer オブジェクトの一覧 (GROUPS) を JSON 形式で返します。GROUPS は所有 LIST 情報なしで返されます。

レスポンス例:

```
[
    {
      "jacType": "JACGroup",
      "name": "MURACHS",
      "isActive": true,
      "children": []
    },
    {
      "jacType": "JACGroup",
      "name": "TEST",
      "isActive": true,
      "children": []
    }
  ]
```

### 特定の LIST の JICS GROUPS の一覧表示
<a name="list-jics-groups-given-list"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/listGroupsForList`
+ 引数: JSON ペイロードで、探している GROUPS を含む JICS LIST を表します。これは、`com.netfective.bluage.jac.entities.JACList` オブジェクトの JSON のシリアル化です。

  リクエスト例:

  ```
  {
      "jacType":"JACList",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ シリアル化された JicsContainer オブジェクトの一覧 (GROUPS) を JSON 形式で返します。これは、指定した LIST にアタッチされます。GROUPS は所有 LIST 情報なしで返されます。

  レスポンス例:

  ```
  [
      {
        "jacType": "JACGroup",
        "name": "MURACHS",
        "isActive": true,
        "children": []
      }
    ]
  ```

### 特定の GROUP の JICS リソースの一覧表示
<a name="list-jics-resources-given-group"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/listResourcesForGroup`
+ 引数: JSON ペイロードで、探しているリソースを含む JICS GROUP を表します。これは、`com.netfective.bluage.jac.entities.JACGroup` オブジェクトの JSON のシリアル化です。GROUP のすべてのフィールドを指定する必要はありませんが、名前は必須です。

  リクエスト例:

  ```
  {
      "jacType":"JACGroup",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ 指定した GROUP が所有する、シリアル化された JicsResource オブジェクトの一覧を返します。オブジェクトは順不同で返されます。また、さまざまなタイプ (PROGRAM、TRANSACTION、FILE など) があります。

### 指定された GROUP の LIST JICS (名前の使用による代替)
<a name="list-jics-resources-given-group-alt"></a>
+ サポートされているメソッド: POST
+ 認証が必要
+ パス: `/api/services/rest/jicsservice/listResourcesForGroupName`
+ 引数: 探しているリソースを所有する GROUP の名前。
+ 戻り値: 指定した GROUP が所有する、シリアル化された JicsResource オブジェクトの一覧を返します。オブジェクトは順不同で返されます。また、さまざまなタイプ (PROGRAM、TRANSACTION、FILE など) があります。

### 複数の LISTS の所有 GROUPS の編集
<a name="edit-owned-groups-lists"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/editGroupsList`
+ 引数: 子 GROUPS を含む LISTS のコレクションを JSON で表現したもの。

  リクエスト例:

  ```
  [      
    {
          "jacType": "JACList",
          "name": "MURACHS",
          "isActive": true,
          "children": [
            {
              "jacType": "JACGroup",
              "name": "MURACHS",
              "isActive": true,
              "children": []
            },
            {
              "jacType": "JACGroup",
              "name": "TEST",
              "isActive": true,
              "children": []
            }
          ]
    }
  ]
  ```

  これを編集する前には、「MURACHS」という名前のグループだけが「MURACHS」という名前の LIST に属していました。これを編集することにより、「TEST」という名前のグループを「MURACHS」という名前の LIST に「追加」しました。
+ ブール値を返します。値が「true」の場合、LISTS の変更は基盤となる JICS ストレージ内で正常に永続化されています。

### LIST の削除
<a name="delete-list"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteList`
+ 引数: 削除する JICS LIST を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACList` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、LIST の削除は JICS ストレージ内で正常に行われています。

### GROUP の削除
<a name="delete-group"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteGroup`
+ 引数: 削除する JICS GROUP を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACGroup` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、GROUP の削除は JICS ストレージ内で正常に行われています。

### TRANSACTION の削除
<a name="delete-transaction"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteTransaction`
+ 引数: 削除する JICS Transaction を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTransaction` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TRANSACTION の削除は JICS ストレージ内で正常に行われています。

### PROGRAM の削除
<a name="delete-program"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteProgram`
+ 引数: 削除する JICS Program を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACProgram` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、PROGRAM の削除は JICS ストレージ内で正常に行われています。

### FILE の削除
<a name="delete-file"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteFile`
+ 引数: 削除する JICS File を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACFile` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、FILE の削除は JICS ストレージ内で適切に行われています。

### TDQUEUE の削除
<a name="delete-tdqueue"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteTDQueue`
+ 引数: 削除する JICS TDQUEUE を表す JSON ペイロード。これは「com.netfective.bluage.jac.entities.JACTDQueue」オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TDQUEUE の削除は JICS ストレージ内で正常に行われています。

### TSMODEL の削除
<a name="delete-tsmodel"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteTSModel`
+ 引数: 削除する JICS TSMODEL を表す JSON ペイロード。これは「com.netfective.bluage.jac.entities.JACTSModel」オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TSMODEL の削除は JICS ストレージ内で正常に行われています。

### 要素の削除
<a name="delete-elements"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/deleteElements`
+ 引数: 削除する JICS 要素を表す JSON ペイロード。
+ ブール値を返します。`true` は、基盤となる JICS ストレージで削除が正常に行われたことを示します。

### LIST の作成
<a name="create-list"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createList`
+ 引数: 作成する JICS LIST を表す JSON ペイロード。これは「com.netfective.bluage.jac.entities.JACList」オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、LIST は JICS ストレージ内で正常に作成されています。

**注記**  
LIST は、常に空の状態で作成されます。GROUPS を LIST にアタッチするには、別のオペレーションが必要です。

### GROUP の作成
<a name="create-group"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createGroup`
+ 引数: 作成する JICS GROUP を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACGroup` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、GROUP は JICS ストレージ内で適切に作成されています。

**注記**  
GROUP は常に空の状態で作成されます。RESOURCES を GROUP にアタッチするには、追加のオペレーションが必要です (リソースを作成すると、リソースは特定の GROUP に自動的にアタッチされます)。

### RESOURCES 作成に関する一般的な考慮事項
<a name="common-create-considerations"></a>

次のすべてのエンドポイントは JICS RESOURCES の作成に関連しており、共通する制約がいくつかあります。エンドポイントに送信されるリクエストペイロードでは、`groupName` フィールドに値を設定する必要があります。

GROUP の所有権の制約:

リソースは、既存のグループにアタッチしないと作成できません。エンドポイントは、groupName を使用して、このリソースをアタッチするグループを取得します。`groupName` は、既存のグループ名を指している必要があります。`groupName` が基盤となる JICS ストレージの既存のグループを指していない場合、HTTP STATUS 400 のエラーメッセージが送信されます。

GROUP 内の単一性の制約:

指定の名前のリソースは、指定のグループ内で一意である必要があります。単一性のチェックは、各リソースの作成エンドポイントによって実行されます。指定したペイロードが単一性の制約を優先しない場合、エンドポイントは HTTP STATUS 400 (BAD REQUEST) のレスポンスを送信します。詳細については、次のレスポンス例を参照してください。

ペイロードの例: 「TEST」グループにトランザクション「ARIT」を作成しようとしましたが、そのグループに、既にその名前のトランザクションが存在しています。

```
{
    "jacType":"JACTransaction",
    "name":"ARIT", 
    "groupName":"TEST", 
    "isActive":true
  }
```

次のようなエラーレスポンスが返されました。

```
{
    "timestamp": 1686759054510,
    "status": 400,
    "error": "Bad Request",
    "path": "/jac/api/services/rest/jicsservice/createTransaction"
  }
```

サーバーのログを調べることにより、問題の原因が確認できます。

```
2023-06-14 18:10:54 default         TRACE - o.s.w.m.HandlerMethod                    - Arguments: [java.lang.IllegalArgumentException: Transaction already present in the group, org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterResponse@e34f6b8]
2023-06-14 18:10:54 default         ERROR - c.n.b.j.a.WebConfig                      - 400
java.lang.IllegalArgumentException: Transaction already present in the group
	at com.netfective.bluage.jac.server.services.rest.impl.JicsServiceImpl.createElement(JicsServiceImpl.java:1280)
```

### TRANSACTION の作成
<a name="create-transaction"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createTransaction`
+ 引数: 作成する JICS TRANSACTION を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTransaction` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TRANSACTION は JICS ストレージ内で正常に作成されています。

### PROGRAM の作成
<a name="create-program"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createProgram`
+ 引数: 作成する JICS PROGRAM を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACProgram` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、PROGRAM は JICS ストレージ内で正常に作成されています。

### FILE の作成
<a name="create-file"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createFile`
+ 引数: 作成する JICS FILE を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACFile` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、FILE は JICS ストレージ内で正常に作成されています。

### TDQUEUE の作成
<a name="create-tdqueue"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createTDQueue`
+ 引数: 作成する JICS TDQUEUE を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTDQueue` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TDQUEUE は JICS ストレージ内で正常に作成されています。

### TSMODEL の作成
<a name="create-tsmodel"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createTSModel`
+ 引数: 作成する JICS TSMODEL を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTSModel` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。`true` は、基盤となる JICS ストレージで要素の作成が正常に行われたことを示します。

### 要素の作成
<a name="create-elements"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/createElements`
+ 引数: 作成する JICS 要素を表す JSON ペイロード。
+ ブール値を返します。値が「true」の場合、要素は基盤となる JICS ストレージで正常に作成されています。

### LIST の更新
<a name="update-list"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateList`
+ 引数: 更新する JICS LIST を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACList` オブジェクトの JSON のシリアル化です。その LIST の子を指定する必要はありません。LIST の更新メカニズムでは子は考慮されません。
+ ブール値を返します。値が「true」の場合、LIST は JICS ストレージ内で正常に更新されています。

LIST の「isActive」フラグを更新すると、LIST のすべての所有要素、つまり LIST が所有するすべての GROUPS と、それらの GROUPS が所有するすべての RESOURCES に反映されます。これは、複数の GROUPS にまたがる大量のリソースを 1 回のオペレーションで無効にする場合に便利な方法です。

### GROUP の更新
<a name="update-group"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateGroup`
+ 引数: 更新する JICS GROUP を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACGroup` オブジェクトの JSON のシリアル化です。その GROUP の子を指定する必要はありません。GROUP の更新メカニズムではこのことは考慮されません。
+ ブール値を返します。値が「true」の場合、GROUP は JICS ストレージ内で正常に更新されています。

**注記**  
GROUP の「isActive」フラグを更新すると、GROUP のすべての所有要素、つまり GROUP が所有するすべての RESOURCES に反映されます。これは、特定の GROUP 内で、大量のリソースを 1 回のオペレーションで無効にする場合に便利な方法です。

### RESOURCES の更新に関する一般的な考慮事項
<a name="common-update-considerations"></a>

次のエンドポイントは、すべて JICS RESOURCES の更新に関するものです。`groupName` フィールドを使用して、JICS RESOURCE の所有 GROUP を変更できます。ただし、フィールド値が基盤 JICS ストレージの存在する GROUP を指している場合に限ります。それ以外の場合は、エンドポイントから BAD REQUEST レスポンス (HTTP STATUS 400) が返されます。

### TRANSACTION の更新
<a name="update-transaction"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateTransaction`
+ 引数: 更新する JICS TRANSACTION を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTransaction` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TRANSACTION は JICS ストレージ内で正常に更新されています。

### PROGRAM の更新
<a name="update-program"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateProgram`
+ 引数: 更新する JICS PROGRAM を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACProgram` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、PROGRAM は JICS ストレージ内で正常に更新されています。

### FILE の更新
<a name="update-file"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateFile`
+ 引数: 更新する JICS FILE を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACFile` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、FILE は JICS ストレージ内で正常に更新されています。

### TDQUEUE の更新
<a name="update-tdqueue"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateTDQueue`
+ 引数: 更新する JICS TDQUEUE を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTDQueue` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TDQueue は JICS ストレージ内で正常に更新されています。

### TSMODEL の更新
<a name="update-tsmodel"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateTSModel`
+ 引数: 更新する JICS TSMODEL を表す JSON ペイロード。これは、`com.netfective.bluage.jac.entities.JACTSModel` オブジェクトの JSON のシリアル化です。
+ ブール値を返します。値が「true」の場合、TSMODEL は JICS ストレージ内で正常に更新されています。

### 要素の更新
<a name="update-elements"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/updateElements`
+ 引数: 更新する JICS 要素を表す JSON ペイロード。
+ ブール値を返します。`true` は、基盤となる JICS ストレージで要素の更新が正常に行われたことを示します。

### 要素のアップサート
<a name="upsert-elements"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/upsertElements`
+ 引数: アップサートする要素を表す JSON ペイロード。
+ ブール値を返します。`true` は、基盤となる JICS ストレージで要素のアップサートが正常に行われたことを示します。

### 要素の取得
<a name="retrieve-elements"></a>
+ サポートされているメソッド: GET
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/retrieveElements`
+ 引数: なし
+ シリアル化されたすべての JICS リソースの一覧を返します。

### JICS CRUD オペレーション
<a name="jics-crud-operation"></a>
+ サポートされているメソッド: POST
+ 認証と、ROLE\$1ADMIN、ROLE\$1SUPER\$1ADMIN、ROLE\$1USER のいずれかのロールが必要です。
+ パス: `/api/services/rest/jicsservice/jicsCrudOperation`
+ 引数: JSON ペイロードで、探している JICS リソースを含む JICS ペイロードを表します。これは、`com.netfective.bluage.jac.entities.request.JicsCrudOperationRequest` オブジェクトの JSON のシリアル化です。
+ レスポンスを表す JSON ペイロードを返します。これは、`com.netfective.bluage.jac.entities.request.JicsCrudOperationResponse` オブジェクトの JSON のシリアル化です。

## その他
<a name="ba-endpoints-jac-other"></a>

**Topics**
+ [JICS サーバーのヘルスステータス](#jics-server-health)

### JICS サーバーのヘルスステータス
<a name="jics-server-health"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/rest/jicsserver/serverIsUp`
+ 引数: なし
+ 戻り値: なし HTTP STATUS 200 のレスポンスが返された場合、サーバーが稼働中であることを示します。

## JAC ユーザー管理エンドポイント
<a name="ba-endpoints-jac-users"></a>

次のエンドポイントを使用して、ユーザーインタラクションを管理します。

**Topics**
+ [ユーザーのログ記録](#log-user)
+ [システムに少なくとも 1 人のユーザーが存在するかどうかをテストする](#test-user-exist)
+ [新規ユーザーの記録](#record-new-user)
+ [ユーザー情報](#user-info)
+ [ユーザーの一覧表示](#list-users)
+ [ユーザーの削除](#delete-user)
+ [現在のユーザーをログアウトする](#logout-user)

### ユーザーのログ記録
<a name="log-user"></a>
+ サポートされているメソッド: POST
+ パス: `/api/services/security/servicelogin/login`
+ 引数: なし
+ 現在のリクエストで入力された認証情報を持つユーザーを表す、`com.netfective.bluage.jac.entities.SignOn` オブジェクトの JSON のシリアル化を返します。パスワードは、返されたオブジェクトの中では表示されません。ユーザーに割り当てられたロールが一覧表示されます。

レスポンス例:

```
{
    "login": "some-admin",
    "password": null,
    "roles": [
      {
        "id": 0,
        "roleName": "ROLE_ADMIN"
      }
    ]
  }
```

### システムに少なくとも 1 人のユーザーが存在するかどうかをテストする
<a name="test-user-exist"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogin/hasAccount`
+ 引数: なし
+ デフォルトのスーパー管理者ユーザー以外のユーザーが少なくとも 1 人作成されている場合は、ブール値 `true` を返します。それ以外の場合は `false` を返します。

### 新規ユーザーの記録
<a name="record-new-user"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/recorduser`
+ 引数: ストレージに追加されるユーザーを表す `com.netfective.bluage.jac.entities.SignOn` オブジェクトの JSON のシリアル化。ユーザーのロールを定義する必要があります。定義されていないと、ユーザーは JAC 機能やエンドポイントを使用できない可能性があります。
+ ユーザーが正常に作成された場合は、ブール値 `true` を返します。それ以外の場合は `false` を返します。

リクエスト例:

```
{
    "login": "simpleuser",
    "password": "simplepassword",
    "roles": [
      {
        "id": 2,
        "roleName": "ROLE_USER"
      }
    ]
  }
```

新規ユーザーを記録するときに使用できるのは、次のロールのみです。
+ ROLE\$1ADMIN: JICS リソースとユーザーを管理できます。
+ ROLE\$1USER: JICS リソースは管理できますが、ユーザーは管理できません。

### ユーザー情報
<a name="user-info"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogin/userInfo`
+ 引数: なし
+ 現在接続されているユーザーのユーザー名とロールを返します。

### ユーザーの一覧表示
<a name="list-users"></a>
+ サポートされているメソッド: GET
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/listusers`
+ 引数: なし
+ JSON としてシリアル化された `com.netfective.bluage.jac.entities.SignOn` の一覧を返します。

### ユーザーの削除
<a name="delete-user"></a>
+ サポートされているメソッド: POST
+ 認証と ROLE\$1ADMIN ロールが必要です。
+ パス: `/api/services/security/servicelogin/deleteuser`
+ 引数: ストレージから削除するユーザーを表す `com.netfective.bluage.jac.entities.SignOn` オブジェクトの JSON のシリアル化。
+ ユーザーが正常に削除された場合は、ブール値 `true` を返します。

**重要**  
このアクションを元に戻すことはできません。削除されたユーザーは、JAC アプリケーションに再度接続できなくなります。

### 現在のユーザーをログアウトする
<a name="logout-user"></a>
+ サポートされているメソッド: GET
+ パス: `/api/services/security/servicelogout/logout`
+ 引数: なし
+ 現在のユーザーが正常にログアウトされた場合は、JSON メッセージ `{"success":true}` を返します。関連する HTTP セッションは無効になります。

# メインフレームユーザーの AWS 変換のデータ構造
<a name="ba-endpoints-apx"></a>

メインフレームエンジンの AWS 変換のさまざまなデータ構造については、次のセクションで説明します。

**Topics**
+ [ジョブ実行の詳細メッセージの構造](#job-execution-details)
+ [トランザクション起動結果の構造](#transaction-outcome)
+ [トランザクション起動レコードの構造](#transaction-record-outcome)
+ [キューでジョブの可能性のあるステータス](#jobs-status)
+ [送信ジョブとスケジュールジョブの入力](#submit-job)
+ [スケジューリングされているジョブのレスポンス一覧](#list-scheduled-jobs)
+ [繰り返しジョブのレスポンス一覧](#list-on-hold-jobs)

## ジョブ実行の詳細メッセージの構造
<a name="job-execution-details"></a>

各ジョブの実行の詳細には、次のフィールドが含まれます。

scriptId  
呼び出されたスクリプトの識別子。

caller  
発信者の IP アドレス。

識別子  
一意のジョブの実行の識別子。

startTime  
ジョブの実行を開始した日時。

endTime  
ジョブの実行が終了した日時。

ステータス  
ジョブの実行のステータス。指定できる値は 1 つです。  
+ `DONE`: ジョブの実行が正常に終了しました。
+ `TRIGGERED`: ジョブの実行がトリガーされたが、まだ開始されていません。
+ `RUNNING`: ジョブの実行中です。
+ `KILLED`: ジョブの実行は強制終了されました。
+ `FAILED`: ジョブの実行が失敗しました。

executionResult  
ジョブ実行の結果を要約するメッセージ。このメッセージは、ジョブ実行がまだ終了していない場合の簡単なメッセージか、次のフィールドを持つ JSON 構造のいずれかになります。  
+ ExitCode: 数値の終了コードで、負の値は障害の状態を示します。
+ program: ジョブによって起動された最新のプログラムを示します。
+ status: 指定できる値は次のうちの 1 つです。
  + `Error`: exitCode = -1 の場合。これはジョブ実行中に発生した (技術的な) エラーに対応します。
  + `Failed`: exitCode = -2 の場合、これはサービスプログラムの実行中に発生した障害 (異常終了の状態など) に対応します。
  + `Succeeded`: exitCode >= 0 の場合:
+ stepName: ジョブで実行された最新のステップの名前。

executionMode  
ジョブの起動方法によって、SYNCHRONOUS または ASYNCHRONOUS のいずれかになります。

サンプル出力:

```
{
    "scriptId": "INTCALC",
    "caller": "127.0.0.1",
    "identifier": "97d410be-efa7-4bd3-b7b9-d080e5769771",
    "startTime": "06-09-2023 11:42:41",
    "endTime": "06-09-2023 11:42:42",
    "status": "DONE",
    "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
    "executionMode": "ASYNCHRONOUS"
  }
```

## トランザクション起動結果の構造
<a name="transaction-outcome"></a>

 構造には、次のフィールドが含まれる場合があります。

outCome  
トランザクションの実行結果を表す文字列。可能な値は以下のとおりです。  
+ `Success`: トランザクションの実行が正しく終了しました。
+ `Failure`: トランザクションの実行が正しく終了しませんでした。いくつかの問題が発生しました。

commarea  
COMMAREA の最終値を byte64 でエンコードしたバイト配列として表す文字列。空の文字列の場合もあります。

containerRecord  
(オプション) CONTAINER のレコード内容を byte64 でエンコードしたバイト配列として表す文字列。

serverDescription  
(デバッグ目的で) リクエストを処理したサーバーに関する情報が含まれる場合があります。空の文字列の場合もあります。

abendCode  
(オプション) 起動されたトランザクションによって参照されたプログラムが異常終了した場合、異常終了コード値がこのフィールドに文字列として返されます。

レスポンス例:

Success

```
{
    "outCome": "Success",
    "commarea": "",
    "serverDescription": ""
  }
```

失敗

```
{
    "outCome": "Failure",
    "commarea": "",
    "serverDescription": "",
    "abendCode": "AEIA"
  }
```

## トランザクション起動レコードの構造
<a name="transaction-record-outcome"></a>

構造には、次のフィールドが含まれる場合があります。

recordContent  
COMMAREA のレコード内容を byte64 でエンコードしたバイト配列として表す文字列。

containerRecord  
コンテナのレコード内容を byte64 でエンコードしたバイト配列として表す文字列。

serverDescription  
(デバッグ目的で) リクエストを処理したサーバーに関する情報が含まれる場合があります。空の文字列の場合もあります。

レスポンス例:

Success

```
{
    "recordContent": "",
    "serverDescription": ""
}
```

## キューでジョブの可能性のあるステータス
<a name="jobs-status"></a>

キューでは、ジョブのステータスを持つことができます。

アクティブ  
ジョブは現在キューで実行中です。

EXECUTION\$1WAIT  
ジョブはスレッドが使用可能になるのを待っています。

SCHEDULED  
ジョブは特定の日付と時刻に実行されるようにスケジュールされています。

HOLD  
ジョブは実行前にリリースされるのを待っています。

COMPLETED  
ジョブは正常に実行されました。

FAILED  
ジョブの実行が失敗しました。

UNKNOWN  
ステータスは不明です。

## 送信ジョブとスケジュールジョブの入力
<a name="submit-job"></a>

送信ジョブとスケジュールジョブの入力は、`com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage` オブジェクトの JSON のシリアル化です。以下のサンプル入力は、このような Bean のすべてのフィールドを示しています。

送信ジョブのサンプル入力:

```
{
    "messageQueueName":null,
    "scheduleDate":null,
    "scheduleTime":null,
    "programName":"PTA0044",
    "programParams":
     {"wmind":"B"},
    "localDataAreaValue":"",
    "userName":"USER1",
    "jobName":"PTA0044",
    "jobNumber":9,
    "jobPriority":5,
    "executionDate":"20181231",
    "jobQueue":"queue1",
    "jobOnHold":false
}
```

スケジュールジョブのサンプル入力:

```
{
     "scheduleCron": "*/2 * * * * ?",
     "programName":"LOGPGM",
     "programParams": {
         "cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 2 seconds!\"]"
     },
     "localDataAreaValue":"",
     "userName":"PVO",
     "jobName":"LOGGERJOB",
     "jobPriority":5,
     "jobQueue":"queue1",
     "scheduleMisfirePolicy": 4,
     "startTime": "2003/05/04 07:00:00.000 GMT-06:00",
     "endTime": "2003/05/04 07:00:07.000 GMT-06:00"
 }
```

jobNumber  
ジョブ番号が 0 の場合、ジョブ番号はジョブ番号シーケンスの次の番号を使用して自動的に生成されます。この値は 0 に設定する必要があります (テスト目的を除く)。

jobPriority  
AS400 のデフォルトのジョブ優先度は 5 です。有効範囲は 0～9 で、0 が最優先です。

jobOnHold  
保留でジョブが送信された場合、そのジョブはすぐには実行されず、誰かが「リリース」したときに初めて実行されます。ジョブは REST API (/release または /release-all) を使用してリリースできます。

scheduleDate および scheduleTime  
これらの値が null でない場合、ジョブは指定された日時に実行されます。

日付  
MMddyy または ddMMyyyy の形式で指定できます (入力のサイズによって、使用する形式が決まります)。

Time  
HHmm または HHmmss の形式で指定できます (入力のサイズによって、使用する形式が決まります)。

programParams  
マップとしてプログラムに渡されます。

scheduleMisfirePolicy  
トリガーが誤って発生した場合に使用される戦略を定義します。取り得る値には以下のものがあります。  

1. 最初の誤発生を解放し、他の誤発生を破棄します。

1. 最初の誤発生のために保留になっているジョブを送信し、他の誤発生を破棄します。

1. 誤発生を破棄します。

1. すべての誤発生を解放します。ジョブキューにより、すべてのジョブが実行されます。

## スケジューリングされているジョブのレスポンス一覧
<a name="list-scheduled-jobs"></a>

 これは、list-jobs ジョブキューエンドポイントの構造です。ジョブの送信に使用された送信ジョブメッセージは、レスポンスの一部であることに注意してください。これは、トラッキング、テスト、再送信の目的で使用できます。ジョブが完了すると、開始日と終了日も入力されます。

```
[
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "HOLD",
    "jobDelay": 0,
    "startDate": null,
    "endDate": null,
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": null,
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 1,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  },
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "COMPLETED",
    "jobDelay": 0,
    "startDate": "2022-10-13T22:48:34.025+00:00",
    "endDate": "2022-10-13T22:52:54.475+00:00",
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 2,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  }
]
```

## 繰り返しジョブのレスポンス一覧
<a name="list-on-hold-jobs"></a>

これは、/schedule/list ジョブキューエンドポイントの構造です。

```
[
  {
    "id": 1,
    "status": "ACTIVE",
    "jobNumber": 1,
    "userName": "PVO",
    "msg": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "startTime": "2024/03/07 21:12:00.000 UTC",
      "endTime": "2024/03/07 21:13:59.000 UTC",
      "programName": "LOGPGM",
      "programParams": {"cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 20 seconds!\"]"},
      "localDataAreaValue": "",
      "userName": "PVO",
      "jobName": "LOGGERJOB",
      "jobNumber": 1,
      "jobScheduleId": 1,
      "jobPriority": 5,
      "executionDate": null,
      "jobQueue": "queue1",
      "jobOnHold": false,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "lastUpdatedAt": "2024-03-07T21:11:13.282+00:00",
    "lastUpdatedBy": ""
  }
]
```