> 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/kr/api/standard-package/api-v3.md).

# 채팅 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`)

심각도 기반 카테고리의 경우, 민감도는 차단되는 심각도 수준을 제어합니다:

* `끔` — 해당 카테고리는 필터링하지 않음
* `낮음` — 필터링 `높음` 심각도만
* `중간` — 필터링 `중간` 및 `높음` 심각도
* `높음` — 필터링 `낮음`, `중간`, 그리고 `높음` 심각도

민감도는 심각도와 반비례합니다. 민감도가 높을수록 더 많은 콘텐츠가 차단됩니다.

#### 지원되는 카테고리

<details>

<summary><code>나이 공개</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

사용자가 나이를 명시적 또는 암시적으로 드러내는 메시지를 표시합니다. 이 카테고리는 유해 의도 탐지보다는 연령 인지형 안전 제어를 지원하는 정보성 항목입니다.

**심각도 분류체계**

* `높은 심각도` — 사용자가 미만임을 시사하는 표현 `13`
* `중간 심각도` — 사용자가 미만임을 시사하는 표현 `18` 하지만 최소한 `13`
* `낮은 심각도` — 사용자가 미만임을 시사하는 표현 `21`

**심각도별 예시**

* `높은 심각도` — `"나는 10살이야"`, `"나는 12살이야"`, `"나는 초등학교 다녀"`, `"나는 어린애야"`
* `중간 심각도` — `"나는 15살이야"`, `"나는 17살이야"`, `"나는 고등학교 다녀"`, `"나는 미성년자야"`
* `낮은 심각도` — `"나는 19살이야"`, `"나는 아직 21살이 아니야"`, `"나는 법적으로 술을 못 마셔"`, `"나는 20살이야"`

</details>

<details>

<summary><code>마약</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

불법 약물, 규제 약물의 오남용, 또는 약물 관련 행동을 조장하는 언어를 표시합니다.

**심각도 분류체계**

* `높은 심각도` — 불법 약물을 판매하거나 접근을 돕는 행위
* `중간 심각도` — 약물 사용에 대한 조장, 제안 또는 안내
* `낮은 심각도` — 조장이나 지시 없이 약물 사용에 대한 가벼운 언급이나 농담

**심각도별 예시**

* `높은 심각도` — `"대마 사려면 나한테 DM 보내"`, `"알약 싸게 구해줄 수 있어"`, `"필요하면 코카인 팔아"`
* `중간 심각도` — `"너 코카인 한번 해봐"`, `"버섯은 어떻게 구해?"`, `"같이 취하자"`
* `낮은 심각도` — `"420 ㅋㅋ"`, `"지금 취했어"`, `"대마초 분위기"`

</details>

<details>

<summary><code>극단주의</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

현실 세계의 극단주의 이념, 조직 또는 대규모 폭력 행위를 지지, 미화, 정당화, 또는 조장하는 언어를 표시합니다. 여기에는 현실 세계의 집단에 대한 폭력, 증오, 차별을 조장하는 운동에 대한 찬양, 선전, 모집, 또는 정당화가 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 극단주의 이념, 조직 또는 폭력의 조장 또는 옹호
* `중간 심각도` — 극단주의 이념 또는 대규모 폭력의 정당화 또는 정상화
* `낮은 심각도` — 극단주의 집단, 이념 또는 역사적 사건에 대한 가벼운 언급이나 지지 없는 언급

**심각도별 예시**

* `높은 심각도` — `"하일 히틀러"`, `"유대인들에게 죽음을"`, `"흑인들을 죽여"`, `"KKK에 가입해"`, `"ISIS가 옳았어"`, `"우린 또 다른 집단학살이 필요해"`, `"팔레스타인인들은 전부 제거되어야 해"`, `"보이는 시온주의자는 전부 죽여"`, `"우크라이나인을 전부 없애버려"`, `"대만 사람들은 짓밟혀야 해"`, `"이 나라를 바로잡으려면 인종 청소가 필요해"`
* `중간 심각도` — `"히틀러는 오해받았어"`, `"집단학살이 그렇게 나쁜 건 아니야"`, `"KKK에도 괜찮은 아이디어가 좀 있었어"`, `"백인 민족주의는 일리가 있어"`, `"나는 하마스가 정말 일리가 있다고 생각해"`, `"그 공격들은 나빴지만, 민간인이 표적이 된 이유는 이해해"`, `"아마 팔레스타인인들을 없애야 평화가 올지도 몰라"`, `"어차피 이란 사람들은 힘밖에 몰라"`, `"우크라이나는 그냥 국가로서 사라져야 해"`, `"대만은 존재할 자격이 없어"`, `"유럽에서 무슬림을 전부 추방하면 많은 게 해결될 거야"`
* `낮은 심각도` — `"너 나치야"`, `"문법 나치"`, `"KKK는 실제 존재했던 단체야"`, `"9/11에는 테러리스트가 많이 관여했어"`, `"저 사람은 독재자처럼 행동해"`

</details>

<details>

<summary><code>게임 플레이 비판</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

다른 플레이어의 게임 내 성과, 판단, 또는 실력에 대한 부정적인 발언을 표시합니다. Verbal Abuse와 달리, 주된 초점은 플레이어 개인이 아니라 게임 플레이입니다.

**심각도 분류체계**

* `높은 심각도` — 게임 플레이로 촉발되어 인신공격으로 격화된 심한 언어폭력
* `중간 심각도` — 게임 플레이 성과를 중심으로 한 인신공격
* `낮은 심각도` — 강한 인신공격 없이 게임 플레이에 대한 경쟁적 농담 또는 가벼운 불만

**심각도별 예시**

* `높은 심각도` — `"너는 이 게임에서 쓸모없는 개쓰레기야"`, `"너는 매판마다 진짜 존나 쓸모없어"`, `"랭크에서 넌 완전 인간 쓰레기야"`, `"너는 완전 빌어먹을 바보처럼 플레이해"`
* `중간 심각도` — `"너는 쓸모없어"`, `"너는 쓰레기야"`, `"너는 씨발 뉴비야"`, `"게임 삭제해"`, `"이 놈은 손이 없는 것처럼 플레이하네"`
* `낮은 심각도` — `"너는 이걸 못해"`, `"조준하는 법부터 배워"`, `"그건 정말 형편없는 플레이였어"`, `"왜 거길 밀어붙였어?"`, `"던지지 마, 매치를 망치고 있어"`, `"너 지금 던지고 있어"`, `"씨발 적을 클릭하는 게 그렇게 어렵냐"`

</details>

<details>

<summary><code>정체성 혐오</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

성별이 아닌 정체성 속성을 기준으로 개인 또는 집단을 비하, 차별, 또는 표적으로 삼는 언어를 표시합니다. 여기에는 인종, 민족성, 국적, 종교, 카스트, 장애, 성적 지향, 중대한 질병, 연령, 이민 신분이 포함됩니다. 이러한 표현은 적대적이거나 안전하지 않은 환경을 만들고, 더 넓은 차원의 차별, 배제, 또는 긴장을 강화할 수 있습니다.

**심각도 분류체계**

* `높은 심각도` — 보호 대상 집단에 대한 비하 표현, 비인간화, 또는 폭력 선동
* `중간 심각도` — 비하, 배제, 또는 부정적 특성을 부여하는 정체성 기반 공격
* `낮은 심각도` — 가벼운 편견, 고정관념, 또는 가벼운 정체성 기반 표현

**심각도별 예시**

* `높은 심각도` — 인종 비하 표현, `"나는 게이가 싫어"`, `"무슬림들은 죽어야 해"`, `"모든 [인종]은 짐승이야"`
* `중간 심각도` — `"이민자들이 이곳을 망치고 있어"`, `"무슬림은 믿을 수 없어"`, `"게이들은 역겨워"`
* `낮은 심각도` — `"그거 완전 게이 같아"`, `"너희 아시아인들은 수학을 잘하겠네"`, `"야, 너 자폐처럼 행동하네"`, `"너는 게이야"`

</details>

<details>

<summary><code>링크</code> <em>[끔 | 중간 | 높음]</em></summary>

플레이어가 부적절한 웹사이트, 광고, 사기, 또는 기타 잠재적으로 유해한 콘텐츠를 공유하지 못하도록 외부 링크가 포함된 메시지를 표시합니다.

`중간` 일반적인 부적절하거나 성인용 콘텐츠와 관련된 URL을 필터링합니다. `높음` 모든 URL을 필터링합니다.

</details>

<details>

<summary><code>미성년자 안전</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

미성년자를 대상으로 한 그루밍 행위, 성적 착취 의도, 성적 대상화, 또는 아동을 착취·조작·위험에 빠뜨리려는 시도를 나타내는 언어를 표시합니다. 여기에는 1인칭 공개나 잠재적 피해자의 진술을 제외한 아동 착취 또는 성적 학대에 대한 언급도 포함됩니다. 이 카테고리는 대화에 미성년자가 존재하는지 여부와 관계없이 미성년자에 대한 위험을 포착합니다.

**심각도 분류체계**

* `높은 심각도` — 성적 착취, CSAM, 또는 미성년자에 대한 명시적 성적 표적화
* `중간 심각도` — 그루밍 신호 또는 부적절한 성인-미성년자 상호작용
* `낮은 심각도` — 경계 시험, 미성년자 안전 우려, 또는 아동 착취나 성적 학대에 대한 언급

**심각도별 예시**

* `높은 심각도` — `"나는 어린애들을 성적으로 좋아해"`, `"아이들에게는 성을 일찍 가르쳐야 해"`, `"미성년자랑 자고 싶어"`, `"아이들이 더 나은 파트너야"`, `"나는 아이들을 학대하는 걸 즐겨"`, `"나는 아동 성착취물 10TB를 가지고 있어"`, `"미성년자 여자애들을 빨리 보고 싶어"`
* `중간 심각도` — `"너는 나이에 비해 성숙하네"`, `"우리가 대화하는 걸 부모님께 말하지 마"`, `"너는 부모님보다 나를 더 믿어도 돼"`, `"어른들이 못 보는 곳에서 이야기하자"`, `"너는 또래 아이들보다 더 나이 들어 보인다"`
* `낮은 심각도` — `"남자친구 있어?"`, `"이건 우리끼리 비밀로 하자"`, `"어느 학교 다녀?"`, `"집에 혼자 있어?"`, `"진짜 몇 살이야?"`, `"너는 소아성애자야"`, `"그는 소아성애로 체포됐다"`, `"그루밍의 표적이 되는 건 상상도 안 돼"`

</details>

<details>

<summary><code>모욕적 언어</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

다른 사람을 향하지 않은 욕설, 저속한 표현, 또는 거친 용어를 표시합니다. 여기에는 독립적인 욕설, 감정적 분출, 또는 상황, 물체, 게임 환경에 대한 노골적인 언어가 포함됩니다. 모욕적 언어는 대상이 아니라 어조에 관한 것입니다.

**심각도 분류체계**

* `높은 심각도` — 일반적인 표현으로 쓰인 노골적, 극단적, 또는 성적으로 과장된 욕설
* `중간 심각도` — 대상은 아니지만 강도가 높은 명시적 욕설
* `낮은 심각도` — 반응하거나 강조하기 위해 쓰인 가벼운 욕설 또는 일상적 비속어

**심각도별 예시**

* `높은 심각도` — `"이 더러운 좆같은 거 다 꺼져"`, `"이 보스는 좆까라 그래"`, `"엄청나게 꼴려"`, `"이건 포르노 수준의 쓰레기야"`, `"이 쇼는 대체 씨발 뭐야"`
* `중간 심각도` — `"씨발 뭐야"`, `"이 게임은 존나 멍청해"`, `"엄청 빡쳤어"`, `"이건 완전 좆됐어"`
* `낮은 심각도` — `"젠장"`, `"당연하지"`, `"젠장"`, `"이건 헛소리야"`, `"대체 뭐야"`, `"세상에 맙소사"`

</details>

<details>

<summary><code>개인 식별 정보</code> <em>[끔 | 중간 | 높음]</em></summary>

개인 식별 정보가 포함된 메시지를 표시합니다. 여기에는 은행 계좌 번호, 신용카드, 이메일 주소, 전화번호, 실제 주소가 포함됩니다.

`중간` 인식된 패턴과 맥락을 바탕으로 PII가 포함된 것으로 강하게 보이는 콘텐츠를 필터링합니다. `높음` 신뢰도와 관계없이 일반적인 PII 형식과 일치하는 모든 콘텐츠를 필터링합니다.

</details>

<details>

<summary><code>실제 위협</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

현실 세계의 폭력을 저지르려는 신빙성 있고 심각하거나 실행 가능한 계획 또는 의도를 나타내는 언어를 표시합니다. 여기에는 무기, 폭발물, 학교, 직장, 공공장소, 조직, 또는 게임 맥락 밖의 개인과 관련된 위협이 포함됩니다. 일반적인 폭력과 달리, 실제 위협은 의도, 계획, 실행 가능성, 또는 임박성을 드러내며 긴급한 에스컬레이션이 필요할 수 있습니다.

**심각도 분류체계**

* `높은 심각도` — 현실 세계 폭력에 대한 직접적이고 신빙성 있거나 임박한 위협
* `중간 심각도` — 계획, 실행 가능성, 또는 표적을 시사하는 모호하거나 우려스러운, 혹은 준비 단계의 발언
* `낮은 심각도` — 실행 가능한 세부 정보가 없는 추상적이거나 신빙성 없는 폭력적 발언

**심각도별 예시**

* `높은 심각도` — `"내일 이 학교를 폭파할 계획이야"`, `"아침에 캠퍼스에 총을 가져갈 거야"`, `"직장에서 총기 난사를 할 거야"`, `"지금 파이프 폭탄을 만들고 있어"`, `"그 행사에 있는 사람들을 전부 죽일 거야"`
* `중간 심각도` — `"생활용품으로 폭탄 만드는 법 알아"`, `"원하면 학교에 총을 가져갈 수도 있어"`, `"내일 뭔가 큰일을 할 생각을 하고 있었어"`, `"우리 학교 사람들은 곧 안전하지 못할 거야"`
* `낮은 심각도` — `"누가 이곳에 폭탄을 설치할 수도 있겠네 ㅋㅋ"`, `"모든 걸 날려버리고 싶은 기분이야"`, `"누가 서버에서 총기 난사를 한다고 상상해봐"`

</details>

<details>

<summary><code>사기</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

기만, 사칭, 또는 사기성 수법을 통해 돈, 디지털 자산, 계정, 또는 민감한 정보를 얻으려는 메시지를 표시합니다. 사기는 오해를 유도하는 주장, 가짜 권위, 또는 조작에 의존해 사용자가 가치를 넘기도록 속입니다.

**심각도 분류체계**

* `높은 심각도` — 피싱, 사칭, 또는 사기성 지시를 통한 자격 증명 탈취나 금융 사기
* `중간 심각도` — 돈, 자산, 또는 계정을 얻기 위해 사용되는 사기성 수법이나 가짜 제안
* `낮은 심각도` — 보장된 보상, 악용법, 또는 비현실적인 기회에 대한 의심스럽거나 오해를 유도하는 주장

**심각도별 예시**

* `높은 심각도` — `"여기는 Steam 지원입니다. 계정을 인증하려면 비밀번호를 보내세요"`, `"상품을 받으려면 여기에 신용카드를 입력하세요"`, `"계정을 복구할 수 있게 2FA 코드를 보내줘"`, `"계정을 확인하려면 여기 로그인하세요. 그렇지 않으면 정지됩니다"`
* `중간 심각도` — `"나는 게임 관리자야. 고칠 수 있게 계정을 보내줘"`, `"스킨을 보내주면 복제해줄게"`, `"무료 보상을 받으려면 이 사이트에 로그인하세요"`, `"아이템을 보내주면 두 배로 만들어줄게"`
* `낮은 심각도` — `"이 전략이면 항상 이길 수 있어"`, `"카지노 알고리즘을 이기는 비밀 방법을 찾았어"`, `"이 꼼수를 쓰면 잭팟을 항상 딸 수 있어"`, `"이 사이트는 매일 당첨을 보장합니다"`

</details>

<details>

<summary><code>자해 조장</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

다른 사람에게 자해나 자살을 하도록 장려, 조장, 미화, 또는 압박하는 언어를 표시합니다. 여기에는 직접적인 명령, 간접적인 장려, 또는 자해의 심각성을 축소하는 경시 발언이 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 자해 또는 자살에 대한 노골적, 교육적, 또는 실행 가능한 조장
* `중간 심각도` — 흔하고 비노골적인 언어를 사용한 직접적 조장
* `낮은 심각도` — 자해 또는 자살에 대한 간접적 또는 암시적 장려

**심각도별 예시**

* `높은 심각도` — `"정맥을 그어"`, `"목매달아"`, `"이 약들을 먹으면 죽을 거야"`, `"자살하는 방법은 이거야"`, `"피가 다 빠질 때까지 손목을 그어"`
* `중간 심각도` — `"가서 자살해"`, `"kys"`, `"너는 자살하는 게 좋겠어"`, `"모두를 위해 죽어줘"`, `"그만 네 삶을 끝내"`
* `낮은 심각도` — `"여기 없는 편이 더 나을지도 몰라"`, `"네가 사라져도 아무도 신경 쓰지 않을 거야"`, `"세상은 네가 없으면 더 나을 거야"`, `"그냥 영원히 사라지는 게 좋겠어"`

</details>

<details>

<summary><code>성적 콘텐츠</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

다른 플레이어를 향하지 않은 성적 언어, 언급, 또는 묘사를 표시합니다. 여기에는 일반적으로 또는 자기 자신에 대해 표현된 노골적인 내용, 암시적 표현, 성적 대화가 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 특정 대상 없이 널리 공유되는 노골적이거나 극단적인 성적 콘텐츠
* `중간 심각도` — 다른 사용자에게 향하지 않은 명시적 성적 언어
* `낮은 심각도` — 대상이 없는 가벼운 성적 언급이나 암시

**심각도별 예시**

* `높은 심각도` — 노골적인 성행위를 자세히 묘사하거나, 하드코어 포르노 이야기, 노골적인 성적 환상
* `중간 심각도` — `"그들은 밤새 섹스했어"`, `"꼴려"`, `"섹스하고 싶어"`, `"그는 자지 빠는 얘기를 하고 있었어"`, `"그 영화엔 블로우잡 장면이 많았어"`
* `낮은 심각도` — `"섹시한 플레이"`, `"큰 자지"`, `"와, 그건 오르가즘 같았어"`, `"난 이 캐릭터한테 심하게 빠졌어"`, `"그게 그녀가 한 말이야"`, `"포르노는 진짜 별나"`

</details>

<details>

<summary><code>성희롱</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

특정 개인이나 그 가족을 대상으로 한 성적 언어 또는 행동을 표시합니다. 여기에는 성적 발언, 성적 제안, 성적 비하 발언, 또는 대상을 성적으로 대상화·물화·압박·비하하는 언어가 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 명시적 성폭력은 없지만, 사람을 대상으로 한 강압적이거나 성적으로 비하하는 언어
* `중간 심각도` — 사람이나 그 가족을 대상으로 한 명시적 성적 제안 또는 성적 발언
* `낮은 심각도` — 성적 비하 발언, 추파, 또는 성적인 성격의 가벼운 직접적 발언

**심각도별 예시**

* `높은 심각도` — `"노출 사진 보내, 아니면"`, `"네 누드 사진을 모두에게 퍼뜨릴 거야"`, `"너는 나한테 섹스를 빚졌어"`, `"넌 내 작은 걸레야"`, `"나 위해 자위해"`
* `중간 심각도` — `"너랑 섹스하고 싶어"`, `"가슴 보여줘"`, `"우리 만나서 자자"`, `"네 엄마랑 자겠다"`, `"몸 좀 보여줘"`, `"상반신 노출 사진 보내줘"`
* `낮은 심각도` — `"너 섹시해"`, `"와, 너 진짜 섹시해 보여"`, `"너랑 사귈 수 있어"`, `"솔직히 너 귀엽다"`, `"넌 쿠크야"`, `"네 엄마는 핫해"`, `"네 여동생이랑 자고 싶어"`

</details>

<details>

<summary><code>성적 폭력</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

폭력, 강제, 강압, 또는 동의 부재가 수반되는 성적 행위를 언급, 협박, 미화, 또는 묘사하는 성적 언어를 표시합니다. 여기에는 대상이 특정된 진술과 일반적인 진술이 모두 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 도식적, 노골적 또는 실행 가능한 성폭력
* `중간 심각도` — 성폭력의 정상화 또는 지지
* `낮은 심각도` — 성폭력에 대한 비도식적 언급

**심각도별 예시**

* `높은 심각도` — `"너를 강간할 거야"`, `"널 눌러서 억지로 덮칠 거야"`, `"그녀를 성적으로 고문하고 싶어"`, `"네가 피를 흘릴 때까지 널 계속 박아버릴 거야"`, `"그녀는 강간당해도 쌌다"`, `"네 고환을 잘라내고 네가 피 흘리는 걸 지켜볼 거야"`
* `중간 심각도` — `"강간은 사람을 고친다"`, `"그들은 성적으로 처벌받아야 해"`, `"우린 방금 강간당했어"`, `"바람피운 놈들은 거세해야 해"`
* `낮은 심각도` — `"강간은 사회 곳곳에 존재한다"`, `"이 이야기는 성폭력을 다룬다"`, `"그 플롯에는 강간이 포함된다"`

</details>

<details>

<summary><code>호객 행위</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

개인 정보를 얻으려 하거나, 사용자를 플랫폼 밖으로 유도하거나, 현실 세계의 가치를 빼내거나, 승인되지 않은 상업 활동을 홍보하려는 메시지를 표시합니다. 여기에는 직접적인 요청, 거래 제안, 모집 시도, 광고가 포함됩니다.

호객 행위는 가치 추출이나 상호작용 유도 의도에 초점을 맞추며, 속임수는 Scam 범주에 해당합니다.

**심각도 분류체계**

* `높은 심각도` — 플랫폼 밖의 무단 상업 활동 또는 직접적인 금전 요청, 특히 플랫폼 밖에서
* `중간 심각도` — 서비스, 자산 또는 외부 플랫폼이 포함된 상업적 또는 거래 제안
* `낮은 심각도` — 가벼운 플랫폼 밖 요청 또는 낮은 위험도의 홍보 메시지

**심각도별 예시**

* `높은 심각도` — `"paypal로 100달러 보내"`, `"먼저 돈을 보내면 내가 아이템을 줄게"`, `"돈을 송금해"`, `"이 지갑으로 암호화폐를 보내"`
* `중간 심각도` — `"나는 저렴한 게임 골드를 팔아"`, `"나한테 돈을 내면 네 랭크를 올려줄게"`, `"내 계정을 사"`, `"내 유료 디스코드 서버에 들어와"`, `"스킨 거래하려면 DM해"`
* `낮은 심각도` — `"왓츠앱에서 얘기하자"`, `"디스코드에서 나를 추가해"`, `"더 나은 팁을 보려면 내 페이지를 팔로우해"`, `"좋은 빌드를 원하면 내 채널을 확인해 봐"`, `"내 텔레그램에 유출 정보 전부 올려"`, `"내 서버에 들어와, 여기보다 더 좋아"`

</details>

<details>

<summary><code>스팸</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

대화창을 어지럽히거나 방해하는 반복적, 무관한 또는 무의미한 메시지를 표시합니다. 여기에는 높은 빈도의 게시, 횡설수설, 자동화되었거나 봇 같은 행동이 포함됩니다.

**심각도 분류체계**

* `높은 심각도` — 크기, 밀도 또는 시각적 영향 때문에 대화를 압도하는 과도한 무의미한 내용
* `중간 심각도` — 짧은 시간 안의 방해되는 빈도 또는 중복
* `낮은 심각도` — 경미한 반복, 횡설수설 또는 낮은 수준의 스팸

**심각도별 예시**

* `높은 심각도` — 대형 ASCII 벽, 이모지 폭주 또는 무작위 기호의 긴 문자열
* `중간 심각도` — 다음 둘 중 하나에 의해 트리거됨:
  * 고빈도 메시지 전송 — `10+` 초 이내의 `5` 초
  * 완전히 동일한 반복 — `3` 초 이내의 동일한 메시지 `10` 초
* `낮은 심각도` — `"ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ"`, `"asdfasdfasdf"`, `"😂😂😂😂😂"`, `"hello world hello world hello world"`

</details>

<details>

<summary><code>언어적 학대</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

비하, 욕설 또는 다른 사용자를 깎아내리거나, 모욕하거나, 정서적으로 해치려는 언어를 표시합니다. 여기에는 지능, 능력, 외모 또는 개인적 가치에 대한 공격이 포함됩니다. Identity Hate와 달리 Verbal Abuse는 보호 대상 특성을 언급하지 않습니다.

**심각도 분류체계**

* `높은 심각도` — 극단적인 괴롭힘, 모욕적인 공격 또는 비인간화
* `중간 심각도` — 분노, 경멸 또는 공격성을 드러내는 강한 개인 공격
* `낮은 심각도` — 다른 플레이어를 향한 가벼운 모욕 또는 흔한 경쟁성 농담

**심각도별 예시**

* `높은 심각도` — `"넌 쓸모없는 개자식이야"`, `"넌 완전히 인간 쓰레기야"`, `"넌 한심하고 여기엔 널 원하는 사람도 없어"`, `"이 쓸모없는 씨발 자원 낭비 같은 새끼야"`, `"넌 비인간적이야"`, `"넌 살아 있을 가치가 없어"`, `"모두가 널 싫어해"`, `"자살해, 패배자야"`, `"넌 그저 개자식일 뿐이야"`
* `중간 심각도` — `"씨발"`, `"닥쳐, 씨발"`, `"지옥에나 가"`, `"넌 빌어먹을 개자식이야"`, `"똥이나 먹어"`, `"아무도 널 좋아하지 않아"`
* `낮은 심각도` — `"너 진짜 못한다"`, `"초보"`, `"너 진짜 형편없어"`, `"lmao 너 쓰레기야"`

</details>

<details>

<summary><code>폭력</code> <em>[끔 | 낮음 | 중간 | 높음]</em></summary>

사람이나 집단에 대한 신체적 해를 언급, 조장, 미화하거나 묘사하는 언어를 표시합니다. 이 범주는 반드시 임박하거나 신빙성 있는 위협을 구성하지는 않는 폭력적 표현을 포착합니다.

**심각도 분류체계**

* `높은 심각도` — 도식적이고 잔혹하거나 가학적인 폭력
* `중간 심각도` — 도식적인 세부 묘사 없이 노골적인 폭력적 피해 또는 지지
* `낮은 심각도` — 비도식적 폭력 표현으로 비유적 또는 맥락적으로 사용됨

**심각도별 예시**

* `높은 심각도` — `"사람들이 다칠 때 비명을 지르는 걸 보는 게 좋아"`, `"뇌가 바닥에 쏟아질 때까지 그의 두개골을 박살 내"`, `"누군가를 가르고 열었을 때 모든 게 쏟아지는 모습을 상상해 봐"`, `"그를 조각조각 찢어버리고 싶어"`, `"그들이 피를 흘리며 죽어가는 걸 보는 게 만족스러워"`
* `중간 심각도` — `"누가 널 패버려야 해"`, `"한 대 맞아도 싸"`, `"내가 널 박살 내줄게"`, `"네가 다치면 좋겠어"`, `"넌 언젠가 크게 당할 거야"`
* `낮은 심각도` — `"이번 판에 널 박살 내줄게"`, `"내가 너희를 완전히 박살 내버릴게"`, `"우린 완전히 학살당했어"`, `"저 보스가 또 날 죽였어"`

</details>

#### **구성 전달**

1. 샘플 JSON (`config.json`)

   ```json
   {
   	"age_disclosure": "off",
   	"drugs": "off",
   	"extremism": "high",
   	"gameplay_criticism": "high",
   	"identity_harm": "medium",
   	"links": "high",
   	"minor_safety": "low",
   	"offensive_language": "high",
   	"pii": "off",
   	"real_threat": "high",
   	"scam": "off",
   	"self_harm_incitement": "high",
   	"sexual_content": "low",
   	"sexual_harassment": "high",
   	"sexual_violence": "high",
   	"solicitation": "off",
   	"spam": "high",
   	"verbal_abuse": "medium",
   	"violence": "off"
   }
   ```
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": "high",
	"drugs": "high",
	"extremism": "high",
	"gameplay_criticism": "high",
	"identity_harm": "high",
	"links": "high",
	"minor_safety": "high",
	"offensive_language": "high",
	"pii": "high",
	"real_threat": "high",
	"scam": "high",
	"self_harm_incitement": "high",
	"sexual_content": "high",
	"sexual_harassment": "high",
	"sexual_violence": "high",
	"solicitation": "high",
	"spam": "high",
	"verbal_abuse": "high",
	"violence": "high"
}
```

## **매개변수**

`본문`: 다음 필드를 포함하는 사전:\
(*utf-8 인코딩이어야 함)*

* **session\_id:** 대화 채널의 고유 식별자입니다. 게임플레이 메시지의 경우, 하나의 경기 동안 전개되는 대화를 식별할 수 있습니다. 포럼이나 게시판에서는 별도의 스레드나 토론을 나타낼 수 있습니다. 플랫폼에 다양한 채널 유형(예: 로비, 매치, 다이렉트 메시지 등)이 있다면, 대화 유형별 추가 분석을 위해 이 정보를 session\_id에 포함하는 것을 권장합니다. 권장 형식은 다음과 같습니다:

  ```json
    session_id = "channelType_numericID"
  ```
* **message:** 대화 중 사용자가 보낸 메시지입니다. 1,000자를 초과할 수 없습니다.
* **user\_id:** 메시지를 보낸 플레이어 또는 사용자의 고유 식별자입니다.
* (선택 사항) **username**: 사용자가 선택한 친숙한 표시 이름이 담긴 문자열입니다.
* (선택 사항) **timestamp**: 메시지가 발생한 시각을 UTC 기준 YYYY-MM-DD HH:MM:SS.SSS 또는 YYYY-MM-DD HH:MM:SS 형식으로 나타냅니다. 추가하지 않으면 서버 측 UTC 타임스탬프가 대신 추가됩니다.
* (선택 사항) **language**: 처리할 메시지의 언어입니다. 생략하면 API가 메시지 내용과 이전 사용자 기록을 바탕으로 언어를 감지하려고 시도합니다. 표준 영어 언어 이름(예: `"영어"` 또는 `"스페인어"`), 및 ISO 639-1 두 글자 언어 코드(예:  `"en"` 또는 `"es"`). 다음과 같은 전체 로캘 태그는 `"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 (배열\<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>

입력 payload에 대한 메시지 수준 모더레이션 결과.

* `message_id` — 메시지에 할당된 고유 식별자
* `original_message` — 사용자가 보낸 원본 메시지
* `flag` — `true` 구성된 어떤 범주에 의해서든 메시지가 플래그 지정된 경우
* `심각도` — 메시지에 할당된 전체 심각도 수준. 가능한 값: `none`, `very_low`, `낮음`, `중간`, `높음`, `very_high`, 그리고 `custom`
  * `custom` GGWP가 메시지를 플래그하지 않았지만, 클라이언트 사용자 지정 차단 목록의 용어가 해당되는 경우 사용됩니다.
* `confidence` — 전체 메시지 수준 감지에 대한 신뢰도입니다. 가능한 값: `none`, `낮음`, `중간`, 또는 `높음`
* `filtered_message` — 플래그된 용어가 필터링된 메시지 버전
  * 공백으로 구분되는 영어 같은 언어의 경우 전체 단어가 필터링됩니다. 예: `너는 개자식이야` → `너는 *****야`
  * 명시적 단어 경계가 없는 언어의 경우 감지된 용어만 필터링됩니다. 예: `좆까고 있네` → `*****고 있네`
* `recommended_message` — 클라이언트에 표시하기 위해 권장되는 메시지 변형입니다. 활성 사용자에게는 기본값이 `filtered_message`입니다. 음소거된 사용자에게는 빈 문자열입니다
* `language` — 감지된 메시지의 언어
* `flagged_categories` — 메시지에서 발견된 범주 감지 목록입니다. 각 항목에는 다음이 포함됩니다:
  * `category` — 감지된 콘텐츠에 할당된 범주
  * `category_severity` — 해당 감지에 대한 범주별 심각도. 가능한 값: `none`, `낮음`, `중간`, 또는 `높음`
    * 일부 범주는 심각도 없이 플래그될 수 있습니다. 그런 경우, `category_severity` 는 `none`
* `custom_flag` — `true` 메시지에 사용자 지정 차단 목록 용어가 포함되어 있으면

</details>

<details>

<summary><code>player_details</code></summary>

현재 `user_id` 의 집계된 모더레이션 및 행동 데이터 `session_id`.

* `user_id` — 사용자의 고유 식별자
* `username` — 사용자의 표시 이름
* `num_messages` — 세션에서 사용자가 보낸 총 메시지 수
* `num_incidents` — 사용자와 연관된 총 인시던트 수
* `cumulative_mood` — 사용자의 메시지 전반에 대한 전체 감정 점수
* `min_mood` — 사용자의 메시지에서 관찰된 최저 감정
* `max_mood` — 사용자의 메시지에서 관찰된 최고 감정
* `reputation_score` — 이전 행동에서 도출된 전체 평판 점수
* `languages` — 사용자의 메시지에서 감지된 언어
* `user_status` — 사용자의 현재 모더레이션 상태
  * `status` — 현재 적용된 모더레이션 상태, 예: `active` 또는 `muted`
  * `expiry_at` — 현재 모더레이션 상태가 만료되는 시각

</details>

<details>

<summary><code>conversation_summary</code></summary>

현재 `session_id`.

* `start_time` — 대화 세션이 시작된 타임스탬프
* `session_duration` — 대화의 총 지속 시간(초)
* `num_messages` — 대화의 총 메시지 수
* `num_participants` — 대화에 참여한 총 사용자 수
* `num_incidents` — 대화에서 감지된 총 인시던트 수
* `conversation_mood` — 대화의 전체 감정 점수

</details>

<details>

<summary><code>권장 조치</code></summary>

다음 키로 지정된 권장 모더레이션 조치 `user_id`. 각 `user_id` 은 추천 객체 배열에 매핑됩니다.

* `<user_id>[].action` — mute와 같은 권장 모더레이션 조치 `음소거`
* `<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` 5KB를 초과함
* `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>
