> For the complete documentation index, see [llms.txt](https://docs.ggwp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ggwp.com/jp/apidokyumento-chat/pakkji/chat-api-v3.md).

# Chat API v3

\[ ベースURL: `api.ggwp.com`]

`POST` /chat/v3/message

## **説明**

このAPIエンドポイントは、入力メッセージ、セッションID、ユーザーIDを、設定可能なフィルタ感度設定とともに処理し、4つのレベルで情報を返します:

* **メッセージ詳細** - 有害コンテンツの有無と深刻度を示す指標、および毒性を除去した入力メッセージのさまざまなバリエーション。
* **プレイヤー詳細** - 会話のその時点までにおける、特定ユーザーの行動を説明する属性。これには、プレイヤーの気分、評判スコア、現在の状態が含まれます。
* **会話サマリー** - そのセッション内の過去のアクティビティを説明する指標。これには、セッション時間、メッセージ数、参加者数、会話の雰囲気、検出されたインシデント総数が含まれます。
* **推奨事項** - 有害な行動の履歴または最近の一連の行動により、その特定ユーザーに課されたペナルティに関する情報。これには、ペナルティそのもの、トリガーとなったメッセージと時刻、ペナルティの期間が含まれます。 `recommended_message` フィールドは、ペナルティが適用されている間は空文字列を返します。このAPI出力のこの部分では、次のペナルティが提供されます:
  * セッションミュート: ユーザーはセッション/マッチの残り時間、ミュートされます。
  * ミュート: ユーザーは特定の時間、すべてのセッション/マッチでミュートされます。

## **ヘッダー**

設定は、GGWPアカウント設定（推奨）を通じて、またはHTTPヘッダーを使用して各リクエストごとに動的に指定できます。

<table><thead><tr><th width="219.04296875">ヘッダー</th><th width="116.37890625">必須</th><th>説明</th></tr></thead><tbody><tr><td><strong>x-api-key</strong></td><td>はい</td><td>認証に使用するGGWP APIキーです。</td></tr><tr><td><strong>Content-Type</strong></td><td>はい</td><td>次の値に設定する必要があります <code>application/json</code>.</td></tr><tr><td><strong>x-api-config</strong></td><td>任意</td><td>リクエストごとのフィルタ感度設定を含むBase64エンコードされたJSONオブジェクトです。詳細は下記を参照してください。指定しない場合は、デフォルト設定または導入時の設定が適用されます。</td></tr></tbody></table>

#### フィルタ感度設定（ `x-api-config`)

深刻度ベースのカテゴリでは、感度によってどの深刻度レベルをブロックするかが決まります:

* `off` — そのカテゴリはフィルタしない
* `low` — フィルタする `high` 深刻度のみ
* `medium` — フィルタする `medium` と `high` 深刻度
* `high` — フィルタする `low`, `medium`、および `high` 深刻度

感度は深刻度と逆の関係です。感度が高いほど、より多くのコンテンツがブロックされます。

#### サポートされているカテゴリ

<details>

<summary><code>age_disclosure</code> <em>[off | low | medium | high]</em></summary>

ユーザーが明示的または暗示的に年齢を示しているメッセージを検出します。このカテゴリは情報提供用であり、有害な意図の検出というより、年齢に配慮した安全対策を支援します。

**深刻度の分類**

* `高深刻度` — ユーザーが未満であることを示す `13`
* `中深刻度` — ユーザーが未満であることを示す `18` ただし少なくとも `13`
* `低深刻度` — ユーザーが未満であることを示す `21`

**深刻度別の例**

* `高深刻度` — `"10歳です"`, `"12歳です"`, `"小学生です"`, `"子どもです"`
* `中深刻度` — `"15歳です"`, `"17歳です"`, `"高校生です"`, `"未成年です"`
* `低深刻度` — `"19歳です"`, `"まだ21歳じゃない"`, `"法的にお酒は飲めない"`, `"20歳です"`

</details>

<details>

<summary><code>drugs</code> <em>[off | low | medium | high]</em></summary>

違法薬物、規制物質の誤用、または薬物関連行動の推奨に言及する言語を検出します。

**深刻度の分類**

* `高深刻度` — 違法薬物の販売、または入手を手助けする行為
* `中深刻度` — 薬物使用に関する推奨、提案、またはガイダンス
* `低深刻度` — 推奨や指示を伴わない、薬物使用に関する軽い言及や冗談

**深刻度別の例**

* `高深刻度` — `"ウィードを買いたいならDMして"`, `"安く薬を手に入れられるよ"`, `"必要ならコカインを売るよ"`
* `中深刻度` — `"コカインを試してみるべきだよ"`, `"マジックマッシュルームはどうやって手に入れるの？"`, `"一緒にキマろう"`
* `低深刻度` — `"420（笑）"`, `"今ハイだよ"`, `"ウィードっぽい雰囲気"`

</details>

<details>

<summary><code>extremism</code> <em>[off | low | medium | high]</em></summary>

現実世界の過激思想、組織、または大量暴力行為を支持、称賛、正当化、または促進する言語を検出します。これには、現実世界の集団に対する暴力、憎悪、または差別を助長する運動への称賛、プロパガンダ、勧誘、または正当化が含まれます。

**深刻度の分類**

* `高深刻度` — 過激思想、組織、または暴力の促進や擁護
* `中深刻度` — 過激思想や大量暴力の正当化、または正常化
* `低深刻度` — 過激派集団、思想、または歴史的出来事への軽い言及、あるいは支持を伴わない言及

**深刻度別の例**

* `高深刻度` — `"ハイル・ヒトラー"`, `"ユダヤ人に死を"`, `"黒人を殺せ"`, `"KKKに参加しろ"`, `"ISISは正しかった"`, `"またジェノサイドが必要だ"`, `"パレスチナ人は全員排除されるべきだ"`, `"見かけたシオニストを全員殺せ"`, `"ウクライナ人を根絶やしにしろ"`, `"台湾人は叩きつぶされるべきだ"`, `"この国を立て直すには民族浄化が必要だ"`
* `中深刻度` — `"ヒトラーは誤解されていた"`, `"ジェノサイドってそれほど悪くない"`, `"KKKにはいくつか良い考えがあった"`, `"白人至上主義には理屈がある"`, `"ハマスには確かに一理あると思う"`, `"あの攻撃は悪かったけど、なぜ民間人が標的にされたのかは理解できる"`, `"平和のためにはパレスチナ人を一掃する必要があるかもしれない"`, `"イラン人はどうせ力でしか分からない"`, `"ウクライナは国家として抹消されるべきだ"`, `"台湾には存在する資格がない"`, `"ヨーロッパからすべてのムスリムを追放すれば、多くの問題が解決するだろう"`
* `低深刻度` — `"お前はナチだ"`, `"文法警察"`, `"KKKは実在した団体だった"`, `"9/11には多くのテロリストが関与していた"`, `"あいつは独裁者みたいに振る舞う"`

</details>

<details>

<summary><code>gameplay_criticism</code> <em>[off | low | medium | high]</em></summary>

他のプレイヤーのゲーム内でのパフォーマンス、判断、またはスキルについての否定的なコメントを検出します。Verbal Abuse とは異なり、主な焦点はプレイヤー個人の価値ではなく、ゲームプレイにあります。

**深刻度の分類**

* `高深刻度` — ゲームプレイをきっかけにした、侮辱的な個人攻撃へとエスカレートした深刻な暴言
* `中深刻度` — ゲームプレイの出来を軸にした個人攻撃
* `低深刻度` — 強い個人攻撃を伴わない、競争的なやり取りやゲームプレイへの軽い不満

**深刻度別の例**

* `高深刻度` — `"このゲームじゃお前は価値のないクソだ"`, `"毎試合ほんと役立たずだ"`, `"ランク戦では完全に人間のクズだ"`, `"お前のプレイは完全にクソみたいなバカだ"`
* `中深刻度` — `"役に立たない"`, `"ゴミだ"`, `"クソ初心者め"`, `"ゲームを消せ"`, `"この野郎、手がないみたいなプレイしてる"`
* `低深刻度` — `"これ、下手だね"`, `"エイムを覚えろ"`, `"ひどいプレイだった"`, `"なんでそこで突っ込んだの？"`, `"フィードやめろ、試合を台無しにしてる"`, `"わざと負けにいってるだろ"`, `"マジで、敵をクリックするだけなのになんでそんなに難しいんだ"`

</details>

<details>

<summary><code>identity_harm</code> <em>[off | low | medium | high]</em></summary>

性別以外のアイデンティティ属性に基づいて、個人や集団を貶め、差別し、または標的にする言語を検出します。これには、人種、民族、国籍、宗教、カースト、障害、性的指向、重い病状、年齢、移民ステータスが含まれます。これらの表現は敵対的または安全でない環境を生み、より広範な差別、排除、緊張を助長する可能性があります。

**深刻度の分類**

* `高深刻度` — 保護対象集団に対する蔑称、人間性否定、または暴力の呼びかけ
* `中深刻度` — アイデンティティに基づいて侮辱し、排除し、または否定的な特徴を押し付ける攻撃
* `低深刻度` — 軽度の偏見、固定観念、または何気ないアイデンティティに関する表現

**深刻度別の例**

* `高深刻度` — 人種差別的スラング、 `"ゲイなんて嫌いだ"`, `"ムスリムは死ぬべきだ"`, `"［人種］はみんな動物だ"`
* `中深刻度` — `"移民がここを台無しにしている"`, `"ムスリムは信用できない"`, `"ゲイは気持ち悪い"`
* `低深刻度` — `"それ、超ゲイだな"`, `"アジア人なら数学得意なんでしょ"`, `"おい、自閉症みたいに振る舞ってるぞ"`, `"お前ゲイだろ"`

</details>

<details>

<summary><code>links</code> <em>[off | medium | high]</em></summary>

外部リンクを含むメッセージを検出し、プレイヤーが不適切なサイト、広告、詐欺、その他の有害となり得るコンテンツを共有するのを防ぎます。

`medium` 一般的な不適切コンテンツや成人向けコンテンツに関連するURLをフィルタします。 `high` すべてのURLをフィルタします。

</details>

<details>

<summary><code>minor_safety</code> <em>[off | low | medium | high]</em></summary>

未成年を危険にさらす可能性のある、グルーミング行為、捕食的意図、未成年の性的対象化、あるいは子どもを搾取・操作・危険にさらそうとする試みを示す言語を検出します。これには、子どもの搾取や性的虐待への言及も含まれますが、本人による開示や潜在的被害者の発言は除外します。このカテゴリは、会話内に未成年が存在するかどうかにかかわらず、未成年へのリスクを捉えます。

**深刻度の分類**

* `高深刻度` — 性的搾取、CSAM、または未成年への明示的な性的標的化
* `中深刻度` — グルーミングの兆候や不適切な成人と未成年のやり取り
* `低深刻度` — 境界を試す行為、未成年の安全に関する懸念、または児童搾取や性的虐待への言及

**深刻度別の例**

* `高深刻度` — `"子どもに性的な意味で惹かれる"`, `"子どもには早いうちに性教育を教えるべきだ"`, `"未成年とセックスしたい"`, `"子どものほうが良いパートナーだ"`, `"子どもを虐待するのが好きだ"`, `"cpを10TB持ってる"`, `"未成年の女の子を見るのが待ちきれない"`
* `中深刻度` — `"年齢のわりに大人びてるね"`, `"親には内緒で話してるって言わないで"`, `"親よりも俺のほうが信頼できる"`, `"大人に見られない場所で話そう"`, `"同年代の他の子より大人っぽいね"`
* `低深刻度` — `"彼氏はいるの？"`, `"これは二人だけの秘密にしよう"`, `"どこの学校に通ってるの？"`, `"今、家に一人？"`, `"本当は何歳なの？"`, `"お前は小児性愛者だ"`, `"彼は小児性愛で逮捕された"`, `"グルーミングの標的にされるなんて想像もできない"`

</details>

<details>

<summary><code>offensive_language</code> <em>[off | low | medium | high]</em></summary>

他者に向けられていない罵り言葉、下品な表現、粗野な言葉を検出します。これには、単独の悪態、感情的な爆発、状況・物・ゲーム環境についての露骨な言葉が含まれます。Offensive Language は、対象ではなく口調に関するものです。

**深刻度の分類**

* `高深刻度` — 一般的な表現として使われる、露骨で、過激で、または性的に誇張された罵り言葉
* `中深刻度` — 強烈だが対象を持たない露骨な悪態
* `低深刻度` — 軽い悪態や、反応・強調のために使われるカジュアルな罵り言葉

**深刻度別の例**

* `高深刻度` — `"この気持ち悪いクソ"`, `"このボスはくたばれ"`, `"めちゃくちゃムラムラしてる"`, `"これはポルノ級のゴミだ"`, `"この番組は一体なんなんだよクソが"`
* `中深刻度` — `"なんだよ"`, `"このゲームはクソみたいにバカだ"`, `"めちゃくちゃムカついてる"`, `"これは終わってる"`
* `低深刻度` — `"くそっ"`, `"最高だぜ"`, `"くそ"`, `"ふざけるな"`, `"なんだよ"`, `"やばっ"`

</details>

<details>

<summary><code>pii</code> <em>[off | medium | high]</em></summary>

個人を特定できる情報を含むメッセージを検出します。これには、銀行口座番号、クレジットカード、メールアドレス、電話番号、住所が含まれます。

`medium` 認識されたパターンと文脈に基づき、PIIを含んでいる可能性が高いコンテンツをフィルタします。 `high` 信頼度に関わらず、一般的なPII形式に一致するすべてのコンテンツをフィルタします。

</details>

<details>

<summary><code>real_threat</code> <em>[off | low | medium | high]</em></summary>

現実世界での暴力を実行する、信憑性があり、深刻で、実行可能性のある計画や意図を示す言語を検出します。これには、武器、爆発物、学校、職場、公共の場、組織、またはゲームの文脈外にいる個人に関わる脅しが含まれます。一般的な Violence とは異なり、Real Threat は意図、計画、実行能力、切迫性を示し、緊急のエスカレーションが必要となる場合があります。

**深刻度の分類**

* `高深刻度` — 現実世界の暴力に対する直接的、信憑性のある、または差し迫った脅し
* `中深刻度` — 計画、実行能力、標的を示唆する曖昧、懸念のある、または準備的な発言
* `低深刻度` — 実行可能な詳細を伴わない、推測的または信憑性のない暴力的発言

**深刻度別の例**

* `高深刻度` — `"明日この学校に爆弾を仕掛けるつもりだ"`, `"朝、キャンパスに銃を持っていく"`, `"職場で銃乱射するつもりだ"`, `"今、パイプ爆弾を作ってる"`, `"あのイベントにいる全員を殺すつもりだ"`
* `中深刻度` — `"家にある物で爆弾を作る方法を知っている"`, `"やろうと思えば学校に銃を持っていける"`, `"明日、大きなことをすることを考えている"`, `"うちの学校の連中はもうすぐ安全じゃなくなる"`
* `低深刻度` — `"ここを爆破するやつがいてもおかしくないな（笑）"`, `"全部吹き飛ばしたい気分だ"`, `"誰かがサーバーを乱射する想像をしてみろよ"`

</details>

<details>

<summary><code>scam</code> <em>[off | low | medium | high]</em></summary>

だまし、なりすまし、または詐欺的な手口によって、金銭、デジタル資産、アカウント、機密情報を得ようとするメッセージを検出します。詐欺は、誤解を招く主張、偽の権威、または操作に頼ってユーザーから価値あるものを引き出します。

**深刻度の分類**

* `高深刻度` — フィッシング、なりすまし、または詐欺的な指示による認証情報の窃取や金融詐欺
* `中深刻度` — 金銭、資産、アカウントを得るための詐欺的手口や偽の申し出
* `低深刻度` — 報酬の確約、エクスプロイト、非現実的な機会に関する不審または誤解を招く主張

**深刻度別の例**

* `高深刻度` — `"これはSteamサポートです。アカウント確認のためパスワードを送ってください"`, `"賞品を解除するには、ここにクレジットカードを入力してください"`, `"アカウントを復旧するので、2FAコードを送ってください"`, `"アカウントを確認するにはここにログインしてください。しないとBANされます"`
* `中深刻度` — `"私はゲームのモデレーターです。修正するのでアカウントを送ってください"`, `"スキンを送ってくれたら複製してあげる"`, `"無料報酬を受け取るにはこのサイトにログインしてください"`, `"アイテムを送ってくれたら2倍にして返すよ"`
* `低深刻度` — `"この戦略なら毎回勝てるのが保証されてる"`, `"カジノのアルゴリズムを突破する秘密の方法を見つけた"`, `"このコツを使えばいつでもジャックポットに勝てる"`, `"このサイトは毎日勝てることを保証します"`

</details>

<details>

<summary><code>self_harm_incitement</code> <em>[off | low | medium | high]</em></summary>

他者に自傷や自殺を促進、称賛、あおり、または強要する言語を検出します。これには、直接的な命令、間接的な促し、あるいは自傷の深刻さを軽視するような否定的な発言が含まれます。

**深刻度の分類**

* `高深刻度` — 自傷や自殺を促す、露骨で、手順を示す、または実行可能な扇動
* `中深刻度` — 一般的で露骨でない言葉による直接的な扇動
* `低深刻度` — 自傷や自殺を間接的または暗示的に促す表現

**深刻度別の例**

* `高深刻度` — `"静脈を切れ"`, `"首を吊れ"`, `"この薬を飲めば死ぬ"`, `"自殺する方法はこちら"`, `"失血するまで手首を切れ"`
* `中深刻度` — `"死ね"`, `"kys"`, `"お前は死んだほうがいい"`, `"みんなのために死ね"`, `"もう自分の命を絶て"`
* `低深刻度` — `"ここにいないほうがマシかもしれない"`, `"お前がいなくなっても誰も気にしない"`, `"お前がいないほうが世界は良くなる"`, `"そのまま永遠に消えろ"`

</details>

<details>

<summary><code>sexual_content</code> <em>[off | low | medium | high]</em></summary>

他のプレイヤーに向けられていない性的な言葉、言及、描写を検出します。これには、ほのめかし、露骨な内容、一般的な性の話題や自分自身についての性的な発言が含まれます。

**深刻度の分類**

* `高深刻度` — 特定の対象を持たずに広く共有される、露骨または過激な性的内容
* `中深刻度` — 他のユーザーを対象にしていない露骨な性的表現
* `低深刻度` — 対象のない軽い性的言及やほのめかし

**深刻度別の例**

* `高深刻度` — 露骨な性行為を詳細に描写すること、ハードコアなポルノ談義、露骨な性的空想
* `中深刻度` — `"彼らは一晩中やってた"`, `"ムラムラしてる"`, `"セックスしたい"`, `"彼はフェラの話をしていた"`, `"その映画にはフェラのシーンがたくさんあった"`
* `低深刻度` — `"セクシーなプレイ"`, `"大きなペニス"`, `"やば、あれは最高に気持ちよかった"`, `"このキャラに惚れ込んでる"`, `"それ、彼女が言ってたやつ"`, `"ポルノはやばい"`

</details>

<details>

<summary><code>sexual_harassment</code> <em>[off | low | medium | high]</em></summary>

特定の人物またはその家族に向けられた性的な言葉や行動を検出します。これには、性的なコメント、誘い、性的な侮辱、または対象を性的対象化し、モノ化し、圧力をかけ、貶める侮辱的な言葉が含まれます。

**深刻度の分類**

* `高深刻度` — 明示的な性的暴力を伴わず、個人に向けられた強要的または性的に卑下する言葉
* `中深刻度` — 個人またはその家族に向けられた露骨な性的誘い、または性的にした発言
* `低深刻度` — 性的な侮辱、口説き、または性的な性質を持つ軽い直接的コメント

**深刻度別の例**

* `高深刻度` — `"ヌードを送れ、さもないと"`, `"お前のヌードをみんなにばらまく"`, `"お前は俺にセックスを返す義務がある"`, `"お前は俺のかわいいビッチだ"`, `"俺のために自分を触って"`
* `中深刻度` — `"お前とヤりたい"`, `"胸を見せろ"`, `"会ってヤろう"`, `"お前の母親とヤる"`, `"体を見せろ"`, `"上半身裸の写真を送れ"`
* `低深刻度` — `"セクシーだね"`, `"くそ、めちゃくちゃイケてる"`, `"付き合いたい"`, `"正直かわいい"`, `"お前は寝取られ男だ"`, `"お前の母ちゃん、イケてる"`, `"お前の妹とヤる"`

</details>

<details>

<summary><code>sexual_violence</code> <em>[off | low | medium | high]</em></summary>

暴力、強制、同意の欠如を伴う性行為を言及、脅迫、称賛、または描写する性的な言葉を検出します。これには、特定の相手に向けた発言と一般的な発言の両方が含まれます。

**深刻度の分類**

* `高深刻度` — グラフィックな、露骨な、または実行可能な性的暴力
* `中深刻度` — 性的暴力の常態化または容認
* `低深刻度` — 直接的ではない性的暴力への言及

**深刻度別の例**

* `高深刻度` — `"お前をレイプしてやる"`, `"お前を押さえつけて無理やり犯す"`, `"彼女を性的に拷問したい"`, `"お前を血が出るまで犯してやる"`, `"彼女はレイプされて当然だった"`, `"お前の金玉を切り落として血が流れるのを見る"`
* `中深刻度` — `"レイプは人を更生させる"`, `"彼らは性的に罰せられるべきだ"`, `"私たちはレイプされた"`, `"浮気者は去勢されるべきだ"`
* `低深刻度` — `"レイプは社会の至る所にある"`, `"この物語は性的暴行について語っている"`, `"その筋書きにはレイプが含まれている"`

</details>

<details>

<summary><code>勧誘</code> <em>[off | low | medium | high]</em></summary>

個人情報を取得しようとする、ユーザーをプラットフォーム外へ誘導する、現実世界の価値を引き出す、または無許可の商業活動を促進しようとするメッセージにフラグを付けます。これには直接的な要求、取引上の提案、勧誘の試み、広告が含まれます。

勧誘は、欺瞞ではなく価値の引き出しややり取りの誘導を意図しているかに着目します。欺瞞は Scam の対象です。

**深刻度の分類**

* `高深刻度` — 無許可の商業活動または直接的な金銭要求、特にプラットフォーム外でのもの
* `中深刻度` — サービス、資産、または外部プラットフォームを伴う商業的または取引上の提案
* `低深刻度` — 軽いプラットフォーム外の依頼や低リスクの宣伝メッセージ

**深刻度別の例**

* `高深刻度` — `"PayPal で100ドルを送って"`, `"先に払ってくれたら、品物を渡す"`, `"電信送金して"`, `"このウォレットに暗号資産を送って"`
* `中深刻度` — `"安いゲームゴールドを売っています"`, `"払ってくれたら、ランク上げを手伝うよ"`, `"私のアカウントを買って"`, `"有料の Discord サーバーに参加して"`, `"スキンを取引したいならDMして"`
* `低深刻度` — `"WhatsApp で話そう"`, `"Discord に追加して"`, `"もっと良いコツが欲しければ、私のページをフォローして"`, `"良いビルドが欲しければ私のチャンネルを見て"`, `"リークは全部 Telegram に載せている"`, `"このサーバーよりこっちの方がいいから参加して"`

</details>

<details>

<summary><code>スパム</code> <em>[off | low | medium | high]</em></summary>

チャットを散らしたり妨げたりする、反復的、無関係、または無意味なメッセージにフラグを付けます。これには高頻度投稿、意味不明な文字列、そして自動化されたまたはボットのような振る舞いが含まれます。

**深刻度の分類**

* `高深刻度` — サイズ、密度、または視覚的インパクトによりチャットを圧倒する、過度の無意味な内容
* `中深刻度` — 短時間での妨害的な頻度または重複
* `低深刻度` — 軽い反復、意味不明な文字列、または低ノイズのスパム

**深刻度別の例**

* `高深刻度` — 巨大な ASCII の壁、絵文字の大量投下、または長いランダム記号列
* `中深刻度` — 以下のいずれかによって発生:
  * 高頻度メッセージング — `10+` メッセージが `5` 秒以内に
  * 完全一致の繰り返し — `3` 同一メッセージが `10` 秒以内に
* `低深刻度` — `"lol lol lol lol lol"`, `"asdfasdfasdf"`, `"😂😂😂😂😂"`, `"hello world hello world hello world"`

</details>

<details>

<summary><code>暴言</code> <em>[off | low | medium | high]</em></summary>

他のユーザーを侮辱し、罵倒し、または貶めたり精神的に傷つけることを意図した言葉にフラグを付けます。これには、知性、能力、外見、または個人的価値への攻撃が含まれます。Identity Hate とは異なり、Verbal Abuse は保護される特性には言及しません。

**深刻度の分類**

* `高深刻度` — 極端な嫌がらせ、侮辱的な攻撃、または非人間化
* `中深刻度` — 怒り、軽蔑、または攻撃性を示す強い個人攻撃
* `低深刻度` — 他のプレイヤーに向けた軽い侮辱やよくある対戦上の煽り

**深刻度別の例**

* `高深刻度` — `"お前は価値のないクソ野郎だ"`, `"お前は完全に人間のゴミだ"`, `"お前は惨めで、ここにお前を望む者は誰もいない"`, `"お前は役立たずのクソみたいな存在だ"`, `"お前は人間以下だ"`, `"お前は生きる価値のないやつだ"`, `"みんなお前を嫌っている"`, `"死ね、負け犬"`, `"お前はただのクソだ"`
* `中深刻度` — `"くたばれ"`, `"黙れこのクソ野郎"`, `"地獄へ落ちろ"`, `"お前はクソったれのろくでなしだ"`, `"クソを食え"`, `"誰もお前のことを好きじゃない"`
* `低深刻度` — `"お前はダメだ"`, `"初心者"`, `"お前は本当に下手だ"`, `"笑 お前はゴミだ"`

</details>

<details>

<summary><code>暴力</code> <em>[off | low | medium | high]</em></summary>

人や集団に対する身体的危害を言及、促進、称賛、または説明する言葉にフラグを付けます。このカテゴリは、必ずしも差し迫った、または信頼できる脅威を構成しない暴力的表現を捉えます。

**深刻度の分類**

* `高深刻度` — グラフィックな、残虐な、またはサディスティックな暴力
* `中深刻度` — 露骨な暴力的危害または、グラフィックな詳細を伴わない支持
* `低深刻度` — 比喩的または文脈的に使われる、直接的でない暴力表現

**深刻度別の例**

* `高深刻度` — `"人が傷ついて悲鳴を上げるのを見るのが大好きだ"`, `"脳みそが床に飛び散るまで頭蓋骨を砕いてやれ"`, `"誰かを切り開いて中身が全部こぼれ出るところを想像してみろ"`, `"あいつを少しずつ引き裂きたい"`, `"あいつらが血を流して死んでいくのを見るのは満足だ"`
* `中深刻度` — `"誰かがお前を殴り倒すべきだ"`, `"殴られて当然だ"`, `"お前をボコボコにしてやる"`, `"傷つけられればいいのに"`, `"いつか痛い目に遭うぞ"`
* `低深刻度` — `"今ラウンドでお前をぶっ潰してやる"`, `"お前らをボロボロにしてやる"`, `"私たちは惨敗した"`, `"あのボスにまたやられた"`

</details>

#### **設定の受け渡し**

1. サンプル JSON (`config.json`)

   ```json
   {
   	"age_disclosure": "オフ",
   	"drugs": "オフ",
   	"extremism": "高",
   	"gameplay_criticism": "高",
   	"identity_harm": "中",
   	"links": "高",
   	"minor_safety": "低",
   	"offensive_language": "高",
   	"pii": "オフ",
   	"real_threat": "高",
   	"scam": "オフ",
   	"self_harm_incitement": "高",
   	"sexual_content": "低",
   	"sexual_harassment": "高",
   	"sexual_violence": "高",
   	"solicitation": "オフ",
   	"spam": "高",
   	"verbal_abuse": "中",
   	"violence": "オフ"
   }
   ```
2. JSON を Base64 エンコードする

   ```bash
   base64 config.json
   ```
3. エンコード済み出力の例

   ```
   <base64 エンコード済みの config.json>
   ```
4. curl リクエストの例

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl --request POST 'https://api.ggwp.com/chat/v3/message' \\
     --header 'x-api-key:&#x3C;API_KEY>' \\
     --header 'Content-Type: application/json' \\
     --header 'x-api-config: &#x3C;base64-encoded config.json>' \\
     --data-raw '{
       "session_id": "match_7765", 
       "message": "クソ知恵遅れがどこにでもいる",
       "user_id": "user989", 
       "username": "nlxdz",
       "timestamp": "2022-01-25 09:44:12"
     }'
   </code></pre>

#### **デフォルト設定**

もし `x-api-config` ヘッダーが提供されない場合:

```json
{
	"age_disclosure": "高",
	"drugs": "高",
	"extremism": "高",
	"gameplay_criticism": "高",
	"identity_harm": "高",
	"links": "高",
	"minor_safety": "高",
	"offensive_language": "高",
	"pii": "高",
	"real_threat": "高",
	"scam": "高",
	"self_harm_incitement": "高",
	"sexual_content": "高",
	"sexual_harassment": "高",
	"sexual_violence": "高",
	"solicitation": "高",
	"spam": "高",
	"verbal_abuse": "高",
	"violence": "高"
}
```

## **パラメータ**

`本文`：以下のフィールドを含む辞書:\
(*utf-8 エンコーディングである必要があります)*

* **session\_id:** 会話チャネルの一意識別子。ゲームプレイのメッセージでは、1試合にわたって展開される会話を識別できます。フォーラムや掲示板では、個別のスレッドや議論を表します。プラットフォームに複数のチャネル種別（例: ロビー、試合、ダイレクトメッセージなど）がある場合は、会話種別ごとのさらなる分析を可能にするため、この情報を session\_id に含めることを推奨します。推奨フォーマットは次のとおりです:

  ```json
    session_id = "channelType_numericID"
  ```
* **message:** 会話中にユーザーが送信したメッセージ。1,000文字を超えることはできません。
* **user\_id:** メッセージを送信したプレイヤーまたはユーザーの一意識別子。
* （任意） **ユーザー名**：ユーザーが選択した親しみやすい表示名を含む文字列。
* （任意） **timestamp**：メッセージが発生した時刻。UTC で、YYYY-MM-DD HH:MM:SS.SSS または YYYY-MM-DD HH:MM:SS 形式です。追加しない場合は、代わりにサーバー側の UTC タイムスタンプが追加されます。
* （任意） **language**：処理するメッセージの言語。省略した場合、API はメッセージ内容と過去のユーザー履歴から言語を検出しようとします。標準的な英語の言語名（例: `"英語"` または `"スペイン語"`）、および ISO 639-1 の2文字の言語コード（例:  `"en"` または `"es"`）。en-US のような完全なロケールタグは `"en-US"`, `"en-GB"`, `"pt-BR"`、および `"es-MX"` 現在はサポートされていません。代わりに `"en"`, `"pt"`、または `"es"` を送信してください。
* （任意） **message\_index**：送信されたメッセージを追跡するための文字列フィールド。出力には `message_details` として渡された場合に含まれます。
* （任意） **message\_url**：メッセージに付与された URL を追跡するための文字列フィールド。http または https スキームのみ有効です。有効で渡された場合、ダッシュボードに表示されます。
* （任意） **metadata**：メッセージに関連付けられたメタデータを追跡するための Dict フィールド。5KB 未満である必要があります。許可されたキーとそれに対応する型のみ有効です。サポートされるキー:

  * channel（文字列）- メッセージが送られる通信空間。例: dm、party、guild、local
  * participants（array\<string>）- チャネルに参加している user\_id
  * map（文字列）- メッセージの発生元となる世界、レベル、または環境の識別子や名前
  * map\_version（文字列）- マップのバージョン識別子。レイアウトなどの変更を追跡するために使用されます。
  * zone（文字列）- より細かな位置情報の文脈に使われる、マップ内の下位区分または名前付き領域
  * coordinates（オブジェクト）- マップまたはゾーン内の空間的位置
    * x（float）- X 軸方向の位置
    * y（float）- Y 軸方向の位置
    * z（float）- Z 軸方向の位置

  例:

  ```json
  {
    "metadata": {
      "channel": "dm",
      "participants": ["user989", "user990"],
      "map":"golden_wasteland",
      "map_version":"2026.03.1",
      "zone":"cacti_forest",
      "coordinates":{
         "x":123.45,
         "y":67.89,
         "z":-10.25
      }
    }
  }
  ```

  注: 追加のメタデータキーもサポート可能です。お客様担当者と連携して、プラットフォームに適用可能な具体的なキーを定義してください。

例:

```json
{
  "session_id": "match_7765",
  "message": "クソ知恵遅れがどこにでもいる",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}
```

呼び出し例:

```bash
curl --request POST 'https://api.ggwp.com/chat/v3/message' \\
--header 'x-api-key: api_key' \\
--header 'Content-Type: application/json' \\
--data-raw '{
  "session_id": "match_7765",
  "message": "クソ知恵遅れがどこにでもいる",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}'
```

## **出力**

#### 200 応答

以下の最上位フィールドを持つ JSON オブジェクトを返します:

<details>

<summary><code>message_details</code></summary>

入力ペイロードに対するメッセージ単位のモデレーション結果。

* `メッセージID` — メッセージに割り当てられた一意識別子
* `元のメッセージ` — ユーザーが送信した生のメッセージ
* `フラグ` — `true` メッセージがいずれかの設定済みカテゴリでフラグ付けされた場合
* `深刻度` — メッセージに割り当てられる全体的な重大度。可能な値: `なし`, `非常に低い`, `low`, `medium`, `high`, `非常に高い`、および `カスタム`
  * `カスタム` は、GGWP がメッセージにフラグを付けないものの、クライアントのカスタムブロックリストの用語に該当した場合に使用されます
* `信頼度` — メッセージ全体の検出に対する信頼度レベル。可能な値: `なし`, `low`, `medium`、または `high`
* `フィルタ済みメッセージ` — フラグが付いた用語をフィルタリングしたメッセージの版
  * スペースで区切られる英語のような言語では、単語全体がフィルタされます。例: `お前はクソ野郎だ` → `お前は *****`
  * 明確な単語境界のない言語では、検出された語句のみがフィルタされます。例: `좆까고 있네` → `*****고 있네`
* `recommended_message` — クライアントへの表示に推奨されるメッセージ版。アクティブなユーザーでは、これは既定で `フィルタ済みメッセージ`。ミュートされたユーザーでは、これは空文字列です
* `language` — メッセージの検出言語
* `フラグ付きカテゴリ` — メッセージ内で見つかったカテゴリ検出の一覧。各項目には次が含まれます:
  * `カテゴリ` — 検出されたコンテンツに割り当てられたカテゴリ
  * `カテゴリの重大度` — その検出に対するカテゴリ固有の重大度。可能な値: `なし`, `low`, `medium`、または `high`
    * 一部のカテゴリは重大度を伴わずにフラグ付けされることがあります。その場合、 `カテゴリの重大度` は `なし`
* `カスタムフラグ` — `true` メッセージにカスタムブロックリストの用語が含まれている場合

</details>

<details>

<summary><code>プレイヤー詳細</code></summary>

以下の `user_id` 現在の `session_id`.

* `user_id` — ユーザーの一意識別子
* `ユーザー名` — ユーザーの表示名
* `メッセージ数` — セッション内でユーザーが送信したメッセージの総数
* `インシデント数` — ユーザーに関連付けられたインシデントの総数
* `累積ムード` — ユーザーのメッセージ全体にわたる総合感情スコア
* `最小ムード` — ユーザーのメッセージで観測された最も低い感情値
* `最大ムード` — ユーザーのメッセージで観測された最も高い感情値
* `評判スコア` — これまでの行動から導出された総合評判スコア
* `言語` — ユーザーのメッセージから検出された言語
* `ユーザー状態` — ユーザーに現在適用されているモデレーション状態
  * `状態` — 現在適用中のモデレーション状態。例えば `アクティブ` または `ミュート`
  * `有効期限` — 現在のモデレーション状態が期限切れになる時刻

</details>

<details>

<summary><code>会話サマリー</code></summary>

以下の `session_id`.

* `開始時刻` — 会話セッションが開始されたタイムスタンプ
* `セッション継続時間` — 会話全体の継続時間（秒）
* `メッセージ数` — 会話内のメッセージ総数
* `参加者数` — 会話内のユーザー総数
* `インシデント数` — 会話で検出されたインシデントの総数
* `会話のムード` — 会話全体の感情スコア

</details>

<details>

<summary><code>推奨事項</code></summary>

以下をキーとする推奨モデレーション操作 `user_id`。各 `user_id` は推奨オブジェクトの配列に対応します。

* `<user_id>[].action` — 推奨されるモデレーション操作。例えば `ミュート`
* `<user_id>[].trigger_message` — 推奨を引き起こした問題のあるメッセージ
* `<user_id>[].trigger_time` — トリガーとなったメッセージのタイムスタンプ
* `<user_id>[].duration` — このアクションが有効であるべき継続時間（秒）

</details>

出力例:

```json
{
  "message_details": {
    "message_id": "20220602164902.482311-946bb8a9-0766-4c31-995a-d910da8531e5",
    "original_message": "くそ野郎どもがそこらじゅうにいる",
    "flag": true,
    "severity": "中",
    "confidence": "高",
    "filtered_message": "*****",
    "recommended_message": "",
    "language": "英語",
    "flagged_categories": [
      {
        "category": "アイデンティティへの危害",
        "category_severity": "中"
      },
      {
        "category": "攻撃的な言葉",
        "category_severity": "高"
      }
    ],
    "custom_flag": false
  },
  "player_details": {
    "user_id": "user989",
    "username": "nlxdz",
    "num_messages": 11,
    "num_incidents": 6,
    "cumulative_mood": 0.748,
    "min_mood": 0.0,
    "max_mood": 0.8615,
    "reputation_score": 245,
    "languages": [
      "英語"
    ],
    "user_status": {
      "status": "ミュート中",
      "expiry_at": "2022-06-03 16:49:00"
    }
  },
  "conversation_summary": {
    "start_time": "2022-05-27 16:53:03",
    "session_duration": 59,
    "num_messages": 46,
    "num_participants": 3,
    "num_incidents": 16,
    "conversation_mood": 0.9816
  },
  "recommendations": {
    "user989": [
      {
        "action": "ミュート",
        "trigger_message": "バカなクソ野郎",
        "trigger_time": "2022-06-02 16:49:00",
        "duration": 86400
      }
    ]
  }
}
```

#### エラーレスポンス

<details>

<summary><code>400</code> — 無効または不正な形式のリクエスト</summary>

考えられる原因:

* 不正なJSON入力
* 無効なヘッダー
* `metadata` 5 KBを超えている
* `metadata` 許可されていないキーが含まれている
* 無効 `x-api-config`
* `x-api-config` 許可されていないキーが含まれている
* 必須フィールドが不足しています: `user_id`, `session_id`, `メッセージ`
* 無効な入力形式。たとえば、無効なタイムスタンプや文字数制限を超えるメッセージなど。

</details>

<details>

<summary><code>403</code> — 無効または欠落しているAPIキー</summary>

リクエストを認証できませんでした。

</details>

<details>

<summary><code>500</code> — サーバー内部エラー</summary>

予期しないサーバー側のエラーにより、リクエストは失敗しました。

</details>
