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

# レスポンス形式

> Guard API のレスポンス。トップレベルの action、パートごとの input_results、および PII と Topic の detected_items について説明します。

呼び出しが成功すると、トップレベルの `action` と、コンテンツパートごとの内訳を含む `input_results` を伴った **HTTP 200** が返されます。Starfort は Guardian のレスポンスボディを**そのまま**返します。ラッパーもフィールドの再構成もありません。

## action モデル

中間の状態はポリシータイプによって異なります。

* **PII** ポリシーは `PASS` / `MASK` / `BLOCK` を返します。
* **Topic** ポリシーは `PASS` / `CHECK` / `BLOCK` を返し、**`CHECK`** は `controversial`（論争のある）トピックをレビュー対象としてフラグ付けします。

**API 呼び出し元は `CHECK` を直接受け取ります** — `CHECK` を `PASS` として扱う Desktop Agent や Proxy Server とは異なります。ルートの `action` は、検出されたすべての中で**最も重大度の高い**ものです：`BLOCK` > `MASK` > `CHECK` > `PASS`。[アクション](/ja/v1.2/concepts/actions-pass-mask-block)を参照してください。

## トップレベル

| フィールド           | 型      | 備考                                                     |
| --------------- | ------ | ------------------------------------------------------ |
| `action`        | string | `PASS` \| `MASK` \| `BLOCK` — すべての結果の中で**最も重大度の高い**もの。 |
| `input_results` | array  | 検査されたコンテンツパートごとに 1 エントリ。何も検査されなかった場合は空になります。           |

各 `input_results[]` エントリ：

| フィールド                    | 備考                                                   |
| ------------------------ | ---------------------------------------------------- |
| `index`                  | `messages[].content` 内でのコンテンツパートの位置。                 |
| `type`                   | `text`、`image`、`audio`、`video`、`document`、`archive`。 |
| `identifier`             | ファイルパートの場合はファイル名。それ以外は `null`。                       |
| `action`                 | このパートのアクション。                                         |
| `processed_content`      | `MASK` の場合：マスク済みテキスト。`PASS`／`BLOCK` の場合：`null`。      |
| `processed_content_type` | `processed_content` が存在する場合の MIME タイプ。               |
| `results`                | ポリシーごとの結果（下記参照）。                                     |

## MASK の例（PII）

```json theme={null}
{
  "action": "MASK",
  "input_results": [{
    "index": 0, "type": "text", "identifier": null, "action": "MASK",
    "processed_content": "제 번호는 [PHONE_NUMBER_1] 이고 이메일은 [EMAIL_1] 입니다.",
    "processed_content_type": "text",
    "results": [{
      "policy_name": "PII Masking Policy", "policy_type": "PII", "action": "MASK",
      "detected_items": [
        { "rule_type": "regex", "rule_id": 15, "rule_name": "phone_number:_korea_mobile_all_separators",
          "action": "MASK", "confidence": 1, "mask_word": "PHONE_NUMBER_1",
          "matched_text": "010-2543-2513", "alert_message": "휴대전화번호 감지됨" },
        { "rule_type": "regex", "rule_id": 18, "rule_name": "email:_email_address",
          "action": "MASK", "confidence": 1, "mask_word": "EMAIL_1",
          "matched_text": "jane@acme.co.kr", "alert_message": "이메일 주소 감지됨" }
      ]
    }]
  }]
}
```

**マスキングトークンの形式：** `[<MASK_WORD>_<n>]`。出現ごとに番号が付与されます（`[PHONE_NUMBER_1]`、`[PHONE_NUMBER_2]`、…）。

## BLOCK の例（Topic）

```json theme={null}
{
  "action": "BLOCK",
  "input_results": [{
    "index": 0, "type": "text", "identifier": null, "action": "BLOCK",
    "processed_content": null, "processed_content_type": null,
    "results": [{
      "policy_name": "Topic Policy", "policy_type": "TOPIC", "action": "BLOCK",
      "detected_items": [
        { "rule_id": "WPN", "rule_name": "무기", "action": "BLOCK",
          "confidence": 1, "classification": "unsafe", "alert_message": "…" }
      ]
    }]
  }]
}
```

## `detected_items` — PII と Topic の違い

フィールドはポリシータイプによって異なります。

| フィールド                                 | PII                           | Topic                                                         |
| ------------------------------------- | ----------------------------- | ------------------------------------------------------------- |
| `rule_type`                           | `ner` \| `regex` \| `keyword` | —                                                             |
| `rule_id`                             | 整数                            | 文字列のトピックコード（例：`WPN`）                                          |
| `rule_name`                           | ルール名                          | トピックのタイトル                                                     |
| `classification`                      | —                             | `safe`（→ PASS）\| `controversial`（→ CHECK）\| `unsafe`（→ BLOCK） |
| `mask_word`                           | あり（MASK）                      | —                                                             |
| `matched_text`                        | 一致した範囲                        | —                                                             |
| `action`、`confidence`、`alert_message` | あり                            | あり                                                            |

<Note>
  まずトップレベルの `action` を読み取ってください。`MASK` の場合は元のコンテンツの代わりに `processed_content` を転送します。`BLOCK` の場合はモデルを呼び出さないでください。[アクション](/ja/v1.2/concepts/actions-pass-mask-block)を参照してください。
</Note>

## `PASS` は常に「分析済みで、何も検出されなかった」を意味する

空の `results` を伴う `PASS` は決して曖昧ではありません。それは、Guardian が**分析を完了し、何も見つからなかった**ことを意味します。分析に失敗したという意味ではありません。Guardian が分析できないリクエストは、劣化した 200 ではなく **HTTP エラー**を返すため（Guardian のフェイルクローズ）、障害がクリーンな結果と誤って解釈されることは決してありません。[エラーと状態](/ja/v1.2/api/errors)を参照してください。
