> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Enchant SDK API 레퍼런스

각종 프로그래밍 언어용 GS2-Enchant SDK의 모델 사양과 API 레퍼런스



## 모델

### Namespace

네임스페이스<br>

네임스페이스는 하나의 프로젝트 내에서 동일한 서비스를 서로 다른 용도로 여러 개 이용하기 위한 엔티티입니다.<br>
GS2의 각 서비스는 네임스페이스 단위로 관리됩니다. 네임스페이스가 다르면 동일한 서비스라도 완전히 독립된 데이터 공간으로 취급됩니다.<br>

따라서 각 서비스의 이용을 시작하려면 먼저 네임스페이스를 생성해야 합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceId | string |  | ※ |  |  ~ 1024자 | 네임스페이스 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  |  |  |  ~ 1024자 | 설명문 |
| transactionSetting | [TransactionSetting](#transactionsetting) |  | ✓ |  |  | 트랜잭션 설정<br>인챈트 파라미터 조작 시 트랜잭션 처리 방법을 제어하는 설정입니다. |
| logSetting | [LogSetting](#logsetting) |  |  |  |  | 로그 출력 설정<br>인챈트 조작의 로그 데이터를 GS2-Log에 출력하기 위한 설정입니다. GS2-Log의 네임스페이스를 지정하면 밸런스 파라미터 및 레어리티 파라미터 조작의 API 요청·응답 로그를 수집할 수 있습니다. |
| createdAt | long |  | ※ | 현재 시각 |  | 생성일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| updatedAt | long |  | ※ | 현재 시각 |  | 최종 갱신일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| revision | long |  |  | 0 | 0 ~ 9223372036854775805 | 리비전 |

**관련 메서드:**
describeNamespaces - 네임스페이스 목록 조회
createNamespace - 네임스페이스 신규 생성
getNamespace - 네임스페이스 조회
updateNamespace - 네임스페이스 갱신
deleteNamespace - 네임스페이스 삭제



---

### TransactionSetting

트랜잭션 설정<br>

트랜잭션 설정은 트랜잭션의 실행 방법·정합성·비동기 처리·충돌 회피 메커니즘을 제어하는 설정입니다.<br>
자동 실행(AutoRun), 원자적 실행(AtomicCommit), GS2-Distributor를 이용한 비동기 실행, 스크립트 결과의 일괄 적용, GS2-JobQueue를 통한 입수 액션의 비동기화 등을 조합하여 게임 로직에 맞는 견고한 트랜잭션 관리를 가능하게 합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| enableAutoRun | bool |  |  | false |  | 발행한 트랜잭션을 서버 사이드에서 자동으로 실행할지 여부 |
| enableAtomicCommit | bool | {enableAutoRun} == true |  | false |  | 트랜잭션의 실행을 원자적으로 커밋할지 여부<br>※ enableAutoRun이(가) true 이면 활성화 |
| transactionUseDistributor | bool | {enableAtomicCommit} == true |  | false |  | 트랜잭션을 비동기 처리로 실행할지 여부<br>※ enableAtomicCommit이(가) true 이면 활성화 |
| commitScriptResultInUseDistributor | bool | {transactionUseDistributor} == true |  | false |  | 스크립트의 결과 커밋 처리를 비동기 처리로 실행할지 여부<br>※ transactionUseDistributor이(가) true 이면 활성화 |
| acquireActionUseJobQueue | bool | {enableAtomicCommit} == true |  | false |  | 입수 액션을 실행할 때 GS2-JobQueue를 사용할지 여부<br>※ enableAtomicCommit이(가) true 이면 활성화 |
| distributorNamespaceId | string |  |  | "grn:gs2:{region}:{ownerId}:distributor:default" |  ~ 1024자 | 트랜잭션 실행에 사용하는 GS2-Distributor 네임스페이스GRN |
| queueNamespaceId | string |  |  | "grn:gs2:{region}:{ownerId}:queue:default" |  ~ 1024자 | 트랜잭션 실행에 사용하는 GS2-JobQueue의 네임스페이스GRN |

**관련 메서드:**
createNamespace - 네임스페이스 신규 생성
updateNamespace - 네임스페이스 갱신


**관련 모델:**
Namespace - 네임스페이스



---

### ScriptSetting

스크립트 설정<br>

GS2에서는 마이크로서비스의 이벤트에 연결하여 커스텀 스크립트를 실행할 수 있습니다.<br>
이 모델은 스크립트 실행을 트리거하기 위한 설정을 보유합니다.<br>

스크립트 실행 방식은 크게 두 가지로, 바로 "동기 실행"과 "비동기 실행"입니다.<br>
동기 실행은 스크립트 실행이 완료될 때까지 처리가 블록됩니다.<br>
대신 스크립트 실행 결과를 이용하여 API 실행을 중단시키거나 API 응답 내용을 제어할 수 있습니다.<br>

한편, 비동기 실행에서는 스크립트 완료를 기다리기 위해 처리가 블록되는 일이 없습니다.<br>
다만 스크립트 실행 결과를 이용하여 API 실행을 중단하거나 API 응답 내용을 변경할 수는 없습니다.<br>
비동기 실행은 API의 응답 흐름에 영향을 주지 않으므로 원칙적으로 비동기 실행을 권장합니다.<br>

비동기 실행에는 실행 방식이 두 가지 있으며, GS2-Script와 Amazon EventBridge가 있습니다.<br>
Amazon EventBridge를 사용함으로써 Lua 이외의 언어로 처리를 작성할 수 있습니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| triggerScriptId | string |  |  |  |  ~ 1024자 | API 실행 시 동기적으로 실행되는 GS2-Script의 스크립트GRN<br>"grn:gs2:"로 시작하는 GRN 형식의 ID로 지정해야 합니다. |
| doneTriggerTargetType | 문자열 열거형<br>enum {<br>"none",<br>"gs2_script",<br>"aws"<br>}<br> |  |  | "none" |  | 비동기 스크립트의 실행 방법<br>비동기 실행에서 사용할 스크립트의 종류를 지정합니다.<br>"비동기 실행의 스크립트를 사용하지 않음(none)", "GS2-Script를 사용함(gs2_script)", "Amazon EventBridge를 사용함(aws)" 중에서 선택할 수 있습니다.none: 없음 / gs2_script: GS2-Script / aws: Amazon EventBridge /  |
| doneTriggerScriptId | string | {doneTriggerTargetType} == "gs2_script" |  |  |  ~ 1024자 | 비동기 실행할 GS2-Script 스크립트GRN<br>"grn:gs2:"로 시작하는 GRN 형식의 ID로 지정해야 합니다.<br>※ doneTriggerTargetType이(가) "gs2_script" 이면 활성화 |
| doneTriggerQueueNamespaceId | string | {doneTriggerTargetType} == "gs2_script" |  |  |  ~ 1024자 | 비동기 실행 스크립트를 실행하는 GS2-JobQueue 네임스페이스GRN<br>비동기 실행 스크립트를 직접 실행하지 않고 GS2-JobQueue를 경유하는 경우 GS2-JobQueue의 네임스페이스GRN을 지정합니다.<br>GS2-JobQueue를 이용해야 할 이유는 많지 않으므로, 특별한 이유가 없다면 지정할 필요는 없습니다.<br>※ doneTriggerTargetType이(가) "gs2_script" 이면 활성화 |


---

### LogSetting

로그 출력 설정<br>

로그 데이터의 출력 설정을 관리합니다. 이 타입은 로그 데이터를 기록하는 데 사용되는 GS2-Log 네임스페이스의 식별자(Namespace ID)를 보유합니다.<br>
로그 네임스페이스ID(loggingNamespaceId)에는 로그 데이터를 수집하여 저장하는 GS2-Log의 네임스페이스를 GRN 형식으로 지정합니다.<br>
이 설정을 하면 설정된 네임스페이스 내에서 발생한 API 요청·응답의 로그 데이터가 대상 GS2-Log 네임스페이스 쪽으로 출력됩니다.<br>
GS2-Log에서는 실시간으로 로그가 제공되어 시스템 모니터링, 분석, 디버깅 등에 이용할 수 있습니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| loggingNamespaceId | string |  | ✓ |  |  ~ 1024자 | 로그를 출력할 GS2-Log의 네임스페이스GRN<br>"grn:gs2:"로 시작하는 GRN 형식의 ID로 지정해야 합니다. |

**관련 메서드:**
createNamespace - 네임스페이스 신규 생성
updateNamespace - 네임스페이스 갱신


**관련 모델:**
Namespace - 네임스페이스



---

### GitHubCheckoutSetting

GitHub에서 마스터 데이터를 체크아웃하는 설정


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| apiKeyId | string |  | ✓ |  |  ~ 1024자 | GitHub API 키의 GRN |
| repositoryName | string |  | ✓ |  |  ~ 1024자 | 리포지토리 이름 |
| sourcePath | string |  | ✓ |  |  ~ 1024자 | 마스터 데이터(JSON) 파일 경로 |
| referenceType | 문자열 열거형<br>enum {<br>"commit_hash",<br>"branch",<br>"tag"<br>}<br> |  | ✓ |  |  | 코드 출처commit_hash: 커밋 해시 / branch: 브랜치 / tag: 태그 /  |
| commitHash | string | {referenceType} == "commit_hash" | ✓※ |  |  ~ 1024자 | 커밋 해시<br>※ referenceType이(가) "commit_hash" 이면 필수 |
| branchName | string | {referenceType} == "branch" | ✓※ |  |  ~ 1024자 | 브랜치 이름<br>※ referenceType이(가) "branch" 이면 필수 |
| tagName | string | {referenceType} == "tag" | ✓※ |  |  ~ 1024자 | 태그 이름<br>※ referenceType이(가) "tag" 이면 필수 |

**관련 메서드:**
updateCurrentParameterMasterFromGitHub - 현재 유효한 파라미터 모델의 마스터 데이터를 GitHub 에서 업데이트



---

### BalanceParameterStatus

밸런스 파라미터 상태<br>

사용자가 소유한 특정 리소스에 대해 추첨된 파라미터의 실제 값을 나타냅니다. 각 상태는 밸런스 파라미터 모델과 연결되며, 추첨 처리 후 각 파라미터 슬롯에 할당된 구체적인 값을 보유합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| balanceParameterStatusId | string |  | ※ |  |  ~ 1024자 | 밸런스 파라미터 GRN<br>※ 서버가 자동으로 설정 |
| userId | string |  | ✓ |  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓ |  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓ |  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| parameterValues | [List&lt;BalanceParameterValue&gt;](#balanceparametervalue) |  | ✓ |  | 1 ~ 10 items | 밸런스 파라미터 값 리스트<br>추첨 처리 후 각 파라미터 슬롯에 할당된 구체적인 값입니다. 각 엔트리는 모델에서 정의된 파라미터 슬롯에 대응하며, 할당된 실제 수치를 보유합니다. 모든 값의 합계는 모델에서 지정된 합계 값과 같아집니다. |
| createdAt | long |  | ※ | 현재 시각 |  | 생성일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| updatedAt | long |  | ※ | 현재 시각 |  | 최종 갱신일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| revision | long |  |  | 0 | 0 ~ 9223372036854775805 | 리비전 |

**관련 메서드:**
describeBalanceParameterStatuses - 밸런스 파라미터 상태 목록 조회
describeBalanceParameterStatusesByUserId - 사용자 ID를 지정하여 밸런스 파라미터 상태 목록 조회
getBalanceParameterStatus - 밸런스 파라미터 상태를 조회
getBalanceParameterStatusByUserId - 사용자 ID를 지정하여 밸런스 파라미터 상태를 조회
deleteBalanceParameterStatusByUserId - 밸런스 파라미터 상태를 삭제
reDrawBalanceParameterStatusByUserId - 사용자 ID를 지정하여 밸런스 파라미터 재추첨
setBalanceParameterStatusByUserId - 사용자 ID를 지정하여 밸런스 파라미터에 임의의 값을 설정



---

### RarityParameterStatus

레어리티 파라미터의 상태<br>

유저가 소유한 특정 리소스에 대해 추첨된 파라미터의 실제 값을 나타냅니다. 각 상태는 레어리티 파라미터 모델에 연결되며, 부여된 각 파라미터 슬롯에 대해 가중 추첨으로 선택된 구체적인 값을 보유합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| rarityParameterStatusId | string |  | ※ |  |  ~ 1024자 | 레어리티 파라미터의 상태 GRN<br>※ 서버가 자동으로 설정 |
| userId | string |  | ✓ |  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓ |  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓ |  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| parameterValues | [List&lt;RarityParameterValue&gt;](#rarityparametervalue) |  |  |  | 0 ~ 10 items | 레어리티 파라미터의 값 목록<br>부여된 각 슬롯에 대해 가중 추첨으로 선택된 구체적인 파라미터 값입니다. 엔트리 수는 부여 수 추첨으로 결정되며, 각 엔트리의 값은 값 모델 풀에서 선택됩니다. 최대 파라미터 수보다 적은 엔트리 수가 될 수 있습니다. |
| createdAt | long |  | ※ | 현재 시각 |  | 생성일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| updatedAt | long |  | ※ | 현재 시각 |  | 최종 갱신일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| revision | long |  |  | 0 | 0 ~ 9223372036854775805 | 리비전 |

**관련 메서드:**
describeRarityParameterStatuses - 레어리티 파라미터 상태 목록을 조회
describeRarityParameterStatusesByUserId - 사용자 ID를 지정하여 레어리티 파라미터 상태 목록을 조회
getRarityParameterStatus - 레어리티 파라미터 상태를 조회
getRarityParameterStatusByUserId - 사용자 ID를 지정하여 레어리티 파라미터 상태를 조회
deleteRarityParameterStatusByUserId - 레어리티 파라미터 상태를 삭제
reDrawRarityParameterStatusByUserId - 사용자 ID를 지정하여 레어리티 파라미터를 재추첨
addRarityParameterStatusByUserId - 사용자 ID를 지정하여 레어리티 파라미터를 추가
verifyRarityParameterStatus - 레어리티 파라미터를 검증
verifyRarityParameterStatusByUserId - 사용자 ID를 지정하여 레어리티 파라미터를 검증
setRarityParameterStatusByUserId - 사용자 ID를 지정하여 레어리티 파라미터에 임의의 값을 설정



---

### BalanceParameterModel

밸런스 파라미터 모델<br>

밸런스 파라미터의 추첨 조건을 정의합니다.<br>
밸런스 파라미터는 고정된 합계 값을 여러 파라미터 슬롯에 분배합니다. 예를 들어 합계 파워가 100인 무기에 대해 ATK=60, DEF=30, SPD=10과 같이 배분됩니다. 초기값 설정 방침에 따라 값의 할당 방법이 결정됩니다: `average`는 균등하게 분배하고, `lottery`는 합계 값을 무작위로 배분합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| balanceParameterModelId | string |  | ※ |  |  ~ 1024자 | 밸런스 파라미터 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| totalValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | 합계값<br>모든 파라미터 슬롯에 분배되는 고정된 합계값입니다. 파라미터가 추첨될 때, 사용되는 배분 방식과 관계없이 개별 값의 합계는 항상 이 합계값이 됩니다. |
| initialValueStrategy | 문자열 열거형<br>enum {<br>"average",<br>"lottery"<br>}<br> |  |  | "average" |  | 초기값 설정 방침<br>최초 할당 시 합계값을 파라미터 슬롯에 어떻게 분배할지를 결정합니다. `average`는 합계값을 모든 파라미터에 균등하게 분배하고, `lottery`는 합계값을 무작위로 분배하여 다양한 파라미터 조합을 만듭니다.average: 평균값 / lottery: 추첨 /  |
| parameters | [List&lt;BalanceParameterValueModel&gt;](#balanceparametervaluemodel) |  | ✓ |  | 1 ~ 10 items | 밸런스 파라미터 값 모델 목록<br>이 밸런스 파라미터에서 사용 가능한 파라미터 슬롯을 정의합니다. 각 엔트리는 이름이 지정된 파라미터 슬롯(예: ATK, DEF, SPD)을 선택적 메타데이터와 함께 지정합니다. 합계값은 이 슬롯들에 분배됩니다. |

**관련 메서드:**
describeBalanceParameterModels - 밸런스 파라미터 모델 목록을 조회
getBalanceParameterModel - 밸런스 파라미터 모델을 조회



---

### RarityParameterModel

레어리티 파라미터 모델<br>

레어리티 파라미터의 추첨 조건을 정의합니다. 레어리티 파라미터는 가중 추첨 시스템을 사용하여 부여되는 파라미터의 수와 할당되는 구체적인 값을 모두 결정합니다. 먼저, 부여 수 모델 목록에서 가중 추첨을 통해 채울 파라미터 슬롯 수가 결정됩니다. 그런 다음, 각 슬롯의 값이 파라미터 값 모델 목록에서 가중 추첨으로 선택되어, 제어된 확률 분포에 따른 무작위 장비 속성을 제공합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| rarityParameterModelId | string |  | ※ |  |  ~ 1024자 | 레어리티 파라미터 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 레어리티 파라미터 모델명<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| maximumParameterCount | int |  | ✓ |  | 1 ~ 10 | 부여할 파라미터의 최대 수<br>리소스에 부여할 수 있는 파라미터 슬롯 수의 상한입니다. 실제로 부여되는 수는 부여 수 모델 목록에서의 가중 추첨으로 결정되지만, 이 값을 초과하지 않습니다. |
| parameterCounts | [List&lt;RarityParameterCountModel&gt;](#rarityparametercountmodel) |  | ✓ |  | 1 ~ 10 items | 레어리티 파라미터의 부여 수 모델 목록<br>부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨 엔트리를 정의합니다. 각 엔트리는 부여 수와 추첨 가중치를 지정합니다. 가중치가 클수록 해당 부여 수가 선택될 확률이 높아집니다. |
| parameters | [List&lt;RarityParameterValueModel&gt;](#rarityparametervaluemodel) |  | ✓ |  | 1 ~ 1000 items | 레어리티 파라미터 값 모델 목록<br>추첨 가능한 파라미터 값의 풀을 정의합니다. 각 엔트리는 파라미터 이름, 리소스 상세 정보, 추첨 가중치를 지정합니다. 파라미터 슬롯을 채울 때, 이 풀에서 중복 없이 가중 추첨으로 값이 선택됩니다. |

**관련 메서드:**
describeRarityParameterModels - 레어리티 파라미터 모델 목록 조회
getRarityParameterModel - 레어리티 파라미터 모델을 조회



---

### BalanceParameterValueModel

밸런스 파라미터 값 모델<br>

밸런스 파라미터 내에서 사용 가능한 단일 파라미터 슬롯을 정의합니다. 각 엔트리는 추첨 처리 중 합계값의 일부를 받는 이름이 지정된 슬롯(예: ATK, DEF, SPD)을 지정합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64자 | 이름<br>이 파라미터 슬롯의 식별자(예: ATK, DEF, SPD)입니다. 밸런스 파라미터 모델 내에서 고유해야 합니다. 추첨된 파라미터 값을 저장·취득할 때 키로 사용됩니다. |
| metadata | string |  |  |  |  ~ 512자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |

**관련 모델:**
BalanceParameterModel - 밸런스 파라미터 모델
BalanceParameterModelMaster - 밸런스 파라미터 모델 마스터



---

### RarityParameterCountModel

레어리티 파라미터의 부여 수 모델<br>

리소스에 부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨의 단일 엔트리를 정의합니다. 각 엔트리는 파라미터 수와 추첨 가중치를 짝지어, 파라미터 수량의 확률 분포를 세밀하게 제어할 수 있습니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| count | int |  | ✓ |  | 0 ~ 10 | 부여 수<br>이 엔트리가 추첨되었을 때 부여되는 파라미터 슬롯 수입니다. 예를 들어 부여 수가 3인 경우, 리소스는 값 모델 풀에서 선택된 3개의 파라미터 값을 받게 됩니다. |
| weight | int |  | ✓ |  | 1 ~ 2147483646 | 추첨 가중치<br>파라미터 부여 수를 결정하는 가중치 추첨에서 사용되는 상대적인 가중치입니다. 값이 클수록 이 부여 수가 선택될 확률이 높아집니다. 실제 확률은 이 가중치를 부여 수 모델 리스트 내 모든 가중치의 합으로 나눈 값입니다. |

**관련 모델:**
RarityParameterModel - 레어리티 파라미터 모델
RarityParameterModelMaster - 레어리티 파라미터 모델 마스터



---

### RarityParameterValueModel

레어리티 파라미터 값 모델<br>

레어리티 파라미터 값의 가중 추첨 풀 내 단일 엔트리를 정의합니다. 각 엔트리는 파라미터 이름, 게임에서 정의한 리소스 상세 정보, 그리고 풀 내 다른 엔트리에 대한 선택 확률을 결정하는 추첨 가중치를 지정합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64자 | 이름<br>이 추첨 엔트리의 식별자입니다. 레어리티 파라미터 모델의 값 풀 내에서 고유해야 합니다. 추첨되었을 때, 이 이름이 결과 레어리티 파라미터 값에 저장됩니다. |
| metadata | string |  |  |  |  ~ 512자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| resourceName | string |  | ✓ |  |  ~ 64자 | 게임에서 사용하는 파라미터 리소스 종류를 나타내는 이름(GS2의 동작에는 사용되지 않음)<br>이 파라미터 값에 연결된 게임에서 정의한 리소스 종류 이름(예: "fire_attack", "ice_resist")입니다. GS2는 자체 동작에 이 값을 사용하지 않으며, 추첨 결과에 그대로 전달되어 게임 로직에서 사용됩니다. |
| resourceValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | 게임에서 사용하는 파라미터 리소스 값(GS2의 동작에는 사용되지 않음)<br>이 파라미터의 게임에서 정의한 수치(예: 공격력+50인 경우 50)입니다. GS2는 자체 동작에 이 값을 사용하지 않으며, 추첨 결과에 그대로 전달되어 게임 로직에서 사용됩니다. |
| weight | int |  | ✓ |  | 1 ~ 2147483646 | 추첨 가중치<br>파라미터 값을 선택하는 가중 추첨에서 사용되는 상대적 가중치입니다. 값이 클수록 이 엔트리가 선택될 확률이 높아집니다. 실제 확률은 이 가중치를 풀 내 모든 가중치의 합으로 나눈 값이 됩니다. |

**관련 모델:**
RarityParameterModel - 레어리티 파라미터 모델
RarityParameterModelMaster - 레어리티 파라미터 모델 마스터



---

### BalanceParameterValue

밸런스 파라미터 값<br>

밸런스 파라미터 상태 내의 단일 파라미터 슬롯에 할당된 실제 값을 나타냅니다. 추첨 처리 후의 슬롯 이름과 그 구체적인 수치를 보유합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64자 | 이름<br>파라미터 슬롯의 이름(예: ATK, DEF, SPD)입니다. 밸런스 파라미터 값 모델에서 정의된 파라미터 슬롯에 대응합니다. |
| value | long |  | ✓ |  | 0 ~ 9223372036854775805 | 값<br>이 파라미터 슬롯에 할당된 수치입니다. 밸런스 파라미터가 처음 추첨될 때, 초기값 설정 방침(평균값 또는 추첨)에 따라 결정됩니다. 모든 슬롯 값의 합계는 모델에서 정의된 합계 값과 같아집니다. |

**관련 모델:**
BalanceParameterStatus - 밸런스 파라미터 상태



---

### RarityParameterValue

레어리티 파라미터 값<br>

레어리티 파라미터 상태 내의 단일 파라미터 슬롯에 할당된 실제 값을 나타냅니다. 슬롯 이름과, 값 모델 풀에서 가중 추첨으로 선택된 리소스 상세 정보(이름과 값)를 보유합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64자 | 이름<br>값 모델 풀에서 선택된 파라미터 값의 이름입니다. 추첨된 레어리티 파라미터 값 모델 엔트리에서 정의된 이름에 대응합니다. |
| resourceName | string |  | ✓ |  |  ~ 64자 | 리소스의 이름<br>이 파라미터 값에 연결된 게임에서 정의한 리소스 종류 이름(예: "fire_attack", "ice_resist")입니다. 게임 로직에서 사용하기 위해 추첨된 레어리티 파라미터 값 모델 엔트리에서 복사됩니다. |
| resourceValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | 리소스의 값<br>이 파라미터에 연결된 리소스의 수치입니다. 추첨된 레어리티 파라미터 값 모델 엔트리에서 복사됩니다. 게임 로직에서 파라미터의 효과(예: 공격력+50)를 적용하는 데 사용됩니다. |

**관련 모델:**
RarityParameterStatus - 레어리티 파라미터의 상태



---

### VerifyActionResult

검증 액션 실행 결과


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 검증 액션에서 실행할 액션의 종류 |
| verifyRequest | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |
| statusCode | int |  |  |  | 0 ~ 999 | 상태 코드 |
| verifyResult | string |  |  |  |  ~ 1048576자 | 결과 내용 |

**관련 모델:**
TransactionResult - 트랜잭션 실행 결과



---

### ConsumeActionResult

소비 액션 실행 결과


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 소비 액션에서 실행할 액션의 종류 |
| consumeRequest | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |
| statusCode | int |  |  |  | 0 ~ 999 | 상태 코드 |
| consumeResult | string |  |  |  |  ~ 1048576자 | 결과 내용 |

**관련 모델:**
TransactionResult - 트랜잭션 실행 결과



---

### AcquireActionResult

획득 액션 실행 결과


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 입수 액션에서 실행할 액션의 종류 |
| acquireRequest | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |
| statusCode | int |  |  |  | 0 ~ 999 | 상태 코드 |
| acquireResult | string |  |  |  |  ~ 1048576자 | 결과 내용 |

**관련 모델:**
TransactionResult - 트랜잭션 실행 결과



---

### TransactionResult

트랜잭션 실행 결과<br>

서버 사이드에서 트랜잭션 자동 실행 기능을 이용하여 실행된 트랜잭션의 실행 결과


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| transactionId | string |  | ✓ |  | 36 ~ 36자 | 트랜잭션 ID |
| verifyResults | [List&lt;VerifyActionResult&gt;](#verifyactionresult) |  |  |  | 0 ~ 10 items | 검증 액션의 실행 결과 목록 |
| consumeResults | [List&lt;ConsumeActionResult&gt;](#consumeactionresult) |  |  | [] | 0 ~ 10 items | 소비 액션의 실행 결과 목록 |
| acquireResults | [List&lt;AcquireActionResult&gt;](#acquireactionresult) |  |  | [] | 0 ~ 100 items | 획득 액션 실행 결과 리스트 |
| hasError | bool |  |  | false |  | 트랜잭션 실행 중 오류가 발생했는지 여부 |


---

### Config

컨피그 설정<br>

트랜잭션의 변수에 적용하는 설정 값


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| key | string |  | ✓ |  |  ~ 64자 | 이름 |
| value | string |  |  |  |  ~ 51200자 | 값 |


---

### CurrentParameterMaster

현재 활성화된 파라미터 모델의 마스터 데이터<br>

현재 네임스페이스 내에서 유효한 파라미터 모델의 정의를 기술한 마스터 데이터입니다.<br>
GS2에서는 마스터 데이터 관리에 JSON 형식의 파일을 사용합니다.<br>
파일을 업로드함으로써 실제로 서버에 설정을 반영할 수 있습니다.<br>

JSON 파일을 작성하는 방법으로, 매니지먼트 콘솔 내에 마스터 데이터 에디터를 제공하고 있습니다.<br>
또한, 게임 운영에 더 적합한 도구를 만들어 적절한 형식의 JSON 파일을 출력하는 방식으로도 서비스를 이용할 수 있습니다.
**ℹ️ Note**

JSON 파일 형식에 대해서는 [GS2-Enchant 마스터 데이터 레퍼런스](api_reference/enchant/master_data/)를 참조해 주세요.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceId | string |  | ※ |  |  ~ 1024자 | 네임스페이스 GRN<br>※ 서버가 자동으로 설정 |
| settings | string |  | ✓ |  |  ~ 5242880 바이트 (5MB) | 마스터 데이터 |

**관련 메서드:**
exportMaster - 파라미터 모델 마스터를 유효화 가능한 마스터 데이터 형식으로 내보내기
getCurrentParameterMaster - 현재 유효한 파라미터 모델의 마스터 데이터를 조회
updateCurrentParameterMaster - 현재 유효한 파라미터 모델의 마스터 데이터를 업데이트
updateCurrentParameterMasterFromGitHub - 현재 유효한 파라미터 모델의 마스터 데이터를 GitHub 에서 업데이트



---

### BalanceParameterModelMaster

밸런스 파라미터 모델 마스터<br>

매니지먼트 콘솔 조작에 사용되는 밸런스 파라미터 모델의 편집 가능한 버전입니다. 밸런스 파라미터의 추첨 조건을 정의합니다. 밸런스 파라미터는 고정된 합계값을 여러 파라미터 슬롯에 분배합니다. 예를 들어, 합계 파워가 100인 무기라면 ATK=60, DEF=30, SPD=10과 같이 배분될 수 있습니다. 초기값 설정 방침에 따라 값의 할당 방법이 결정됩니다: `average`는 균등하게 분배하고, `lottery`는 합계값을 무작위로 배분합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| balanceParameterModelId | string |  | ※ |  |  ~ 1024자 | 밸런스 파라미터 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 밸런스 파라미터 모델명<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| description | string |  |  |  |  ~ 1024자 | 설명문 |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| totalValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | 합계값<br>모든 파라미터 슬롯에 분배되는 고정된 합계값입니다. 파라미터가 추첨될 때, 사용되는 배분 방식과 관계없이 개별 값의 합계는 항상 이 합계값이 됩니다. |
| initialValueStrategy | 문자열 열거형<br>enum {<br>"average",<br>"lottery"<br>}<br> |  |  | "average" |  | 초기값 설정 방침<br>최초 할당 시 합계값을 파라미터 슬롯에 어떻게 분배할지를 결정합니다. `average`는 합계값을 모든 파라미터에 균등하게 분배하고, `lottery`는 합계값을 무작위로 분배하여 다양한 파라미터 조합을 만듭니다.average: 평균값 / lottery: 추첨 /  |
| parameters | [List&lt;BalanceParameterValueModel&gt;](#balanceparametervaluemodel) |  | ✓ |  | 1 ~ 10 items | 밸런스 파라미터 값 모델 목록<br>이 밸런스 파라미터에서 사용 가능한 파라미터 슬롯을 정의합니다. 각 엔트리는 이름이 지정된 파라미터 슬롯(예: ATK, DEF, SPD)을 선택적 메타데이터와 함께 지정합니다. 합계값은 이 슬롯들에 분배됩니다. |
| createdAt | long |  | ※ | 현재 시각 |  | 생성일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| updatedAt | long |  | ※ | 현재 시각 |  | 최종 갱신일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| revision | long |  |  | 0 | 0 ~ 9223372036854775805 | 리비전 |

**관련 메서드:**
describeBalanceParameterModelMasters - 밸런스 파라미터 모델 마스터 목록을 조회
createBalanceParameterModelMaster - 밸런스 파라미터 모델 마스터를 신규 생성
getBalanceParameterModelMaster - 밸런스 파라미터 모델 마스터 데이터를 조회
updateBalanceParameterModelMaster - 밸런스 파라미터 모델 마스터를 업데이트
deleteBalanceParameterModelMaster - 밸런스 파라미터 모델 마스터를 삭제



---

### RarityParameterModelMaster

레어리티 파라미터 모델 마스터<br>

관리 콘솔 조작에 사용되는 레어리티 파라미터 모델의 편집 가능한 버전입니다. 가중치 추첨 시스템을 사용하여 부여되는 파라미터의 수와 할당되는 구체적인 값을 모두 결정하는 레어리티 파라미터의 추첨 조건을 정의합니다.


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| rarityParameterModelId | string |  | ※ |  |  ~ 1024자 | 레어리티 파라미터 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 레어리티 파라미터 모델 이름<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  |  |  |  ~ 1024자 | 설명문 |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| maximumParameterCount | int |  | ✓ |  | 1 ~ 10 | 부여할 파라미터의 최대 수<br>리소스에 부여할 수 있는 파라미터 슬롯 수의 상한입니다. 실제로 부여되는 수는 부여 수 모델 목록에서의 가중 추첨으로 결정되지만, 이 값을 초과하지 않습니다. |
| parameterCounts | [List&lt;RarityParameterCountModel&gt;](#rarityparametercountmodel) |  | ✓ |  | 1 ~ 10 items | 레어리티 파라미터의 부여 수 모델 목록<br>부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨 엔트리를 정의합니다. 각 엔트리는 부여 수와 추첨 가중치를 지정합니다. 가중치가 클수록 해당 부여 수가 선택될 확률이 높아집니다. |
| parameters | [List&lt;RarityParameterValueModel&gt;](#rarityparametervaluemodel) |  | ✓ |  | 1 ~ 1000 items | 레어리티 파라미터 값 모델 목록<br>추첨 가능한 파라미터 값의 풀을 정의합니다. 각 엔트리는 파라미터 이름, 리소스 상세 정보, 추첨 가중치를 지정합니다. 파라미터 슬롯을 채울 때, 이 풀에서 중복 없이 가중 추첨으로 값이 선택됩니다. |
| createdAt | long |  | ※ | 현재 시각 |  | 생성일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| updatedAt | long |  | ※ | 현재 시각 |  | 최종 갱신일시<br>UNIX 시간・밀리초<br>※ 서버가 자동으로 설정 |
| revision | long |  |  | 0 | 0 ~ 9223372036854775805 | 리비전 |

**관련 메서드:**
describeRarityParameterModelMasters - 레어리티 파라미터 모델 마스터 목록 조회
createRarityParameterModelMaster - 레어리티 파라미터 모델 마스터를 신규 작성
getRarityParameterModelMaster - 레어리티 파라미터 모델 마스터를 조회
updateRarityParameterModelMaster - 레어리티 파라미터 모델 마스터를 업데이트
deleteRarityParameterModelMaster - 레어리티 파라미터 모델 마스터를 삭제



---
## 메서드

### describeNamespaces

네임스페이스 목록 조회<br>

프로젝트 내에서 서비스 단위로 생성된 네임스페이스의 목록을 조회합니다.<br>
옵션인 페이지 토큰을 사용하여 목록의 특정 위치부터 데이터 조회를 시작할 수 있습니다.<br>
또한 조회할 네임스페이스의 수를 제한하는 것도 가능합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namePrefix | string |  | |  |  ~ 64자 | 네임스페이스 이름의 필터 접두사 |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;Namespace&gt;](#namespace) | 네임스페이스 목록 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeNamespaces(
    &enchant.DescribeNamespacesRequest {
        NamePrefix: nil,
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeNamespacesRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeNamespaces(
        (new DescribeNamespacesRequest())
            ->withNamePrefix(null)
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeNamespacesRequest;
import io.gs2.enchant.result.DescribeNamespacesResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeNamespacesResult result = client.describeNamespaces(
        new DescribeNamespacesRequest()
            .withNamePrefix(null)
            .withPageToken(null)
            .withLimit(null)
    );
    List<Namespace> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeNamespacesResult> asyncResult = null;
yield return client.DescribeNamespaces(
    new Gs2.Gs2Enchant.Request.DescribeNamespacesRequest()
        .WithNamePrefix(null)
        .WithPageToken(null)
        .WithLimit(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeNamespaces(
        new Gs2Enchant.DescribeNamespacesRequest()
            .withNamePrefix(null)
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_namespaces(
        enchant.DescribeNamespacesRequest()
            .with_name_prefix(None)
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_namespaces({
    namePrefix=nil,
    pageToken=nil,
    limit=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_namespaces_async({
    namePrefix=nil,
    pageToken=nil,
    limit=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### createNamespace

네임스페이스 신규 생성<br>

네임스페이스의 이름, 설명 및 각종 설정을 포함한 상세 정보를 지정해야 합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| transactionSetting | [TransactionSetting](#transactionsetting) |  | ✓|  |  | 트랜잭션 설정<br>인챈트 파라미터 조작 시 트랜잭션 처리 방법을 제어하는 설정입니다. |
| logSetting | [LogSetting](#logsetting) |  | |  |  | 로그 출력 설정<br>인챈트 조작의 로그 데이터를 GS2-Log에 출력하기 위한 설정입니다. GS2-Log의 네임스페이스를 지정하면 밸런스 파라미터 및 레어리티 파라미터 조작의 API 요청·응답 로그를 수집할 수 있습니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [Namespace](#namespace) | 생성한 네임스페이스 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CreateNamespace(
    &enchant.CreateNamespaceRequest {
        Name: pointy.String("namespace-0001"),
        Description: nil,
        TransactionSetting: &enchant.TransactionSetting{
            EnableAutoRun: pointy.Bool(false),
            QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
        },
        LogSetting: &enchant.LogSetting{
            LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CreateNamespaceRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->createNamespace(
        (new CreateNamespaceRequest())
            ->withName("namespace-0001")
            ->withDescription(null)
            ->withTransactionSetting((new \Gs2\Enchant\Model\TransactionSetting())
                ->withEnableAutoRun(false)
                ->withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            ->withLogSetting((new \Gs2\Enchant\Model\LogSetting())
                ->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CreateNamespaceRequest;
import io.gs2.enchant.result.CreateNamespaceResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CreateNamespaceResult result = client.createNamespace(
        new CreateNamespaceRequest()
            .withName("namespace-0001")
            .withDescription(null)
            .withTransactionSetting(new io.gs2.enchant.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            .withLogSetting(new io.gs2.enchant.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CreateNamespaceResult> asyncResult = null;
yield return client.CreateNamespace(
    new Gs2.Gs2Enchant.Request.CreateNamespaceRequest()
        .WithName("namespace-0001")
        .WithDescription(null)
        .WithTransactionSetting(new Gs2.Gs2Enchant.Model.TransactionSetting()
            .WithEnableAutoRun(false)
            .WithQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
        .WithLogSetting(new Gs2.Gs2Enchant.Model.LogSetting()
            .WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001")),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.createNamespace(
        new Gs2Enchant.CreateNamespaceRequest()
            .withName("namespace-0001")
            .withDescription(null)
            .withTransactionSetting(new Gs2Enchant.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            .withLogSetting(new Gs2Enchant.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.create_namespace(
        enchant.CreateNamespaceRequest()
            .with_name('namespace-0001')
            .with_description(None)
            .with_transaction_setting(
                enchant.TransactionSetting()
                    .with_enable_auto_run(False)
                    .with_queue_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001'))
            .with_log_setting(
                enchant.LogSetting()
                    .with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001'))
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.create_namespace({
    name="namespace-0001",
    description=nil,
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001",
    },
    logSetting={
        loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.create_namespace_async({
    name="namespace-0001",
    description=nil,
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001",
    },
    logSetting={
        loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getNamespaceStatus

네임스페이스의 상태 조회<br>

지정된 네임스페이스의 현재 상태를 조회합니다.<br>
상태에는 네임스페이스가 활성 상태인지, 삭제되었는지가 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| status | string | 네임스페이스의 상태<br>ACTIVE: 유효 / DELETED: 삭제됨 /  |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetNamespaceStatus(
    &enchant.GetNamespaceStatusRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
status := result.Status

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetNamespaceStatusRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getNamespaceStatus(
        (new GetNamespaceStatusRequest())
            ->withNamespaceName("namespace-0001")
    );
    $status = $result->getStatus();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetNamespaceStatusRequest;
import io.gs2.enchant.result.GetNamespaceStatusResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetNamespaceStatusResult result = client.getNamespaceStatus(
        new GetNamespaceStatusRequest()
            .withNamespaceName("namespace-0001")
    );
    String status = result.getStatus();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetNamespaceStatusResult> asyncResult = null;
yield return client.GetNamespaceStatus(
    new Gs2.Gs2Enchant.Request.GetNamespaceStatusRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var status = result.Status;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getNamespaceStatus(
        new Gs2Enchant.GetNamespaceStatusRequest()
            .withNamespaceName("namespace-0001")
    );
    const status = result.getStatus();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_namespace_status(
        enchant.GetNamespaceStatusRequest()
            .with_namespace_name('namespace-0001')
    )
    status = result.status
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_namespace_status({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
status = result.status;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_namespace_status_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
status = result.status;

```



---

### getNamespace

네임스페이스 조회<br>

지정된 네임스페이스의 상세 정보를 조회합니다.<br>
여기에는 네임스페이스의 이름, 설명 및 기타 설정 정보가 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [Namespace](#namespace) | 네임스페이스 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetNamespace(
    &enchant.GetNamespaceRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetNamespaceRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getNamespace(
        (new GetNamespaceRequest())
            ->withNamespaceName("namespace-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetNamespaceRequest;
import io.gs2.enchant.result.GetNamespaceResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetNamespaceResult result = client.getNamespace(
        new GetNamespaceRequest()
            .withNamespaceName("namespace-0001")
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetNamespaceResult> asyncResult = null;
yield return client.GetNamespace(
    new Gs2.Gs2Enchant.Request.GetNamespaceRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getNamespace(
        new Gs2Enchant.GetNamespaceRequest()
            .withNamespaceName("namespace-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_namespace(
        enchant.GetNamespaceRequest()
            .with_namespace_name('namespace-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_namespace({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_namespace_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### updateNamespace

네임스페이스 갱신<br>

지정된 네임스페이스의 설정을 갱신합니다.<br>
네임스페이스의 설명이나 특정 설정을 변경할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| transactionSetting | [TransactionSetting](#transactionsetting) |  | ✓|  |  | 트랜잭션 설정<br>인챈트 파라미터 조작 시 트랜잭션 처리 방법을 제어하는 설정입니다. |
| logSetting | [LogSetting](#logsetting) |  | |  |  | 로그 출력 설정<br>인챈트 조작의 로그 데이터를 GS2-Log에 출력하기 위한 설정입니다. GS2-Log의 네임스페이스를 지정하면 밸런스 파라미터 및 레어리티 파라미터 조작의 API 요청·응답 로그를 수집할 수 있습니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [Namespace](#namespace) | 갱신한 네임스페이스 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.UpdateNamespace(
    &enchant.UpdateNamespaceRequest {
        NamespaceName: pointy.String("namespace-0001"),
        Description: pointy.String("description1"),
        TransactionSetting: &enchant.TransactionSetting{
            EnableAutoRun: pointy.Bool(false),
            QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
        },
        LogSetting: &enchant.LogSetting{
            LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\UpdateNamespaceRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->updateNamespace(
        (new UpdateNamespaceRequest())
            ->withNamespaceName("namespace-0001")
            ->withDescription("description1")
            ->withTransactionSetting((new \Gs2\Enchant\Model\TransactionSetting())
                ->withEnableAutoRun(false)
                ->withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            ->withLogSetting((new \Gs2\Enchant\Model\LogSetting())
                ->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.UpdateNamespaceRequest;
import io.gs2.enchant.result.UpdateNamespaceResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    UpdateNamespaceResult result = client.updateNamespace(
        new UpdateNamespaceRequest()
            .withNamespaceName("namespace-0001")
            .withDescription("description1")
            .withTransactionSetting(new io.gs2.enchant.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            .withLogSetting(new io.gs2.enchant.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.UpdateNamespaceResult> asyncResult = null;
yield return client.UpdateNamespace(
    new Gs2.Gs2Enchant.Request.UpdateNamespaceRequest()
        .WithNamespaceName("namespace-0001")
        .WithDescription("description1")
        .WithTransactionSetting(new Gs2.Gs2Enchant.Model.TransactionSetting()
            .WithEnableAutoRun(false)
            .WithQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
        .WithLogSetting(new Gs2.Gs2Enchant.Model.LogSetting()
            .WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001")),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.updateNamespace(
        new Gs2Enchant.UpdateNamespaceRequest()
            .withNamespaceName("namespace-0001")
            .withDescription("description1")
            .withTransactionSetting(new Gs2Enchant.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"))
            .withLogSetting(new Gs2Enchant.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"))
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.update_namespace(
        enchant.UpdateNamespaceRequest()
            .with_namespace_name('namespace-0001')
            .with_description('description1')
            .with_transaction_setting(
                enchant.TransactionSetting()
                    .with_enable_auto_run(False)
                    .with_queue_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001'))
            .with_log_setting(
                enchant.LogSetting()
                    .with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001'))
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.update_namespace({
    namespaceName="namespace-0001",
    description="description1",
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001",
    },
    logSetting={
        loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.update_namespace_async({
    namespaceName="namespace-0001",
    description="description1",
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001",
    },
    logSetting={
        loggingNamespaceId="grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### deleteNamespace

네임스페이스 삭제<br>

지정된 네임스페이스를 삭제합니다.<br>
이 작업은 되돌릴 수 없으며, 삭제된 네임스페이스와 관련된 모든 데이터는 복구할 수 없게 됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [Namespace](#namespace) | 삭제한 네임스페이스 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DeleteNamespace(
    &enchant.DeleteNamespaceRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DeleteNamespaceRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->deleteNamespace(
        (new DeleteNamespaceRequest())
            ->withNamespaceName("namespace-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DeleteNamespaceRequest;
import io.gs2.enchant.result.DeleteNamespaceResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DeleteNamespaceResult result = client.deleteNamespace(
        new DeleteNamespaceRequest()
            .withNamespaceName("namespace-0001")
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DeleteNamespaceResult> asyncResult = null;
yield return client.DeleteNamespace(
    new Gs2.Gs2Enchant.Request.DeleteNamespaceRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.deleteNamespace(
        new Gs2Enchant.DeleteNamespaceRequest()
            .withNamespaceName("namespace-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.delete_namespace(
        enchant.DeleteNamespaceRequest()
            .with_namespace_name('namespace-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.delete_namespace({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.delete_namespace_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getServiceVersion

마이크로서비스 버전 조회


#### Request

요청 파라미터: 없음

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | string | 버전 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetServiceVersion(
    &enchant.GetServiceVersionRequest {
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetServiceVersionRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getServiceVersion(
        (new GetServiceVersionRequest())
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetServiceVersionRequest;
import io.gs2.enchant.result.GetServiceVersionResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetServiceVersionResult result = client.getServiceVersion(
        new GetServiceVersionRequest()
    );
    String item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetServiceVersionResult> asyncResult = null;
yield return client.GetServiceVersion(
    new Gs2.Gs2Enchant.Request.GetServiceVersionRequest(),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getServiceVersion(
        new Gs2Enchant.GetServiceVersionRequest()
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_service_version(
        enchant.GetServiceVersionRequest()
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_service_version({
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_service_version_async({
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### dumpUserDataByUserId

지정한 사용자 ID에 연결된 데이터의 덤프 취득<br>

개인정보 보호에 관한 법적 요건을 충족시키기 위해 사용하거나, 데이터의 백업 및 이관에 사용할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

반환값: 없음

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DumpUserDataByUserId(
    &enchant.DumpUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DumpUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->dumpUserDataByUserId(
        (new DumpUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withTimeOffsetToken(null)
    );
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DumpUserDataByUserIdRequest;
import io.gs2.enchant.result.DumpUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DumpUserDataByUserIdResult result = client.dumpUserDataByUserId(
        new DumpUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DumpUserDataByUserIdResult> asyncResult = null;
yield return client.DumpUserDataByUserId(
    new Gs2.Gs2Enchant.Request.DumpUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.dumpUserDataByUserId(
        new Gs2Enchant.DumpUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.dump_user_data_by_user_id(
        enchant.DumpUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_time_offset_token(None)
    )
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.dump_user_data_by_user_id({
    userId="user-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.dump_user_data_by_user_id_async({
    userId="user-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```



---

### checkDumpUserDataByUserId

지정한 사용자 ID에 연결된 데이터의 덤프가 완료되었는지 확인


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| url | string | 출력 데이터의 URL |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CheckDumpUserDataByUserId(
    &enchant.CheckDumpUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
url := result.Url

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CheckDumpUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->checkDumpUserDataByUserId(
        (new CheckDumpUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withTimeOffsetToken(null)
    );
    $url = $result->getUrl();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CheckDumpUserDataByUserIdRequest;
import io.gs2.enchant.result.CheckDumpUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CheckDumpUserDataByUserIdResult result = client.checkDumpUserDataByUserId(
        new CheckDumpUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
    String url = result.getUrl();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CheckDumpUserDataByUserIdResult> asyncResult = null;
yield return client.CheckDumpUserDataByUserId(
    new Gs2.Gs2Enchant.Request.CheckDumpUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var url = result.Url;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.checkDumpUserDataByUserId(
        new Gs2Enchant.CheckDumpUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
    const url = result.getUrl();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.check_dump_user_data_by_user_id(
        enchant.CheckDumpUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_time_offset_token(None)
    )
    url = result.url
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.check_dump_user_data_by_user_id({
    userId="user-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
url = result.url;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.check_dump_user_data_by_user_id_async({
    userId="user-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
url = result.url;

```



---

### cleanUserDataByUserId

사용자 데이터 완전 삭제<br>

지정된 사용자 ID에 연결된 데이터의 클리닝을 실행합니다.<br>
이를 통해 특정 사용자 데이터를 프로젝트에서 안전하게 삭제할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

반환값: 없음

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CleanUserDataByUserId(
    &enchant.CleanUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CleanUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->cleanUserDataByUserId(
        (new CleanUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withTimeOffsetToken(null)
    );
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CleanUserDataByUserIdRequest;
import io.gs2.enchant.result.CleanUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CleanUserDataByUserIdResult result = client.cleanUserDataByUserId(
        new CleanUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CleanUserDataByUserIdResult> asyncResult = null;
yield return client.CleanUserDataByUserId(
    new Gs2.Gs2Enchant.Request.CleanUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.cleanUserDataByUserId(
        new Gs2Enchant.CleanUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.clean_user_data_by_user_id(
        enchant.CleanUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_time_offset_token(None)
    )
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.clean_user_data_by_user_id({
    userId="user-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.clean_user_data_by_user_id_async({
    userId="user-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```



---

### checkCleanUserDataByUserId

지정한 사용자 ID의 사용자 데이터 완전 삭제가 완료되었는지 확인


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

반환값: 없음

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CheckCleanUserDataByUserId(
    &enchant.CheckCleanUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CheckCleanUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->checkCleanUserDataByUserId(
        (new CheckCleanUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withTimeOffsetToken(null)
    );
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CheckCleanUserDataByUserIdRequest;
import io.gs2.enchant.result.CheckCleanUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CheckCleanUserDataByUserIdResult result = client.checkCleanUserDataByUserId(
        new CheckCleanUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CheckCleanUserDataByUserIdResult> asyncResult = null;
yield return client.CheckCleanUserDataByUserId(
    new Gs2.Gs2Enchant.Request.CheckCleanUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.checkCleanUserDataByUserId(
        new Gs2Enchant.CheckCleanUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.check_clean_user_data_by_user_id(
        enchant.CheckCleanUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_time_offset_token(None)
    )
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.check_clean_user_data_by_user_id({
    userId="user-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.check_clean_user_data_by_user_id_async({
    userId="user-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```



---

### prepareImportUserDataByUserId

지정한 사용자 ID에 연결된 데이터의 임포트 준비<br>

임포트에 사용할 수 있는 데이터는 GS2 를 통해 익스포트하여 취득한 데이터로 한정되며, 오래된 데이터는 임포트에 실패할 수 있습니다.<br>
익스포트한 사용자 ID와 다른 사용자 ID로 임포트할 수 있지만, 사용자 데이터의 페이로드 내에 사용자 ID가 포함되어 있는 경우에는 그렇지 않을 수 있습니다.<br>

이 API의 반환값으로 응답된 URL에 익스포트한 zip 파일을 업로드하고 importUserDataByUserId 를 호출함으로써 실제 임포트 처리를 시작할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| uploadToken | string | 업로드 후 결과를 반영할 때 사용하는 토큰 |
| uploadUrl | string | 사용자 데이터 업로드 처리 실행에 사용하는 URL |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.PrepareImportUserDataByUserId(
    &enchant.PrepareImportUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
uploadToken := result.UploadToken
uploadUrl := result.UploadUrl

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\PrepareImportUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->prepareImportUserDataByUserId(
        (new PrepareImportUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withTimeOffsetToken(null)
    );
    $uploadToken = $result->getUploadToken();
    $uploadUrl = $result->getUploadUrl();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.PrepareImportUserDataByUserIdRequest;
import io.gs2.enchant.result.PrepareImportUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    PrepareImportUserDataByUserIdResult result = client.prepareImportUserDataByUserId(
        new PrepareImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
    String uploadToken = result.getUploadToken();
    String uploadUrl = result.getUploadUrl();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.PrepareImportUserDataByUserIdResult> asyncResult = null;
yield return client.PrepareImportUserDataByUserId(
    new Gs2.Gs2Enchant.Request.PrepareImportUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var uploadToken = result.UploadToken;
var uploadUrl = result.UploadUrl;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.prepareImportUserDataByUserId(
        new Gs2Enchant.PrepareImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withTimeOffsetToken(null)
    );
    const uploadToken = result.getUploadToken();
    const uploadUrl = result.getUploadUrl();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.prepare_import_user_data_by_user_id(
        enchant.PrepareImportUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_time_offset_token(None)
    )
    upload_token = result.upload_token
    upload_url = result.upload_url
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.prepare_import_user_data_by_user_id({
    userId="user-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
uploadToken = result.uploadToken;
uploadUrl = result.uploadUrl;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.prepare_import_user_data_by_user_id_async({
    userId="user-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
uploadToken = result.uploadToken;
uploadUrl = result.uploadUrl;

```



---

### importUserDataByUserId

지정한 사용자 ID에 연결된 데이터의 임포트 실행<br>

임포트에 사용할 수 있는 데이터는 GS2 를 통해 익스포트하여 취득한 데이터로 한정되며, 오래된 데이터는 임포트에 실패할 수 있습니다.<br>
익스포트한 사용자 ID와 다른 사용자 ID로 임포트할 수 있지만, 사용자 데이터의 페이로드 내에 사용자 ID가 포함되어 있는 경우에는 그렇지 않을 수 있습니다.<br>

이 API를 호출하기 전에 prepareImportUserDataByUserId 를 호출하여 업로드 준비를 완료해야 합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| uploadToken | string |  | ✓|  |  ~ 1024자 | 업로드 준비 시 수신한 토큰 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

반환값: 없음

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.ImportUserDataByUserId(
    &enchant.ImportUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        UploadToken: pointy.String("upload-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\ImportUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->importUserDataByUserId(
        (new ImportUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withUploadToken("upload-0001")
            ->withTimeOffsetToken(null)
    );
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.ImportUserDataByUserIdRequest;
import io.gs2.enchant.result.ImportUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    ImportUserDataByUserIdResult result = client.importUserDataByUserId(
        new ImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withUploadToken("upload-0001")
            .withTimeOffsetToken(null)
    );
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.ImportUserDataByUserIdResult> asyncResult = null;
yield return client.ImportUserDataByUserId(
    new Gs2.Gs2Enchant.Request.ImportUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithUploadToken("upload-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.importUserDataByUserId(
        new Gs2Enchant.ImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withUploadToken("upload-0001")
            .withTimeOffsetToken(null)
    );
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.import_user_data_by_user_id(
        enchant.ImportUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_upload_token('upload-0001')
            .with_time_offset_token(None)
    )
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.import_user_data_by_user_id({
    userId="user-0001",
    uploadToken="upload-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.import_user_data_by_user_id_async({
    userId="user-0001",
    uploadToken="upload-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result

```



---

### checkImportUserDataByUserId

지정한 사용자 ID에 연결된 데이터의 임포트가 완료되었는지 확인


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| uploadToken | string |  | ✓|  |  ~ 1024자 | 업로드 준비 시 수신한 토큰 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| url | string | 출력 로그의 URL |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CheckImportUserDataByUserId(
    &enchant.CheckImportUserDataByUserIdRequest {
        UserId: pointy.String("user-0001"),
        UploadToken: pointy.String("upload-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
url := result.Url

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CheckImportUserDataByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->checkImportUserDataByUserId(
        (new CheckImportUserDataByUserIdRequest())
            ->withUserId("user-0001")
            ->withUploadToken("upload-0001")
            ->withTimeOffsetToken(null)
    );
    $url = $result->getUrl();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CheckImportUserDataByUserIdRequest;
import io.gs2.enchant.result.CheckImportUserDataByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CheckImportUserDataByUserIdResult result = client.checkImportUserDataByUserId(
        new CheckImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withUploadToken("upload-0001")
            .withTimeOffsetToken(null)
    );
    String url = result.getUrl();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CheckImportUserDataByUserIdResult> asyncResult = null;
yield return client.CheckImportUserDataByUserId(
    new Gs2.Gs2Enchant.Request.CheckImportUserDataByUserIdRequest()
        .WithUserId("user-0001")
        .WithUploadToken("upload-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var url = result.Url;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.checkImportUserDataByUserId(
        new Gs2Enchant.CheckImportUserDataByUserIdRequest()
            .withUserId("user-0001")
            .withUploadToken("upload-0001")
            .withTimeOffsetToken(null)
    );
    const url = result.getUrl();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.check_import_user_data_by_user_id(
        enchant.CheckImportUserDataByUserIdRequest()
            .with_user_id('user-0001')
            .with_upload_token('upload-0001')
            .with_time_offset_token(None)
    )
    url = result.url
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.check_import_user_data_by_user_id({
    userId="user-0001",
    uploadToken="upload-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
url = result.url;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.check_import_user_data_by_user_id_async({
    userId="user-0001",
    uploadToken="upload-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
url = result.url;

```



---

### describeBalanceParameterStatuses

밸런스 파라미터 상태 목록 조회<br>

현재 로그인한 사용자의 밸런스 파라미터 상태의 페이지네이션 리스트를 조회합니다.<br>
파라미터 이름으로 필터링하여 특정 파라미터 모델의 상태만 조회할 수도 있습니다.<br>
각 상태는 특정 프로퍼티(예: 아이템)에 할당된 현재 파라미터 값을 나타냅니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| accessToken | string |  | ✓|  |  ~ 128자 | 액세스 토큰 |
| parameterName | string |  | |  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;BalanceParameterStatus&gt;](#balanceparameterstatus) | 밸런스 파라미터 상태 목록 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeBalanceParameterStatuses(
    &enchant.DescribeBalanceParameterStatusesRequest {
        NamespaceName: pointy.String("namespace-0001"),
        AccessToken: pointy.String("accessToken-0001"),
        ParameterName: pointy.String("balance-0001"),
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeBalanceParameterStatusesRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeBalanceParameterStatuses(
        (new DescribeBalanceParameterStatusesRequest())
            ->withNamespaceName("namespace-0001")
            ->withAccessToken("accessToken-0001")
            ->withParameterName("balance-0001")
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeBalanceParameterStatusesRequest;
import io.gs2.enchant.result.DescribeBalanceParameterStatusesResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeBalanceParameterStatusesResult result = client.describeBalanceParameterStatuses(
        new DescribeBalanceParameterStatusesRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("balance-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    List<BalanceParameterStatus> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeBalanceParameterStatusesResult> asyncResult = null;
yield return client.DescribeBalanceParameterStatuses(
    new Gs2.Gs2Enchant.Request.DescribeBalanceParameterStatusesRequest()
        .WithNamespaceName("namespace-0001")
        .WithAccessToken("accessToken-0001")
        .WithParameterName("balance-0001")
        .WithPageToken(null)
        .WithLimit(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeBalanceParameterStatuses(
        new Gs2Enchant.DescribeBalanceParameterStatusesRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("balance-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_balance_parameter_statuses(
        enchant.DescribeBalanceParameterStatusesRequest()
            .with_namespace_name('namespace-0001')
            .with_access_token('accessToken-0001')
            .with_parameter_name('balance-0001')
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_balance_parameter_statuses({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="balance-0001",
    pageToken=nil,
    limit=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_balance_parameter_statuses_async({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="balance-0001",
    pageToken=nil,
    limit=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### describeBalanceParameterStatusesByUserId

사용자 ID를 지정하여 밸런스 파라미터 상태 목록 조회<br>

지정된 사용자의 밸런스 파라미터 상태의 페이지네이션 리스트를 조회합니다.<br>
파라미터 이름으로 필터링하여 특정 파라미터 모델의 상태만 조회할 수도 있습니다.<br>
각 상태는 특정 프로퍼티(예: 아이템)에 할당된 현재 파라미터 값을 나타냅니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | |  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;BalanceParameterStatus&gt;](#balanceparameterstatus) | 밸런스 파라미터 상태 목록 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeBalanceParameterStatusesByUserId(
    &enchant.DescribeBalanceParameterStatusesByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("balance-0001"),
        PageToken: nil,
        Limit: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeBalanceParameterStatusesByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeBalanceParameterStatusesByUserId(
        (new DescribeBalanceParameterStatusesByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("balance-0001")
            ->withPageToken(null)
            ->withLimit(null)
            ->withTimeOffsetToken(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeBalanceParameterStatusesByUserIdRequest;
import io.gs2.enchant.result.DescribeBalanceParameterStatusesByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeBalanceParameterStatusesByUserIdResult result = client.describeBalanceParameterStatusesByUserId(
        new DescribeBalanceParameterStatusesByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPageToken(null)
            .withLimit(null)
            .withTimeOffsetToken(null)
    );
    List<BalanceParameterStatus> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeBalanceParameterStatusesByUserIdResult> asyncResult = null;
yield return client.DescribeBalanceParameterStatusesByUserId(
    new Gs2.Gs2Enchant.Request.DescribeBalanceParameterStatusesByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("balance-0001")
        .WithPageToken(null)
        .WithLimit(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeBalanceParameterStatusesByUserId(
        new Gs2Enchant.DescribeBalanceParameterStatusesByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPageToken(null)
            .withLimit(null)
            .withTimeOffsetToken(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_balance_parameter_statuses_by_user_id(
        enchant.DescribeBalanceParameterStatusesByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('balance-0001')
            .with_page_token(None)
            .with_limit(None)
            .with_time_offset_token(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_balance_parameter_statuses_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    pageToken=nil,
    limit=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_balance_parameter_statuses_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    pageToken=nil,
    limit=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### getBalanceParameterStatus

밸런스 파라미터 상태를 조회<br>

현재 로그인한 사용자의 특정 프로퍼티에 대한 밸런스 파라미터의 현재 값을 조회합니다.<br>
상태에는 파라미터가 처음 추첨되었을 때 또는 마지막으로 재추첨되었을 때 할당된 값이 포함되며, 모든 값의 합계는 모델의 합계 값과 같습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| accessToken | string |  | ✓|  |  ~ 128자 | 액세스 토큰 |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterStatus](#balanceparameterstatus) | 밸런스 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetBalanceParameterStatus(
    &enchant.GetBalanceParameterStatusRequest {
        NamespaceName: pointy.String("namespace-0001"),
        AccessToken: pointy.String("accessToken-0001"),
        ParameterName: pointy.String("balance-0001"),
        PropertyId: pointy.String("property-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetBalanceParameterStatusRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getBalanceParameterStatus(
        (new GetBalanceParameterStatusRequest())
            ->withNamespaceName("namespace-0001")
            ->withAccessToken("accessToken-0001")
            ->withParameterName("balance-0001")
            ->withPropertyId("property-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetBalanceParameterStatusRequest;
import io.gs2.enchant.result.GetBalanceParameterStatusResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetBalanceParameterStatusResult result = client.getBalanceParameterStatus(
        new GetBalanceParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
    );
    BalanceParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetBalanceParameterStatusResult> asyncResult = null;
yield return client.GetBalanceParameterStatus(
    new Gs2.Gs2Enchant.Request.GetBalanceParameterStatusRequest()
        .WithNamespaceName("namespace-0001")
        .WithAccessToken("accessToken-0001")
        .WithParameterName("balance-0001")
        .WithPropertyId("property-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getBalanceParameterStatus(
        new Gs2Enchant.GetBalanceParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_balance_parameter_status(
        enchant.GetBalanceParameterStatusRequest()
            .with_namespace_name('namespace-0001')
            .with_access_token('accessToken-0001')
            .with_parameter_name('balance-0001')
            .with_property_id('property-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_balance_parameter_status({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_balance_parameter_status_async({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getBalanceParameterStatusByUserId

사용자 ID를 지정하여 밸런스 파라미터 상태를 조회<br>

지정된 사용자의 특정 프로퍼티에 대한 밸런스 파라미터의 현재 값을 조회합니다.<br>
상태에는 파라미터가 처음 추첨되었을 때 또는 마지막으로 재추첨되었을 때 할당된 값이 포함되며, 모든 값의 합계는 모델의 합계 값과 같습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterStatus](#balanceparameterstatus) | 밸런스 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetBalanceParameterStatusByUserId(
    &enchant.GetBalanceParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("balance-0001"),
        PropertyId: pointy.String("property-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetBalanceParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getBalanceParameterStatusByUserId(
        (new GetBalanceParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("balance-0001")
            ->withPropertyId("property-0001")
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetBalanceParameterStatusByUserIdRequest;
import io.gs2.enchant.result.GetBalanceParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetBalanceParameterStatusByUserIdResult result = client.getBalanceParameterStatusByUserId(
        new GetBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    BalanceParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetBalanceParameterStatusByUserIdResult> asyncResult = null;
yield return client.GetBalanceParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.GetBalanceParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("balance-0001")
        .WithPropertyId("property-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getBalanceParameterStatusByUserId(
        new Gs2Enchant.GetBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_balance_parameter_status_by_user_id(
        enchant.GetBalanceParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('balance-0001')
            .with_property_id('property-0001')
            .with_time_offset_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_balance_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_balance_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### deleteBalanceParameterStatusByUserId

밸런스 파라미터 상태를 삭제<br>

지정된 사용자의 특정 프로퍼티에 대한 밸런스 파라미터 상태를 삭제합니다.<br>
삭제된 파라미터 값은 영구적으로 삭제되며 복구할 수 없습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterStatus](#balanceparameterstatus) | 삭제한 밸런스 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DeleteBalanceParameterStatusByUserId(
    &enchant.DeleteBalanceParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("balance-0001"),
        PropertyId: pointy.String("property-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DeleteBalanceParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->deleteBalanceParameterStatusByUserId(
        (new DeleteBalanceParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("balance-0001")
            ->withPropertyId("property-0001")
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DeleteBalanceParameterStatusByUserIdRequest;
import io.gs2.enchant.result.DeleteBalanceParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DeleteBalanceParameterStatusByUserIdResult result = client.deleteBalanceParameterStatusByUserId(
        new DeleteBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    BalanceParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DeleteBalanceParameterStatusByUserIdResult> asyncResult = null;
yield return client.DeleteBalanceParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.DeleteBalanceParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("balance-0001")
        .WithPropertyId("property-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.deleteBalanceParameterStatusByUserId(
        new Gs2Enchant.DeleteBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.delete_balance_parameter_status_by_user_id(
        enchant.DeleteBalanceParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('balance-0001')
            .with_property_id('property-0001')
            .with_time_offset_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.delete_balance_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.delete_balance_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### reDrawBalanceParameterStatusByUserId

사용자 ID를 지정하여 밸런스 파라미터 재추첨<br>

특정 프로퍼티의 밸런스 파라미터 값을 재추첨하고, 합계값을 파라미터 간에 재분배합니다.<br>
fixedParameterNames 에 파라미터 이름을 지정하면 특정 파라미터를 고정(잠금)하여 재추첨 대상에서 제외할 수 있습니다(최대 10개).<br>
합계값 제약은 유지됩니다: 고정된 파라미터를 포함한 모든 파라미터 값의 합계는 항상 모델의 합계값과 같습니다.<br>
업데이트 후와 업데이트 전 파라미터 상태가 모두 반환됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| fixedParameterNames | List&lt;string&gt; |  | | [] | 0 ~ 10 items | 재추첨하지 않는 파라미터의 이름 리스트 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterStatus](#balanceparameterstatus) | 업데이트한 밸런스 파라미터 상태 |
| old | [BalanceParameterStatus](#balanceparameterstatus) | 업데이트하기 전의 밸런스 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.ReDrawBalanceParameterStatusByUserId(
    &enchant.ReDrawBalanceParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("balance-0001"),
        PropertyId: pointy.String("property-0001"),
        FixedParameterNames: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
old := result.Old

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\ReDrawBalanceParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->reDrawBalanceParameterStatusByUserId(
        (new ReDrawBalanceParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("balance-0001")
            ->withPropertyId("property-0001")
            ->withFixedParameterNames(null)
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
    $old = $result->getOld();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.ReDrawBalanceParameterStatusByUserIdRequest;
import io.gs2.enchant.result.ReDrawBalanceParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    ReDrawBalanceParameterStatusByUserIdResult result = client.reDrawBalanceParameterStatusByUserId(
        new ReDrawBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withFixedParameterNames(null)
            .withTimeOffsetToken(null)
    );
    BalanceParameterStatus item = result.getItem();
    BalanceParameterStatus old = result.getOld();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.ReDrawBalanceParameterStatusByUserIdResult> asyncResult = null;
yield return client.ReDrawBalanceParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.ReDrawBalanceParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("balance-0001")
        .WithPropertyId("property-0001")
        .WithFixedParameterNames(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var old = result.Old;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.reDrawBalanceParameterStatusByUserId(
        new Gs2Enchant.ReDrawBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withFixedParameterNames(null)
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
    const old = result.getOld();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.re_draw_balance_parameter_status_by_user_id(
        enchant.ReDrawBalanceParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('balance-0001')
            .with_property_id('property-0001')
            .with_fixed_parameter_names(None)
            .with_time_offset_token(None)
    )
    item = result.item
    old = result.old
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.re_draw_balance_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    fixedParameterNames=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.re_draw_balance_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    fixedParameterNames=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```



---

### setBalanceParameterStatusByUserId

사용자 ID를 지정하여 밸런스 파라미터에 임의의 값을 설정<br>

통상적인 추첨/재추첨 메커니즘을 거치지 않고, 지정된 사용자의 특정 프로퍼티에 파라미터 값을 직접 설정합니다.<br>
이는 임의의 파라미터 값을 할당할 수 있는 관리 작업입니다.<br>
업데이트 후와 업데이트 전 파라미터 상태가 모두 반환됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터를 보유한 리소스의 프로퍼티 ID<br>이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| parameterValues | [List&lt;BalanceParameterValue&gt;](#balanceparametervalue) |  | ✓|  | 1 ~ 10 items | 밸런스 파라미터 값 리스트<br>추첨 처리 후 각 파라미터 슬롯에 할당된 구체적인 값입니다. 각 엔트리는 모델에서 정의된 파라미터 슬롯에 대응하며, 할당된 실제 수치를 보유합니다. 모든 값의 합계는 모델에서 지정된 합계 값과 같아집니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterStatus](#balanceparameterstatus) | 업데이트한 밸런스 파라미터 상태 |
| old | [BalanceParameterStatus](#balanceparameterstatus) | 업데이트하기 전의 밸런스 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.SetBalanceParameterStatusByUserId(
    &enchant.SetBalanceParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("balance-0001"),
        PropertyId: pointy.String("property-0001"),
        ParameterValues: []enchant.BalanceParameterValue{
            enchant.BalanceParameterValue{
                Name: pointy.String("parameter-0001"),
                Value: pointy.Int64(100),
            },
            enchant.BalanceParameterValue{
                Name: pointy.String("parameter-0002"),
                Value: pointy.Int64(200),
            },
        },
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
old := result.Old

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\SetBalanceParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->setBalanceParameterStatusByUserId(
        (new SetBalanceParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("balance-0001")
            ->withPropertyId("property-0001")
            ->withParameterValues([
                (new BalanceParameterValue())
                    ->withName("parameter-0001")
                    ->withValue(100),
                (new BalanceParameterValue())
                    ->withName("parameter-0002")
                    ->withValue(200),
            ])
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
    $old = $result->getOld();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.SetBalanceParameterStatusByUserIdRequest;
import io.gs2.enchant.result.SetBalanceParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    SetBalanceParameterStatusByUserIdResult result = client.setBalanceParameterStatusByUserId(
        new SetBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withParameterValues(Arrays.asList(
                new BalanceParameterValue()
                    .withName("parameter-0001")
                    .withValue(100L),
                new BalanceParameterValue()
                    .withName("parameter-0002")
                    .withValue(200L)
            ))
            .withTimeOffsetToken(null)
    );
    BalanceParameterStatus item = result.getItem();
    BalanceParameterStatus old = result.getOld();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.SetBalanceParameterStatusByUserIdResult> asyncResult = null;
yield return client.SetBalanceParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.SetBalanceParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("balance-0001")
        .WithPropertyId("property-0001")
        .WithParameterValues(new Gs2.Gs2Enchant.Model.BalanceParameterValue[] {
            new Gs2.Gs2Enchant.Model.BalanceParameterValue()
                .WithName("parameter-0001")
                .WithValue(100L),
            new Gs2.Gs2Enchant.Model.BalanceParameterValue()
                .WithName("parameter-0002")
                .WithValue(200L),
        })
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var old = result.Old;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.setBalanceParameterStatusByUserId(
        new Gs2Enchant.SetBalanceParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("balance-0001")
            .withPropertyId("property-0001")
            .withParameterValues([
                new Gs2Enchant.model.BalanceParameterValue()
                    .withName("parameter-0001")
                    .withValue(100),
                new Gs2Enchant.model.BalanceParameterValue()
                    .withName("parameter-0002")
                    .withValue(200),
            ])
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
    const old = result.getOld();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.set_balance_parameter_status_by_user_id(
        enchant.SetBalanceParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('balance-0001')
            .with_property_id('property-0001')
            .with_parameter_values([
                enchant.BalanceParameterValue()
                    .with_name('parameter-0001')
                    .with_value(100),
                enchant.BalanceParameterValue()
                    .with_name('parameter-0002')
                    .with_value(200),
            ])
            .with_time_offset_token(None)
    )
    item = result.item
    old = result.old
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.set_balance_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    parameterValues={
        {
            name="parameter-0001",
            value=100,
        },
        {
            name="parameter-0002",
            value=200,
        }
    },
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.set_balance_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="balance-0001",
    propertyId="property-0001",
    parameterValues={
        {
            name="parameter-0001",
            value=100,
        },
        {
            name="parameter-0002",
            value=200,
        }
    },
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```



---

### describeRarityParameterStatuses

레어리티 파라미터 상태 목록을 조회<br>

현재 로그인한 사용자의 레어리티 파라미터 상태의 페이지네이션 목록을 조회합니다.<br>
파라미터 이름으로 필터링하여 특정 파라미터 모델의 상태만 조회할 수도 있습니다.<br>
각 상태는 특정 프로퍼티(예: 아이템)에 할당된 레어리티 기반 파라미터 값의 현재 세트를 나타냅니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| accessToken | string |  | ✓|  |  ~ 128자 | 액세스 토큰 |
| parameterName | string |  | |  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;RarityParameterStatus&gt;](#rarityparameterstatus) | 레어리티 파라미터 모델의 리스트 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeRarityParameterStatuses(
    &enchant.DescribeRarityParameterStatusesRequest {
        NamespaceName: pointy.String("namespace-0001"),
        AccessToken: pointy.String("accessToken-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeRarityParameterStatusesRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeRarityParameterStatuses(
        (new DescribeRarityParameterStatusesRequest())
            ->withNamespaceName("namespace-0001")
            ->withAccessToken("accessToken-0001")
            ->withParameterName("rarity-0001")
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeRarityParameterStatusesRequest;
import io.gs2.enchant.result.DescribeRarityParameterStatusesResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeRarityParameterStatusesResult result = client.describeRarityParameterStatuses(
        new DescribeRarityParameterStatusesRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("rarity-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    List<RarityParameterStatus> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeRarityParameterStatusesResult> asyncResult = null;
yield return client.DescribeRarityParameterStatuses(
    new Gs2.Gs2Enchant.Request.DescribeRarityParameterStatusesRequest()
        .WithNamespaceName("namespace-0001")
        .WithAccessToken("accessToken-0001")
        .WithParameterName("rarity-0001")
        .WithPageToken(null)
        .WithLimit(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeRarityParameterStatuses(
        new Gs2Enchant.DescribeRarityParameterStatusesRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("rarity-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_rarity_parameter_statuses(
        enchant.DescribeRarityParameterStatusesRequest()
            .with_namespace_name('namespace-0001')
            .with_access_token('accessToken-0001')
            .with_parameter_name('rarity-0001')
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_rarity_parameter_statuses({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="rarity-0001",
    pageToken=nil,
    limit=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_rarity_parameter_statuses_async({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="rarity-0001",
    pageToken=nil,
    limit=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### describeRarityParameterStatusesByUserId

사용자 ID를 지정하여 레어리티 파라미터 상태 목록을 조회<br>

지정된 사용자의 레어리티 파라미터 상태의 페이지네이션 목록을 조회합니다.<br>
파라미터 이름으로 필터링하여 특정 파라미터 모델의 상태만 조회할 수도 있습니다.<br>
각 상태는 특정 프로퍼티(예: 아이템)에 할당된 레어리티 기반 파라미터 값의 현재 세트를 나타냅니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | |  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;RarityParameterStatus&gt;](#rarityparameterstatus) | 레어리티 파라미터 모델의 리스트 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeRarityParameterStatusesByUserId(
    &enchant.DescribeRarityParameterStatusesByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PageToken: nil,
        Limit: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeRarityParameterStatusesByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeRarityParameterStatusesByUserId(
        (new DescribeRarityParameterStatusesByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPageToken(null)
            ->withLimit(null)
            ->withTimeOffsetToken(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeRarityParameterStatusesByUserIdRequest;
import io.gs2.enchant.result.DescribeRarityParameterStatusesByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeRarityParameterStatusesByUserIdResult result = client.describeRarityParameterStatusesByUserId(
        new DescribeRarityParameterStatusesByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPageToken(null)
            .withLimit(null)
            .withTimeOffsetToken(null)
    );
    List<RarityParameterStatus> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeRarityParameterStatusesByUserIdResult> asyncResult = null;
yield return client.DescribeRarityParameterStatusesByUserId(
    new Gs2.Gs2Enchant.Request.DescribeRarityParameterStatusesByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPageToken(null)
        .WithLimit(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeRarityParameterStatusesByUserId(
        new Gs2Enchant.DescribeRarityParameterStatusesByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPageToken(null)
            .withLimit(null)
            .withTimeOffsetToken(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_rarity_parameter_statuses_by_user_id(
        enchant.DescribeRarityParameterStatusesByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_page_token(None)
            .with_limit(None)
            .with_time_offset_token(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_rarity_parameter_statuses_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    pageToken=nil,
    limit=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_rarity_parameter_statuses_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    pageToken=nil,
    limit=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### getRarityParameterStatus

레어리티 파라미터 상태를 조회<br>

현재 로그인한 사용자의 특정 프로퍼티에 대한 레어리티 파라미터의 현재 값을 조회합니다.<br>
상태에는 모델에서 정의된 레어리티 가중치에 기반하여 무작위로 추첨된 파라미터 값이 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| accessToken | string |  | ✓|  |  ~ 128자 | 액세스 토큰 |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetRarityParameterStatus(
    &enchant.GetRarityParameterStatusRequest {
        NamespaceName: pointy.String("namespace-0001"),
        AccessToken: pointy.String("accessToken-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetRarityParameterStatusRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getRarityParameterStatus(
        (new GetRarityParameterStatusRequest())
            ->withNamespaceName("namespace-0001")
            ->withAccessToken("accessToken-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetRarityParameterStatusRequest;
import io.gs2.enchant.result.GetRarityParameterStatusResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetRarityParameterStatusResult result = client.getRarityParameterStatus(
        new GetRarityParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
    );
    RarityParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetRarityParameterStatusResult> asyncResult = null;
yield return client.GetRarityParameterStatus(
    new Gs2.Gs2Enchant.Request.GetRarityParameterStatusRequest()
        .WithNamespaceName("namespace-0001")
        .WithAccessToken("accessToken-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getRarityParameterStatus(
        new Gs2Enchant.GetRarityParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withAccessToken("accessToken-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_rarity_parameter_status(
        enchant.GetRarityParameterStatusRequest()
            .with_namespace_name('namespace-0001')
            .with_access_token('accessToken-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_rarity_parameter_status({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_rarity_parameter_status_async({
    namespaceName="namespace-0001",
    accessToken="accessToken-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getRarityParameterStatusByUserId

사용자 ID를 지정하여 레어리티 파라미터 상태를 조회<br>

지정된 사용자의 특정 프로퍼티에 대한 레어리티 파라미터의 현재 값을 조회합니다.<br>
상태에는 모델에서 정의된 레어리티 가중치에 기반하여 무작위로 추첨된 파라미터 값이 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetRarityParameterStatusByUserId(
    &enchant.GetRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getRarityParameterStatusByUserId(
        (new GetRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.GetRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetRarityParameterStatusByUserIdResult result = client.getRarityParameterStatusByUserId(
        new GetRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.GetRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.GetRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getRarityParameterStatusByUserId(
        new Gs2Enchant.GetRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_rarity_parameter_status_by_user_id(
        enchant.GetRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
            .with_time_offset_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### deleteRarityParameterStatusByUserId

레어리티 파라미터 상태를 삭제<br>

지정된 사용자의 특정 프로퍼티에 대한 레어리티 파라미터 상태를 삭제합니다.<br>
삭제된 파라미터 값은 영구적으로 손실되며 복원할 수 없습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 삭제한 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DeleteRarityParameterStatusByUserId(
    &enchant.DeleteRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DeleteRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->deleteRarityParameterStatusByUserId(
        (new DeleteRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DeleteRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.DeleteRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DeleteRarityParameterStatusByUserIdResult result = client.deleteRarityParameterStatusByUserId(
        new DeleteRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DeleteRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.DeleteRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.DeleteRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001")
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.deleteRarityParameterStatusByUserId(
        new Gs2Enchant.DeleteRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.delete_rarity_parameter_status_by_user_id(
        enchant.DeleteRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
            .with_time_offset_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.delete_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.delete_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### reDrawRarityParameterStatusByUserId

사용자 ID를 지정하여 레어리티 파라미터를 재추첨<br>

특정 프로퍼티의 레어리티 파라미터 값을 재추첨하고, 레어리티 가중치에 기반하여 무작위로 새 값을 할당합니다.<br>
fixedParameterNames 에 파라미터 이름을 지정하면 특정 파라미터를 고정(잠금)하여 재추첨 대상에서 제외할 수 있습니다(최대 10개).<br>
고정된 파라미터는 현재 값을 유지하며, 고정되지 않은 파라미터만 재추첨됩니다.<br>
업데이트 후와 업데이트 전 파라미터 상태가 모두 반환됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| fixedParameterNames | List&lt;string&gt; |  | |  | 0 ~ 10 items | 재추첨하지 않는 파라미터의 이름 리스트 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 업데이트한 레어리티 파라미터 상태 |
| old | [RarityParameterStatus](#rarityparameterstatus) | 업데이트하기 전의 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.ReDrawRarityParameterStatusByUserId(
    &enchant.ReDrawRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
        FixedParameterNames: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
old := result.Old

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\ReDrawRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->reDrawRarityParameterStatusByUserId(
        (new ReDrawRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
            ->withFixedParameterNames(null)
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
    $old = $result->getOld();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.ReDrawRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.ReDrawRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    ReDrawRarityParameterStatusByUserIdResult result = client.reDrawRarityParameterStatusByUserId(
        new ReDrawRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withFixedParameterNames(null)
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
    RarityParameterStatus old = result.getOld();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.ReDrawRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.ReDrawRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.ReDrawRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001")
        .WithFixedParameterNames(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var old = result.Old;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.reDrawRarityParameterStatusByUserId(
        new Gs2Enchant.ReDrawRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withFixedParameterNames(null)
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
    const old = result.getOld();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.re_draw_rarity_parameter_status_by_user_id(
        enchant.ReDrawRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
            .with_fixed_parameter_names(None)
            .with_time_offset_token(None)
    )
    item = result.item
    old = result.old
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.re_draw_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    fixedParameterNames=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.re_draw_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    fixedParameterNames=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```



---

### addRarityParameterStatusByUserId

사용자 ID를 지정하여 레어리티 파라미터를 추가<br>

레어리티 가중치에 기반하여 무작위로 값을 추첨하고, 기존 레어리티 파라미터 상태에 새 파라미터 슬롯을 추가합니다.<br>
count 는 추가할 파라미터 슬롯의 수(1~10)를 지정하며, 모델의 최대 파라미터 수가 상한이 됩니다.<br>
업데이트 후와 업데이트 전 파라미터 상태가 모두 반환됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| count | int |  | | 1 | 1 ~ 10 | 추가할 파라미터의 수 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 업데이트한 레어리티 파라미터 상태 |
| old | [RarityParameterStatus](#rarityparameterstatus) | 업데이트하기 전의 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.AddRarityParameterStatusByUserId(
    &enchant.AddRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
        Count: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
old := result.Old

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\AddRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->addRarityParameterStatusByUserId(
        (new AddRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
            ->withCount(null)
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
    $old = $result->getOld();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.AddRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.AddRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    AddRarityParameterStatusByUserIdResult result = client.addRarityParameterStatusByUserId(
        new AddRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withCount(null)
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
    RarityParameterStatus old = result.getOld();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.AddRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.AddRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.AddRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001")
        .WithCount(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var old = result.Old;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.addRarityParameterStatusByUserId(
        new Gs2Enchant.AddRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withCount(null)
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
    const old = result.getOld();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.add_rarity_parameter_status_by_user_id(
        enchant.AddRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
            .with_count(None)
            .with_time_offset_token(None)
    )
    item = result.item
    old = result.old
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.add_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    count=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.add_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    count=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```



---

### verifyRarityParameterStatus

레어리티 파라미터를 검증<br>

레어리티 파라미터 상태가 지정된 조건을 충족하는지 검증합니다.<br>
3가지 검증 유형이 지원됩니다:<br>
- 'have': 지정된 파라미터 값이 상태에 존재하는지 검증<br>
- 'havent': 지정된 파라미터 값이 상태에 존재하지 않는지 검증<br>
- 'count': 파라미터의 수가 지정된 수와 일치하는지 검증<br>
다른 액션을 실행하기 전의 전제 조건 확인으로 사용할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| accessToken | string |  | ✓|  |  ~ 128자 | 액세스 토큰 |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| verifyType | 문자열 열거형<br>enum {<br>"havent",<br>"have",<br>"count"<br>}<br> |  | ✓|  |  | 검증 종류havent: 지정한 파라미터를 보유하고 있지 않을 것 / have: 지정한 파라미터를 보유하고 있을 것 / count: 보유하고 있는 파라미터의 수가 지정한 수와 같을 것 /  |
| parameterValueName | string | {verifyType} in ["havent", "have"] | ✓※|  |  ~ 64자 | 이름<br>이 추첨 엔트리의 식별자입니다. 레어리티 파라미터 모델의 값 풀 내에서 고유해야 합니다. 추첨되었을 때, 이 이름이 결과 레어리티 파라미터 값에 저장됩니다.<br>※ verifyType이(가) "havent","have"이면 필수 |
| parameterCount | int | {verifyType} == "count" | ✓※|  | 0 ~ 10 | 검증할 파라미터의 수<br>※ verifyType이(가) "count" 이면 필수 |
| multiplyValueSpecifyingQuantity | bool |  | | false |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.VerifyRarityParameterStatus(
    &enchant.VerifyRarityParameterStatusRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
        AccessToken: pointy.String("accessToken-0001"),
        PropertyId: pointy.String("property-0001"),
        VerifyType: pointy.String("have"),
        ParameterValueName: pointy.String("parameter-0001"),
        ParameterCount: nil,
        MultiplyValueSpecifyingQuantity: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\VerifyRarityParameterStatusRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->verifyRarityParameterStatus(
        (new VerifyRarityParameterStatusRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
            ->withAccessToken("accessToken-0001")
            ->withPropertyId("property-0001")
            ->withVerifyType("have")
            ->withParameterValueName("parameter-0001")
            ->withParameterCount(null)
            ->withMultiplyValueSpecifyingQuantity(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.VerifyRarityParameterStatusRequest;
import io.gs2.enchant.result.VerifyRarityParameterStatusResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    VerifyRarityParameterStatusResult result = client.verifyRarityParameterStatus(
        new VerifyRarityParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withAccessToken("accessToken-0001")
            .withPropertyId("property-0001")
            .withVerifyType("have")
            .withParameterValueName("parameter-0001")
            .withParameterCount(null)
            .withMultiplyValueSpecifyingQuantity(null)
    );
    RarityParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.VerifyRarityParameterStatusResult> asyncResult = null;
yield return client.VerifyRarityParameterStatus(
    new Gs2.Gs2Enchant.Request.VerifyRarityParameterStatusRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001")
        .WithAccessToken("accessToken-0001")
        .WithPropertyId("property-0001")
        .WithVerifyType("have")
        .WithParameterValueName("parameter-0001")
        .WithParameterCount(null)
        .WithMultiplyValueSpecifyingQuantity(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.verifyRarityParameterStatus(
        new Gs2Enchant.VerifyRarityParameterStatusRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withAccessToken("accessToken-0001")
            .withPropertyId("property-0001")
            .withVerifyType("have")
            .withParameterValueName("parameter-0001")
            .withParameterCount(null)
            .withMultiplyValueSpecifyingQuantity(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.verify_rarity_parameter_status(
        enchant.VerifyRarityParameterStatusRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
            .with_access_token('accessToken-0001')
            .with_property_id('property-0001')
            .with_verify_type('have')
            .with_parameter_value_name('parameter-0001')
            .with_parameter_count(None)
            .with_multiply_value_specifying_quantity(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.verify_rarity_parameter_status({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    accessToken="accessToken-0001",
    propertyId="property-0001",
    verifyType="have",
    parameterValueName="parameter-0001",
    parameterCount=nil,
    multiplyValueSpecifyingQuantity=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.verify_rarity_parameter_status_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    accessToken="accessToken-0001",
    propertyId="property-0001",
    verifyType="have",
    parameterValueName="parameter-0001",
    parameterCount=nil,
    multiplyValueSpecifyingQuantity=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### verifyRarityParameterStatusByUserId

사용자 ID를 지정하여 레어리티 파라미터를 검증<br>

지정된 사용자의 레어리티 파라미터 상태가 지정된 조건을 충족하는지 검증합니다.<br>
3가지 검증 유형이 지원됩니다:<br>
- 'have': 지정된 파라미터 값이 상태에 존재하는지 검증<br>
- 'havent': 지정된 파라미터 값이 상태에 존재하지 않는지 검증<br>
- 'count': 파라미터의 수가 지정된 수와 일치하는지 검증<br>
다른 액션을 실행하기 전의 전제 조건 확인으로 사용할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| verifyType | 문자열 열거형<br>enum {<br>"havent",<br>"have",<br>"count"<br>}<br> |  | ✓|  |  | 검증 종류havent: 지정한 파라미터를 보유하고 있지 않을 것 / have: 지정한 파라미터를 보유하고 있을 것 / count: 보유하고 있는 파라미터의 수가 지정한 수와 같을 것 /  |
| parameterValueName | string | {verifyType} in ["havent", "have"] | ✓※|  |  ~ 64자 | 이름<br>이 추첨 엔트리의 식별자입니다. 레어리티 파라미터 모델의 값 풀 내에서 고유해야 합니다. 추첨되었을 때, 이 이름이 결과 레어리티 파라미터 값에 저장됩니다.<br>※ verifyType이(가) "havent","have"이면 필수 |
| parameterCount | int | {verifyType} == "count" | ✓※|  | 0 ~ 10 | 검증할 파라미터의 수<br>※ verifyType이(가) "count" 이면 필수 |
| multiplyValueSpecifyingQuantity | bool |  | | false |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.VerifyRarityParameterStatusByUserId(
    &enchant.VerifyRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
        UserId: pointy.String("user-0001"),
        PropertyId: pointy.String("property-0001"),
        VerifyType: pointy.String("have"),
        ParameterValueName: pointy.String("parameter-0001"),
        ParameterCount: nil,
        MultiplyValueSpecifyingQuantity: nil,
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\VerifyRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->verifyRarityParameterStatusByUserId(
        (new VerifyRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
            ->withUserId("user-0001")
            ->withPropertyId("property-0001")
            ->withVerifyType("have")
            ->withParameterValueName("parameter-0001")
            ->withParameterCount(null)
            ->withMultiplyValueSpecifyingQuantity(null)
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.VerifyRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.VerifyRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    VerifyRarityParameterStatusByUserIdResult result = client.verifyRarityParameterStatusByUserId(
        new VerifyRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withUserId("user-0001")
            .withPropertyId("property-0001")
            .withVerifyType("have")
            .withParameterValueName("parameter-0001")
            .withParameterCount(null)
            .withMultiplyValueSpecifyingQuantity(null)
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.VerifyRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.VerifyRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.VerifyRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001")
        .WithUserId("user-0001")
        .WithPropertyId("property-0001")
        .WithVerifyType("have")
        .WithParameterValueName("parameter-0001")
        .WithParameterCount(null)
        .WithMultiplyValueSpecifyingQuantity(null)
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.verifyRarityParameterStatusByUserId(
        new Gs2Enchant.VerifyRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withUserId("user-0001")
            .withPropertyId("property-0001")
            .withVerifyType("have")
            .withParameterValueName("parameter-0001")
            .withParameterCount(null)
            .withMultiplyValueSpecifyingQuantity(null)
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.verify_rarity_parameter_status_by_user_id(
        enchant.VerifyRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
            .with_user_id('user-0001')
            .with_property_id('property-0001')
            .with_verify_type('have')
            .with_parameter_value_name('parameter-0001')
            .with_parameter_count(None)
            .with_multiply_value_specifying_quantity(None)
            .with_time_offset_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.verify_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    userId="user-0001",
    propertyId="property-0001",
    verifyType="have",
    parameterValueName="parameter-0001",
    parameterCount=nil,
    multiplyValueSpecifyingQuantity=nil,
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.verify_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    userId="user-0001",
    propertyId="property-0001",
    verifyType="have",
    parameterValueName="parameter-0001",
    parameterCount=nil,
    multiplyValueSpecifyingQuantity=nil,
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### setRarityParameterStatusByUserId

사용자 ID를 지정하여 레어리티 파라미터에 임의의 값을 설정<br>

통상적인 추첨/재추첨 메커니즘을 거치지 않고, 지정된 사용자의 특정 프로퍼티에 파라미터 값을 직접 설정합니다.<br>
이는 레어리티 가중치와 관계없이 임의의 파라미터 값을 할당할 수 있는 관리 작업입니다.<br>
업데이트 후와 업데이트 전 파라미터 상태가 모두 반환됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>이 상태의 추첨 조건을 정의하는 레어리티 파라미터 모델의 이름입니다. 최대 파라미터 수, 부여 수 추첨 가중치, 값 추첨 풀을 지정하는 모델을 참조합니다. |
| propertyId | string |  | ✓|  |  ~ 1024자 | 파라미터의 보유 리소스의 프로퍼티 ID<br>이 레어리티 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기나 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다. |
| parameterValues | [List&lt;RarityParameterValue&gt;](#rarityparametervalue) |  | |  | 0 ~ 10 items | 레어리티 파라미터의 값 목록<br>부여된 각 슬롯에 대해 가중 추첨으로 선택된 구체적인 파라미터 값입니다. 엔트리 수는 부여 수 추첨으로 결정되며, 각 엔트리의 값은 값 모델 풀에서 선택됩니다. 최대 파라미터 수보다 적은 엔트리 수가 될 수 있습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterStatus](#rarityparameterstatus) | 업데이트한 레어리티 파라미터 상태 |
| old | [RarityParameterStatus](#rarityparameterstatus) | 업데이트하기 전의 레어리티 파라미터 상태 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.SetRarityParameterStatusByUserId(
    &enchant.SetRarityParameterStatusByUserIdRequest {
        NamespaceName: pointy.String("namespace-0001"),
        UserId: pointy.String("user-0001"),
        ParameterName: pointy.String("rarity-0001"),
        PropertyId: pointy.String("property-0001"),
        ParameterValues: []enchant.RarityParameterValue{
            enchant.RarityParameterValue{
                Name: pointy.String("parameter-0001"),
                ResourceName: pointy.String("str"),
                ResourceValue: pointy.Int64(100),
            },
            enchant.RarityParameterValue{
                Name: pointy.String("parameter-0002"),
                ResourceName: pointy.String("def"),
                ResourceValue: pointy.Int64(200),
            },
        },
        TimeOffsetToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
old := result.Old

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\SetRarityParameterStatusByUserIdRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->setRarityParameterStatusByUserId(
        (new SetRarityParameterStatusByUserIdRequest())
            ->withNamespaceName("namespace-0001")
            ->withUserId("user-0001")
            ->withParameterName("rarity-0001")
            ->withPropertyId("property-0001")
            ->withParameterValues([
                (new RarityParameterValue())
                    ->withName("parameter-0001")
                    ->withResourceName("str")
                    ->withResourceValue(100),
                (new RarityParameterValue())
                    ->withName("parameter-0002")
                    ->withResourceName("def")
                    ->withResourceValue(200),
            ])
            ->withTimeOffsetToken(null)
    );
    $item = $result->getItem();
    $old = $result->getOld();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.SetRarityParameterStatusByUserIdRequest;
import io.gs2.enchant.result.SetRarityParameterStatusByUserIdResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    SetRarityParameterStatusByUserIdResult result = client.setRarityParameterStatusByUserId(
        new SetRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withParameterValues(Arrays.asList(
                new RarityParameterValue()
                    .withName("parameter-0001")
                    .withResourceName("str")
                    .withResourceValue(100L),
                new RarityParameterValue()
                    .withName("parameter-0002")
                    .withResourceName("def")
                    .withResourceValue(200L)
            ))
            .withTimeOffsetToken(null)
    );
    RarityParameterStatus item = result.getItem();
    RarityParameterStatus old = result.getOld();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.SetRarityParameterStatusByUserIdResult> asyncResult = null;
yield return client.SetRarityParameterStatusByUserId(
    new Gs2.Gs2Enchant.Request.SetRarityParameterStatusByUserIdRequest()
        .WithNamespaceName("namespace-0001")
        .WithUserId("user-0001")
        .WithParameterName("rarity-0001")
        .WithPropertyId("property-0001")
        .WithParameterValues(new Gs2.Gs2Enchant.Model.RarityParameterValue[] {
            new Gs2.Gs2Enchant.Model.RarityParameterValue()
                .WithName("parameter-0001")
                .WithResourceName("str")
                .WithResourceValue(100L),
            new Gs2.Gs2Enchant.Model.RarityParameterValue()
                .WithName("parameter-0002")
                .WithResourceName("def")
                .WithResourceValue(200L),
        })
        .WithTimeOffsetToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var old = result.Old;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.setRarityParameterStatusByUserId(
        new Gs2Enchant.SetRarityParameterStatusByUserIdRequest()
            .withNamespaceName("namespace-0001")
            .withUserId("user-0001")
            .withParameterName("rarity-0001")
            .withPropertyId("property-0001")
            .withParameterValues([
                new Gs2Enchant.model.RarityParameterValue()
                    .withName("parameter-0001")
                    .withResourceName("str")
                    .withResourceValue(100),
                new Gs2Enchant.model.RarityParameterValue()
                    .withName("parameter-0002")
                    .withResourceName("def")
                    .withResourceValue(200),
            ])
            .withTimeOffsetToken(null)
    );
    const item = result.getItem();
    const old = result.getOld();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.set_rarity_parameter_status_by_user_id(
        enchant.SetRarityParameterStatusByUserIdRequest()
            .with_namespace_name('namespace-0001')
            .with_user_id('user-0001')
            .with_parameter_name('rarity-0001')
            .with_property_id('property-0001')
            .with_parameter_values([
                enchant.RarityParameterValue()
                    .with_name('parameter-0001')
                    .with_resource_name('str')
                    .with_resource_value(100),
                enchant.RarityParameterValue()
                    .with_name('parameter-0002')
                    .with_resource_name('def')
                    .with_resource_value(200),
            ])
            .with_time_offset_token(None)
    )
    item = result.item
    old = result.old
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.set_rarity_parameter_status_by_user_id({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    parameterValues={
        {
            name="parameter-0001",
            resource_name="str",
            resource_value=100,
        },
        {
            name="parameter-0002",
            resource_name="def",
            resource_value=200,
        }
    },
    timeOffsetToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.set_rarity_parameter_status_by_user_id_async({
    namespaceName="namespace-0001",
    userId="user-0001",
    parameterName="rarity-0001",
    propertyId="property-0001",
    parameterValues={
        {
            name="parameter-0001",
            resource_name="str",
            resource_value=100,
        },
        {
            name="parameter-0002",
            resource_name="def",
            resource_value=200,
        }
    },
    timeOffsetToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;
old = result.old;

```



---

### describeBalanceParameterModels

밸런스 파라미터 모델 목록을 조회<br>

지정된 네임스페이스에서 현재 유효화(공개)되어 있는 모든 밸런스 파라미터 모델을 조회합니다.<br>
밸런스 파라미터 모델은 합계값이 여러 파라미터에 분배되어, 항상 합계가 고정값이 되는 파라미터 세트를 정의합니다.<br>
현재 마스터 데이터를 통해 유효화된 모델만 반환되며, 편집 가능한 마스터 데이터는 포함되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;BalanceParameterModel&gt;](#balanceparametermodel) | 밸런스 파라미터 모델 목록 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeBalanceParameterModels(
    &enchant.DescribeBalanceParameterModelsRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeBalanceParameterModelsRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeBalanceParameterModels(
        (new DescribeBalanceParameterModelsRequest())
            ->withNamespaceName("namespace-0001")
    );
    $items = $result->getItems();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeBalanceParameterModelsRequest;
import io.gs2.enchant.result.DescribeBalanceParameterModelsResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeBalanceParameterModelsResult result = client.describeBalanceParameterModels(
        new DescribeBalanceParameterModelsRequest()
            .withNamespaceName("namespace-0001")
    );
    List<BalanceParameterModel> items = result.getItems();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeBalanceParameterModelsResult> asyncResult = null;
yield return client.DescribeBalanceParameterModels(
    new Gs2.Gs2Enchant.Request.DescribeBalanceParameterModelsRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeBalanceParameterModels(
        new Gs2Enchant.DescribeBalanceParameterModelsRequest()
            .withNamespaceName("namespace-0001")
    );
    const items = result.getItems();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_balance_parameter_models(
        enchant.DescribeBalanceParameterModelsRequest()
            .with_namespace_name('namespace-0001')
    )
    items = result.items
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_balance_parameter_models({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_balance_parameter_models_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;

```



---

### getBalanceParameterModel

밸런스 파라미터 모델을 조회<br>

이름을 지정하여, 특정 유효한 밸런스 파라미터 모델의 상세 정보를 조회합니다.<br>
반환되는 정보에는 모델의 이름, 메타데이터, 합계값, 초기값 전략, 파라미터 정의가 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델 이름<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterModel](#balanceparametermodel) | 밸런스 파라미터 모델 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetBalanceParameterModel(
    &enchant.GetBalanceParameterModelRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetBalanceParameterModelRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getBalanceParameterModel(
        (new GetBalanceParameterModelRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetBalanceParameterModelRequest;
import io.gs2.enchant.result.GetBalanceParameterModelResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetBalanceParameterModelResult result = client.getBalanceParameterModel(
        new GetBalanceParameterModelRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    BalanceParameterModel item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetBalanceParameterModelResult> asyncResult = null;
yield return client.GetBalanceParameterModel(
    new Gs2.Gs2Enchant.Request.GetBalanceParameterModelRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getBalanceParameterModel(
        new Gs2Enchant.GetBalanceParameterModelRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_balance_parameter_model(
        enchant.GetBalanceParameterModelRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_balance_parameter_model({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_balance_parameter_model_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### describeRarityParameterModels

레어리티 파라미터 모델 목록 조회<br>

지정된 네임스페이스에서 현재 유효화(공개)된 모든 레어리티 파라미터 모델을 조회합니다.<br>
레어리티 파라미터 모델은 각 파라미터 슬롯이 레어리티 기반 확률로 무작위 추첨된 값으로 채워지는 파라미터 세트를 정의합니다.<br>
현재 마스터 데이터를 통해 유효화된 모델만 반환되며, 편집 가능한 마스터 데이터는 포함되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;RarityParameterModel&gt;](#rarityparametermodel) | 레어리티 파라미터 모델의 리스트 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeRarityParameterModels(
    &enchant.DescribeRarityParameterModelsRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeRarityParameterModelsRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeRarityParameterModels(
        (new DescribeRarityParameterModelsRequest())
            ->withNamespaceName("namespace-0001")
    );
    $items = $result->getItems();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeRarityParameterModelsRequest;
import io.gs2.enchant.result.DescribeRarityParameterModelsResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeRarityParameterModelsResult result = client.describeRarityParameterModels(
        new DescribeRarityParameterModelsRequest()
            .withNamespaceName("namespace-0001")
    );
    List<RarityParameterModel> items = result.getItems();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeRarityParameterModelsResult> asyncResult = null;
yield return client.DescribeRarityParameterModels(
    new Gs2.Gs2Enchant.Request.DescribeRarityParameterModelsRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeRarityParameterModels(
        new Gs2Enchant.DescribeRarityParameterModelsRequest()
            .withNamespaceName("namespace-0001")
    );
    const items = result.getItems();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_rarity_parameter_models(
        enchant.DescribeRarityParameterModelsRequest()
            .with_namespace_name('namespace-0001')
    )
    items = result.items
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_rarity_parameter_models({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_rarity_parameter_models_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;

```



---

### getRarityParameterModel

레어리티 파라미터 모델을 조회<br>

이름을 지정하여 특정 유효한 레어리티 파라미터 모델의 상세 정보를 조회합니다.<br>
반환되는 정보에는 모델의 이름, 메타데이터, 최대 파라미터 수, 파라미터 수 분포, 레어리티 가중치가 포함된 파라미터 값 정의가 포함됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델명<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterModel](#rarityparametermodel) | 레어리티 파라미터 모델 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetRarityParameterModel(
    &enchant.GetRarityParameterModelRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetRarityParameterModelRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getRarityParameterModel(
        (new GetRarityParameterModelRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetRarityParameterModelRequest;
import io.gs2.enchant.result.GetRarityParameterModelResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetRarityParameterModelResult result = client.getRarityParameterModel(
        new GetRarityParameterModelRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    RarityParameterModel item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetRarityParameterModelResult> asyncResult = null;
yield return client.GetRarityParameterModel(
    new Gs2.Gs2Enchant.Request.GetRarityParameterModelRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getRarityParameterModel(
        new Gs2Enchant.GetRarityParameterModelRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_rarity_parameter_model(
        enchant.GetRarityParameterModelRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_rarity_parameter_model({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_rarity_parameter_model_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### exportMaster

파라미터 모델 마스터를 유효화 가능한 마스터 데이터 형식으로 내보내기<br>

현재 파라미터 모델 마스터 데이터(밸런스 파라미터 모델과 레어리티 파라미터 모델 모두)를 유효화에 사용할 수 있는 형식으로 내보냅니다.<br>
내보낸 데이터는 현재 마스터 구성의 백업이나 다른 네임스페이스로의 가져오기에 사용할 수 있습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [CurrentParameterMaster](#currentparametermaster) | 유효화 가능한 파라미터 모델 마스터 데이터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.ExportMaster(
    &enchant.ExportMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\ExportMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->exportMaster(
        (new ExportMasterRequest())
            ->withNamespaceName("namespace-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.ExportMasterRequest;
import io.gs2.enchant.result.ExportMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    ExportMasterResult result = client.exportMaster(
        new ExportMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    CurrentParameterMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.ExportMasterResult> asyncResult = null;
yield return client.ExportMaster(
    new Gs2.Gs2Enchant.Request.ExportMasterRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.exportMaster(
        new Gs2Enchant.ExportMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.export_master(
        enchant.ExportMasterRequest()
            .with_namespace_name('namespace-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.export_master({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.export_master_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getCurrentParameterMaster

현재 유효한 파라미터 모델의 마스터 데이터를 조회<br>

지정된 네임스페이스에서 현재 유효화(공개)된 파라미터 모델(밸런스와 레어리티 모두)의 마스터 데이터를 조회합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [CurrentParameterMaster](#currentparametermaster) | 현재 유효한 파라미터 모델의 마스터 데이터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetCurrentParameterMaster(
    &enchant.GetCurrentParameterMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetCurrentParameterMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getCurrentParameterMaster(
        (new GetCurrentParameterMasterRequest())
            ->withNamespaceName("namespace-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetCurrentParameterMasterRequest;
import io.gs2.enchant.result.GetCurrentParameterMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetCurrentParameterMasterResult result = client.getCurrentParameterMaster(
        new GetCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    CurrentParameterMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetCurrentParameterMasterResult> asyncResult = null;
yield return client.GetCurrentParameterMaster(
    new Gs2.Gs2Enchant.Request.GetCurrentParameterMasterRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getCurrentParameterMaster(
        new Gs2Enchant.GetCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_current_parameter_master(
        enchant.GetCurrentParameterMasterRequest()
            .with_namespace_name('namespace-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_current_parameter_master({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_current_parameter_master_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### preUpdateCurrentParameterMaster

현재 유효한 파라미터 모델의 마스터 데이터를 업데이트(3단계 버전)<br>

1MB를 초과하는 마스터 데이터를 업로드하는 경우, 3단계로 업데이트를 진행합니다.<br>
1. 이 API를 실행하여 업로드용 토큰과 URL을 획득합니다.<br>
2. 획득한 URL에 마스터 데이터를 업로드합니다.<br>
3. 업로드로 획득한 토큰을 전달하여 UpdateCurrentParameterMaster 를 실행함으로써 마스터 데이터를 반영합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| uploadToken | string | 업로드 후 결과를 반영할 때 사용하는 토큰 |
| uploadUrl | string | 업로드 처리 실행에 사용하는 URL |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.PreUpdateCurrentParameterMaster(
    &enchant.PreUpdateCurrentParameterMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
uploadToken := result.UploadToken
uploadUrl := result.UploadUrl

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\PreUpdateCurrentParameterMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->preUpdateCurrentParameterMaster(
        (new PreUpdateCurrentParameterMasterRequest())
            ->withNamespaceName("namespace-0001")
    );
    $uploadToken = $result->getUploadToken();
    $uploadUrl = $result->getUploadUrl();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.PreUpdateCurrentParameterMasterRequest;
import io.gs2.enchant.result.PreUpdateCurrentParameterMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    PreUpdateCurrentParameterMasterResult result = client.preUpdateCurrentParameterMaster(
        new PreUpdateCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    String uploadToken = result.getUploadToken();
    String uploadUrl = result.getUploadUrl();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.PreUpdateCurrentParameterMasterResult> asyncResult = null;
yield return client.PreUpdateCurrentParameterMaster(
    new Gs2.Gs2Enchant.Request.PreUpdateCurrentParameterMasterRequest()
        .WithNamespaceName("namespace-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var uploadToken = result.UploadToken;
var uploadUrl = result.UploadUrl;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.preUpdateCurrentParameterMaster(
        new Gs2Enchant.PreUpdateCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
    );
    const uploadToken = result.getUploadToken();
    const uploadUrl = result.getUploadUrl();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.pre_update_current_parameter_master(
        enchant.PreUpdateCurrentParameterMasterRequest()
            .with_namespace_name('namespace-0001')
    )
    upload_token = result.upload_token
    upload_url = result.upload_url
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.pre_update_current_parameter_master({
    namespaceName="namespace-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
uploadToken = result.uploadToken;
uploadUrl = result.uploadUrl;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.pre_update_current_parameter_master_async({
    namespaceName="namespace-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
uploadToken = result.uploadToken;
uploadUrl = result.uploadUrl;

```



---

### updateCurrentParameterMaster

현재 유효한 파라미터 모델의 마스터 데이터를 업데이트<br>

지정된 네임스페이스의 파라미터 모델 마스터 데이터를 업데이트하고 유효화(공개)합니다.<br>
인라인 마스터 데이터용 'direct' 모드와 사전에 업로드된 마스터 데이터용 'preUpload' 모드, 두 가지 모드를 지원합니다.<br>
1MB를 초과하는 마스터 데이터의 경우, 3단계 업데이트 흐름(PreUpdate -> 업로드 -> Update(preUpload 모드))을 사용하십시오.<br>
업로드된 마스터 데이터는 적용 전에 검증됩니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| mode | 문자열 열거형<br>enum {<br>"direct",<br>"preUpload"<br>}<br> |  | | "direct" |  | 업데이트 모드direct: 마스터 데이터를 직접 업데이트 / preUpload: 마스터 데이터를 업로드한 후 업데이트 /  |
| settings | string | {mode} == "direct" | ✓※|  |  ~ 5242880 바이트 (5MB) | 마스터 데이터<br>※ mode이(가) "direct" 이면 필수 |
| uploadToken | string | {mode} == "preUpload" | ✓※|  |  ~ 1024자 | 사전 업로드로 획득한 토큰<br>업로드한 마스터 데이터를 적용하기 위해 사용됩니다.<br>※ mode이(가) "preUpload" 이면 필수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [CurrentParameterMaster](#currentparametermaster) | 업데이트된 현재 유효한 파라미터 모델의 마스터 데이터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.UpdateCurrentParameterMaster(
    &enchant.UpdateCurrentParameterMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        Mode: pointy.String("direct"),
        Settings: pointy.String("{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}"),
        UploadToken: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\UpdateCurrentParameterMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->updateCurrentParameterMaster(
        (new UpdateCurrentParameterMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withMode("direct")
            ->withSettings("{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}")
            ->withUploadToken(null)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.UpdateCurrentParameterMasterRequest;
import io.gs2.enchant.result.UpdateCurrentParameterMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    UpdateCurrentParameterMasterResult result = client.updateCurrentParameterMaster(
        new UpdateCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
            .withMode("direct")
            .withSettings("{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}")
            .withUploadToken(null)
    );
    CurrentParameterMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.UpdateCurrentParameterMasterResult> asyncResult = null;
yield return client.UpdateCurrentParameterMaster(
    new Gs2.Gs2Enchant.Request.UpdateCurrentParameterMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithMode("direct")
        .WithSettings("{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}")
        .WithUploadToken(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.updateCurrentParameterMaster(
        new Gs2Enchant.UpdateCurrentParameterMasterRequest()
            .withNamespaceName("namespace-0001")
            .withMode("direct")
            .withSettings("{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}")
            .withUploadToken(null)
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.update_current_parameter_master(
        enchant.UpdateCurrentParameterMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_mode('direct')
            .with_settings('{"version": "2023-07-18", "balanceParameterModels": [{"name": "balance-0001", "metadata": "BALANCE_0001", "totalValue": 100, "initialValueStrategy": "average", "parameters": [{"name": "parameter-0001", "metadata": "PARAMETER_0001"}, {"name": "parameter-0002", "metadata": "PARAMETER_0002"}, {"name": "parameter-0003", "metadata": "PARAMETER_0003"}]}, {"name": "balance-0002", "metadata": "BALANCE_0002", "totalValue": 200, "initialValueStrategy": "lottery", "parameters": [{"name": "parameter-0001", "metadata": "PARAMETER_0001"}, {"name": "parameter-0002", "metadata": "PARAMETER_0002"}, {"name": "parameter-0003", "metadata": "PARAMETER_0003"}, {"name": "parameter-0004", "metadata": "PARAMETER_0004"}]}, {"name": "balance-0003", "metadata": "BALANCE_0003", "totalValue": 500, "initialValueStrategy": "average", "parameters": [{"name": "parameter-0001", "metadata": "PARAMETER_0001"}, {"name": "parameter-0002", "metadata": "PARAMETER_0002"}]}], "rarityParameterModels": [{"name": "rarity-0001", "metadata": "RARITY_0001", "maximumParameterCount": 5, "parameterCounts": [{"count": 0, "weight": 1}, {"count": 1, "weight": 2}, {"count": 2, "weight": 3}], "parameters": [{"name": "parameter-0001", "metadata": "PARAMETER_0001", "resourceName": "resource-0001", "resourceValue": 10, "weight": 1}, {"name": "parameter-0002", "metadata": "PARAMETER_0002", "resourceName": "resource-0002", "resourceValue": 20, "weight": 2}, {"name": "parameter-0003", "metadata": "PARAMETER_0003", "resourceName": "resource-0003", "resourceValue": 30, "weight": 3}]}, {"name": "rarity-0002", "metadata": "RARITY_0002", "maximumParameterCount": 10, "parameterCounts": [{"count": 1, "weight": 10}, {"count": 2, "weight": 20}, {"count": 3, "weight": 30}], "parameters": [{"name": "parameter-1001", "metadata": "PARAMETER_1001", "resourceName": "resource-1001", "resourceValue": 100, "weight": 10}, {"name": "parameter-1002", "metadata": "PARAMETER_1002", "resourceName": "resource-1002", "resourceValue": 200, "weight": 20}, {"name": "parameter-1003", "metadata": "PARAMETER_1003", "resourceName": "resource-1003", "resourceValue": 300, "weight": 30}]}, {"name": "rarity-0003", "metadata": "RARITY_0003", "maximumParameterCount": 3, "parameterCounts": [{"count": 2, "weight": 5}, {"count": 3, "weight": 10}, {"count": 4, "weight": 15}], "parameters": [{"name": "parameter-2001", "metadata": "PARAMETER_2001", "resourceName": "resource-2001", "resourceValue": 1000, "weight": 2}, {"name": "parameter-2002", "metadata": "PARAMETER_2002", "resourceName": "resource-2002", "resourceValue": 2000, "weight": 4}, {"name": "parameter-2003", "metadata": "PARAMETER_2003", "resourceName": "resource-2003", "resourceValue": 3000, "weight": 6}, {"name": "parameter-0004", "metadata": "PARAMETER_0004", "resourceName": "resource-2004", "resourceValue": 4000, "weight": 8}]}]}')
            .with_upload_token(None)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.update_current_parameter_master({
    namespaceName="namespace-0001",
    mode="direct",
    settings="{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}",
    uploadToken=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.update_current_parameter_master_async({
    namespaceName="namespace-0001",
    mode="direct",
    settings="{\"version\": \"2023-07-18\", \"balanceParameterModels\": [{\"name\": \"balance-0001\", \"metadata\": \"BALANCE_0001\", \"totalValue\": 100, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}]}, {\"name\": \"balance-0002\", \"metadata\": \"BALANCE_0002\", \"totalValue\": 200, \"initialValueStrategy\": \"lottery\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\"}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\"}]}, {\"name\": \"balance-0003\", \"metadata\": \"BALANCE_0003\", \"totalValue\": 500, \"initialValueStrategy\": \"average\", \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\"}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\"}]}], \"rarityParameterModels\": [{\"name\": \"rarity-0001\", \"metadata\": \"RARITY_0001\", \"maximumParameterCount\": 5, \"parameterCounts\": [{\"count\": 0, \"weight\": 1}, {\"count\": 1, \"weight\": 2}, {\"count\": 2, \"weight\": 3}], \"parameters\": [{\"name\": \"parameter-0001\", \"metadata\": \"PARAMETER_0001\", \"resourceName\": \"resource-0001\", \"resourceValue\": 10, \"weight\": 1}, {\"name\": \"parameter-0002\", \"metadata\": \"PARAMETER_0002\", \"resourceName\": \"resource-0002\", \"resourceValue\": 20, \"weight\": 2}, {\"name\": \"parameter-0003\", \"metadata\": \"PARAMETER_0003\", \"resourceName\": \"resource-0003\", \"resourceValue\": 30, \"weight\": 3}]}, {\"name\": \"rarity-0002\", \"metadata\": \"RARITY_0002\", \"maximumParameterCount\": 10, \"parameterCounts\": [{\"count\": 1, \"weight\": 10}, {\"count\": 2, \"weight\": 20}, {\"count\": 3, \"weight\": 30}], \"parameters\": [{\"name\": \"parameter-1001\", \"metadata\": \"PARAMETER_1001\", \"resourceName\": \"resource-1001\", \"resourceValue\": 100, \"weight\": 10}, {\"name\": \"parameter-1002\", \"metadata\": \"PARAMETER_1002\", \"resourceName\": \"resource-1002\", \"resourceValue\": 200, \"weight\": 20}, {\"name\": \"parameter-1003\", \"metadata\": \"PARAMETER_1003\", \"resourceName\": \"resource-1003\", \"resourceValue\": 300, \"weight\": 30}]}, {\"name\": \"rarity-0003\", \"metadata\": \"RARITY_0003\", \"maximumParameterCount\": 3, \"parameterCounts\": [{\"count\": 2, \"weight\": 5}, {\"count\": 3, \"weight\": 10}, {\"count\": 4, \"weight\": 15}], \"parameters\": [{\"name\": \"parameter-2001\", \"metadata\": \"PARAMETER_2001\", \"resourceName\": \"resource-2001\", \"resourceValue\": 1000, \"weight\": 2}, {\"name\": \"parameter-2002\", \"metadata\": \"PARAMETER_2002\", \"resourceName\": \"resource-2002\", \"resourceValue\": 2000, \"weight\": 4}, {\"name\": \"parameter-2003\", \"metadata\": \"PARAMETER_2003\", \"resourceName\": \"resource-2003\", \"resourceValue\": 3000, \"weight\": 6}, {\"name\": \"parameter-0004\", \"metadata\": \"PARAMETER_0004\", \"resourceName\": \"resource-2004\", \"resourceValue\": 4000, \"weight\": 8}]}]}",
    uploadToken=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### updateCurrentParameterMasterFromGitHub

현재 유효한 파라미터 모델의 마스터 데이터를 GitHub 에서 업데이트<br>

GitHub 리포지토리에서 직접 마스터 데이터를 가져와 업데이트·유효화(공개)합니다.<br>
체크아웃 설정에는 사용할 리포지토리, 브랜치/태그, 파일 경로를 지정합니다.<br>
마스터 데이터를 버전 관리로 관리하고 직접 배포할 때 유용합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| checkoutSetting | [GitHubCheckoutSetting](#githubcheckoutsetting) |  | ✓|  |  | GitHub에서 마스터 데이터를 체크아웃하는 설정 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [CurrentParameterMaster](#currentparametermaster) | 업데이트된 현재 유효한 파라미터 모델의 마스터 데이터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.UpdateCurrentParameterMasterFromGitHub(
    &enchant.UpdateCurrentParameterMasterFromGitHubRequest {
        NamespaceName: pointy.String("namespace-0001"),
        CheckoutSetting: &enchant.GitHubCheckoutSetting{
            ApiKeyId: pointy.String("apiKeyId-0001"),
            RepositoryName: pointy.String("gs2io/master-data"),
            SourcePath: pointy.String("path/to/file.json"),
            ReferenceType: pointy.String("branch"),
            BranchName: pointy.String("develop"),
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\UpdateCurrentParameterMasterFromGitHubRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->updateCurrentParameterMasterFromGitHub(
        (new UpdateCurrentParameterMasterFromGitHubRequest())
            ->withNamespaceName("namespace-0001")
            ->withCheckoutSetting((new GitHubCheckoutSetting())
                ->withApiKeyId("apiKeyId-0001")
                ->withRepositoryName("gs2io/master-data")
                ->withSourcePath("path/to/file.json")
                ->withReferenceType("branch")
                ->withBranchName("develop")
            )
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.UpdateCurrentParameterMasterFromGitHubRequest;
import io.gs2.enchant.result.UpdateCurrentParameterMasterFromGitHubResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    UpdateCurrentParameterMasterFromGitHubResult result = client.updateCurrentParameterMasterFromGitHub(
        new UpdateCurrentParameterMasterFromGitHubRequest()
            .withNamespaceName("namespace-0001")
            .withCheckoutSetting(new GitHubCheckoutSetting()
                .withApiKeyId("apiKeyId-0001")
                .withRepositoryName("gs2io/master-data")
                .withSourcePath("path/to/file.json")
                .withReferenceType("branch")
                .withBranchName("develop")
            )
    );
    CurrentParameterMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.UpdateCurrentParameterMasterFromGitHubResult> asyncResult = null;
yield return client.UpdateCurrentParameterMasterFromGitHub(
    new Gs2.Gs2Enchant.Request.UpdateCurrentParameterMasterFromGitHubRequest()
        .WithNamespaceName("namespace-0001")
        .WithCheckoutSetting(new Gs2.Gs2Enchant.Model.GitHubCheckoutSetting()
            .WithApiKeyId("apiKeyId-0001")
            .WithRepositoryName("gs2io/master-data")
            .WithSourcePath("path/to/file.json")
            .WithReferenceType("branch")
            .WithBranchName("develop")
        ),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.updateCurrentParameterMasterFromGitHub(
        new Gs2Enchant.UpdateCurrentParameterMasterFromGitHubRequest()
            .withNamespaceName("namespace-0001")
            .withCheckoutSetting(new Gs2Enchant.model.GitHubCheckoutSetting()
                .withApiKeyId("apiKeyId-0001")
                .withRepositoryName("gs2io/master-data")
                .withSourcePath("path/to/file.json")
                .withReferenceType("branch")
                .withBranchName("develop")
            )
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.update_current_parameter_master_from_git_hub(
        enchant.UpdateCurrentParameterMasterFromGitHubRequest()
            .with_namespace_name('namespace-0001')
            .with_checkout_setting(enchant.GitHubCheckoutSetting()
                .with_api_key_id('apiKeyId-0001')
                .with_repository_name('gs2io/master-data')
                .with_source_path('path/to/file.json')
                .with_reference_type('branch')
                .with_branch_name('develop')
            )
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.update_current_parameter_master_from_git_hub({
    namespaceName="namespace-0001",
    checkoutSetting={
        api_key_id="apiKeyId-0001",
        repository_name="gs2io/master-data",
        source_path="path/to/file.json",
        reference_type="branch",
        branch_name="develop",
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.update_current_parameter_master_from_git_hub_async({
    namespaceName="namespace-0001",
    checkoutSetting={
        api_key_id="apiKeyId-0001",
        repository_name="gs2io/master-data",
        source_path="path/to/file.json",
        reference_type="branch",
        branch_name="develop",
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### describeBalanceParameterModelMasters

밸런스 파라미터 모델 마스터 목록을 조회<br>

이름의 접두사 필터링이 가능한, 편집 가능한 밸런스 파라미터 모델 마스터의 페이지네이션 목록을 조회합니다.<br>
밸런스 파라미터 모델 마스터는 밸런스 파라미터 세트의 편집 가능한 정의입니다. 마스터에 대한 변경 사항은 CurrentParameterMaster API 로 마스터 데이터를 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| namePrefix | string |  | |  |  ~ 64자 | 밸런스 파라미터 모델 이름의 필터 접두사 |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;BalanceParameterModelMaster&gt;](#balanceparametermodelmaster) | 밸런스 파라미터 모델 마스터 목록 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeBalanceParameterModelMasters(
    &enchant.DescribeBalanceParameterModelMastersRequest {
        NamespaceName: pointy.String("namespace-0001"),
        NamePrefix: nil,
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeBalanceParameterModelMastersRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeBalanceParameterModelMasters(
        (new DescribeBalanceParameterModelMastersRequest())
            ->withNamespaceName("namespace-0001")
            ->withNamePrefix(null)
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeBalanceParameterModelMastersRequest;
import io.gs2.enchant.result.DescribeBalanceParameterModelMastersResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeBalanceParameterModelMastersResult result = client.describeBalanceParameterModelMasters(
        new DescribeBalanceParameterModelMastersRequest()
            .withNamespaceName("namespace-0001")
            .withNamePrefix(null)
            .withPageToken(null)
            .withLimit(null)
    );
    List<BalanceParameterModelMaster> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeBalanceParameterModelMastersResult> asyncResult = null;
yield return client.DescribeBalanceParameterModelMasters(
    new Gs2.Gs2Enchant.Request.DescribeBalanceParameterModelMastersRequest()
        .WithNamespaceName("namespace-0001")
        .WithNamePrefix(null)
        .WithPageToken(null)
        .WithLimit(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeBalanceParameterModelMasters(
        new Gs2Enchant.DescribeBalanceParameterModelMastersRequest()
            .withNamespaceName("namespace-0001")
            .withNamePrefix(null)
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_balance_parameter_model_masters(
        enchant.DescribeBalanceParameterModelMastersRequest()
            .with_namespace_name('namespace-0001')
            .with_name_prefix(None)
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_balance_parameter_model_masters({
    namespaceName="namespace-0001",
    namePrefix=nil,
    pageToken=nil,
    limit=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_balance_parameter_model_masters_async({
    namespaceName="namespace-0001",
    namePrefix=nil,
    pageToken=nil,
    limit=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### createBalanceParameterModelMaster

밸런스 파라미터 모델 마스터를 신규 생성<br>

새로운 편집 가능한 밸런스 파라미터 모델 마스터 정의를 생성합니다.<br>
합계값은 파라미터에 분배되는 총합을 지정하며, 초기값 전략은 값이 어떻게 초기 할당되는지를 결정합니다.<br>
파라미터는 값의 범위를 가진 개별 파라미터 슬롯을 정의합니다.<br>
변경 사항은 CurrentParameterMaster API 로 마스터 데이터를 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| name | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델명<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| metadata | string |  | |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| totalValue | long |  | ✓|  | 0 ~ 9223372036854775805 | 합계값<br>모든 파라미터 슬롯에 분배되는 고정된 합계값입니다. 파라미터가 추첨될 때, 사용되는 배분 방식과 관계없이 개별 값의 합계는 항상 이 합계값이 됩니다. |
| initialValueStrategy | 문자열 열거형<br>enum {<br>"average",<br>"lottery"<br>}<br> |  | | "average" |  | 초기값 설정 방침<br>최초 할당 시 합계값을 파라미터 슬롯에 어떻게 분배할지를 결정합니다. `average`는 합계값을 모든 파라미터에 균등하게 분배하고, `lottery`는 합계값을 무작위로 분배하여 다양한 파라미터 조합을 만듭니다.average: 평균값 / lottery: 추첨 /  |
| parameters | [List&lt;BalanceParameterValueModel&gt;](#balanceparametervaluemodel) |  | ✓|  | 1 ~ 10 items | 밸런스 파라미터 값 모델 목록<br>이 밸런스 파라미터에서 사용 가능한 파라미터 슬롯을 정의합니다. 각 엔트리는 이름이 지정된 파라미터 슬롯(예: ATK, DEF, SPD)을 선택적 메타데이터와 함께 지정합니다. 합계값은 이 슬롯들에 분배됩니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterModelMaster](#balanceparametermodelmaster) | 생성한 밸런스 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CreateBalanceParameterModelMaster(
    &enchant.CreateBalanceParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        Name: pointy.String("balance-0001"),
        Description: nil,
        Metadata: nil,
        TotalValue: pointy.Int64(100),
        InitialValueStrategy: pointy.String("average"),
        Parameters: []enchant.BalanceParameterValueModel{
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-0001"),
            },
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-0002"),
            },
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-0003"),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CreateBalanceParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->createBalanceParameterModelMaster(
        (new CreateBalanceParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withName("balance-0001")
            ->withDescription(null)
            ->withMetadata(null)
            ->withTotalValue(100)
            ->withInitialValueStrategy("average")
            ->withParameters([
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-0001"),
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-0002"),
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-0003"),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CreateBalanceParameterModelMasterRequest;
import io.gs2.enchant.result.CreateBalanceParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CreateBalanceParameterModelMasterResult result = client.createBalanceParameterModelMaster(
        new CreateBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withName("balance-0001")
            .withDescription(null)
            .withMetadata(null)
            .withTotalValue(100L)
            .withInitialValueStrategy("average")
            .withParameters(Arrays.asList(
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0001"),
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0002"),
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0003")
            ))
    );
    BalanceParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CreateBalanceParameterModelMasterResult> asyncResult = null;
yield return client.CreateBalanceParameterModelMaster(
    new Gs2.Gs2Enchant.Request.CreateBalanceParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithName("balance-0001")
        .WithDescription(null)
        .WithMetadata(null)
        .WithTotalValue(100L)
        .WithInitialValueStrategy("average")
        .WithParameters(new Gs2.Gs2Enchant.Model.BalanceParameterValueModel[] {
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-0001"),
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-0002"),
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-0003"),
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.createBalanceParameterModelMaster(
        new Gs2Enchant.CreateBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withName("balance-0001")
            .withDescription(null)
            .withMetadata(null)
            .withTotalValue(100)
            .withInitialValueStrategy("average")
            .withParameters([
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0001"),
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0002"),
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-0003"),
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.create_balance_parameter_model_master(
        enchant.CreateBalanceParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_name('balance-0001')
            .with_description(None)
            .with_metadata(None)
            .with_total_value(100)
            .with_initial_value_strategy('average')
            .with_parameters([
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-0001'),
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-0002'),
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-0003'),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.create_balance_parameter_model_master({
    namespaceName="namespace-0001",
    name="balance-0001",
    description=nil,
    metadata=nil,
    totalValue=100,
    initialValueStrategy="average",
    parameters={
        {
            name="parameter-0001",
        },
        {
            name="parameter-0002",
        },
        {
            name="parameter-0003",
        }
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.create_balance_parameter_model_master_async({
    namespaceName="namespace-0001",
    name="balance-0001",
    description=nil,
    metadata=nil,
    totalValue=100,
    initialValueStrategy="average",
    parameters={
        {
            name="parameter-0001",
        },
        {
            name="parameter-0002",
        },
        {
            name="parameter-0003",
        }
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getBalanceParameterModelMaster

밸런스 파라미터 모델 마스터 데이터를 조회<br>

이름을 지정하여, 특정 편집 가능한 밸런스 파라미터 모델 마스터의 상세 정보를 조회합니다.<br>
유효화하기 전의 마스터 정의를 열람 및 편집하는 데 사용합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델명<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterModelMaster](#balanceparametermodelmaster) | 밸런스 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetBalanceParameterModelMaster(
    &enchant.GetBalanceParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("balance-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetBalanceParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getBalanceParameterModelMaster(
        (new GetBalanceParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("balance-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetBalanceParameterModelMasterRequest;
import io.gs2.enchant.result.GetBalanceParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetBalanceParameterModelMasterResult result = client.getBalanceParameterModelMaster(
        new GetBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
    );
    BalanceParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetBalanceParameterModelMasterResult> asyncResult = null;
yield return client.GetBalanceParameterModelMaster(
    new Gs2.Gs2Enchant.Request.GetBalanceParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("balance-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getBalanceParameterModelMaster(
        new Gs2Enchant.GetBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_balance_parameter_model_master(
        enchant.GetBalanceParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('balance-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_balance_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_balance_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### updateBalanceParameterModelMaster

밸런스 파라미터 모델 마스터를 업데이트<br>

기존 밸런스 파라미터 모델 마스터의 설명, 메타데이터, 합계값, 초기값 전략, 파라미터를 업데이트합니다.<br>
파라미터 모델 이름은 생성 후에는 변경할 수 없습니다.<br>
변경 사항은 CurrentParameterMaster API 로 마스터 데이터를 다시 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델명<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| metadata | string |  | |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| totalValue | long |  | ✓|  | 0 ~ 9223372036854775805 | 합계값<br>모든 파라미터 슬롯에 분배되는 고정된 합계값입니다. 파라미터가 추첨될 때, 사용되는 배분 방식과 관계없이 개별 값의 합계는 항상 이 합계값이 됩니다. |
| initialValueStrategy | 문자열 열거형<br>enum {<br>"average",<br>"lottery"<br>}<br> |  | | "average" |  | 초기값 설정 방침<br>최초 할당 시 합계값을 파라미터 슬롯에 어떻게 분배할지를 결정합니다. `average`는 합계값을 모든 파라미터에 균등하게 분배하고, `lottery`는 합계값을 무작위로 분배하여 다양한 파라미터 조합을 만듭니다.average: 평균값 / lottery: 추첨 /  |
| parameters | [List&lt;BalanceParameterValueModel&gt;](#balanceparametervaluemodel) |  | ✓|  | 1 ~ 10 items | 밸런스 파라미터 값 모델 목록<br>이 밸런스 파라미터에서 사용 가능한 파라미터 슬롯을 정의합니다. 각 엔트리는 이름이 지정된 파라미터 슬롯(예: ATK, DEF, SPD)을 선택적 메타데이터와 함께 지정합니다. 합계값은 이 슬롯들에 분배됩니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterModelMaster](#balanceparametermodelmaster) | 업데이트한 밸런스 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.UpdateBalanceParameterModelMaster(
    &enchant.UpdateBalanceParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("balance-0001"),
        Description: pointy.String("description1"),
        Metadata: pointy.String("BALANCE_0001"),
        TotalValue: pointy.Int64(200),
        InitialValueStrategy: pointy.String("lottery"),
        Parameters: []enchant.BalanceParameterValueModel{
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-1001"),
            },
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-1002"),
            },
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-1003"),
            },
            enchant.BalanceParameterValueModel{
                Name: pointy.String("parameter-1004"),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\UpdateBalanceParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->updateBalanceParameterModelMaster(
        (new UpdateBalanceParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("balance-0001")
            ->withDescription("description1")
            ->withMetadata("BALANCE_0001")
            ->withTotalValue(200)
            ->withInitialValueStrategy("lottery")
            ->withParameters([
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-1001"),
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-1002"),
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-1003"),
                (new \Gs2\Enchant\Model\BalanceParameterValueModel())
                    ->withName("parameter-1004"),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.UpdateBalanceParameterModelMasterRequest;
import io.gs2.enchant.result.UpdateBalanceParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    UpdateBalanceParameterModelMasterResult result = client.updateBalanceParameterModelMaster(
        new UpdateBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
            .withDescription("description1")
            .withMetadata("BALANCE_0001")
            .withTotalValue(200L)
            .withInitialValueStrategy("lottery")
            .withParameters(Arrays.asList(
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1001"),
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1002"),
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1003"),
                new io.gs2.enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1004")
            ))
    );
    BalanceParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.UpdateBalanceParameterModelMasterResult> asyncResult = null;
yield return client.UpdateBalanceParameterModelMaster(
    new Gs2.Gs2Enchant.Request.UpdateBalanceParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("balance-0001")
        .WithDescription("description1")
        .WithMetadata("BALANCE_0001")
        .WithTotalValue(200L)
        .WithInitialValueStrategy("lottery")
        .WithParameters(new Gs2.Gs2Enchant.Model.BalanceParameterValueModel[] {
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-1001"),
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-1002"),
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-1003"),
            new Gs2.Gs2Enchant.Model.BalanceParameterValueModel()
                .WithName("parameter-1004"),
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.updateBalanceParameterModelMaster(
        new Gs2Enchant.UpdateBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
            .withDescription("description1")
            .withMetadata("BALANCE_0001")
            .withTotalValue(200)
            .withInitialValueStrategy("lottery")
            .withParameters([
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1001"),
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1002"),
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1003"),
                new Gs2Enchant.model.BalanceParameterValueModel()
                    .withName("parameter-1004"),
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.update_balance_parameter_model_master(
        enchant.UpdateBalanceParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('balance-0001')
            .with_description('description1')
            .with_metadata('BALANCE_0001')
            .with_total_value(200)
            .with_initial_value_strategy('lottery')
            .with_parameters([
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-1001'),
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-1002'),
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-1003'),
                enchant.BalanceParameterValueModel()
                    .with_name('parameter-1004'),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.update_balance_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
    description="description1",
    metadata="BALANCE_0001",
    totalValue=200,
    initialValueStrategy="lottery",
    parameters={
        {
            name="parameter-1001",
        },
        {
            name="parameter-1002",
        },
        {
            name="parameter-1003",
        },
        {
            name="parameter-1004",
        }
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.update_balance_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
    description="description1",
    metadata="BALANCE_0001",
    totalValue=200,
    initialValueStrategy="lottery",
    parameters={
        {
            name="parameter-1001",
        },
        {
            name="parameter-1002",
        },
        {
            name="parameter-1003",
        },
        {
            name="parameter-1004",
        }
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### deleteBalanceParameterModelMaster

밸런스 파라미터 모델 마스터를 삭제<br>

편집 가능한 밸런스 파라미터 모델 마스터 정의를 삭제합니다.<br>
마스터 데이터에만 영향을 미치며, 현재 유효화(공개)되어 있는 모델은 마스터 데이터가 다시 유효화될 때까지 영향을 받지 않습니다.<br>
삭제된 모델과 관련된 기존 사용자 파라미터 상태는 자동으로 삭제되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 밸런스 파라미터 모델명<br>밸런스 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [BalanceParameterModelMaster](#balanceparametermodelmaster) | 삭제한 밸런스 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DeleteBalanceParameterModelMaster(
    &enchant.DeleteBalanceParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("balance-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DeleteBalanceParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->deleteBalanceParameterModelMaster(
        (new DeleteBalanceParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("balance-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DeleteBalanceParameterModelMasterRequest;
import io.gs2.enchant.result.DeleteBalanceParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DeleteBalanceParameterModelMasterResult result = client.deleteBalanceParameterModelMaster(
        new DeleteBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
    );
    BalanceParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DeleteBalanceParameterModelMasterResult> asyncResult = null;
yield return client.DeleteBalanceParameterModelMaster(
    new Gs2.Gs2Enchant.Request.DeleteBalanceParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("balance-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.deleteBalanceParameterModelMaster(
        new Gs2Enchant.DeleteBalanceParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("balance-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.delete_balance_parameter_model_master(
        enchant.DeleteBalanceParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('balance-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.delete_balance_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.delete_balance_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="balance-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### describeRarityParameterModelMasters

레어리티 파라미터 모델 마스터 목록 조회<br>

편집 가능한 레어리티 파라미터 모델 마스터의 페이지네이션 리스트를 조회합니다.<br>
레어리티 파라미터 모델 마스터는 레어리티 기반 파라미터 세트의 편집 가능한 정의입니다. 마스터에 대한 변경 사항은 CurrentParameterMaster API로 마스터 데이터를 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| pageToken | string |  | |  |  ~ 1024자 | 데이터 취득을 시작할 위치를 지정하는 토큰 |
| limit | int |  | | 30 | 1 ~ 1000 | 취득할 데이터 건수 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| items | [List&lt;RarityParameterModelMaster&gt;](#rarityparametermodelmaster) | 레어리티 파라미터 모델 마스터의 리스트 |
| nextPageToken | string | 목록의 나머지를 취득하기 위한 페이지 토큰 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DescribeRarityParameterModelMasters(
    &enchant.DescribeRarityParameterModelMastersRequest {
        NamespaceName: pointy.String("namespace-0001"),
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DescribeRarityParameterModelMastersRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->describeRarityParameterModelMasters(
        (new DescribeRarityParameterModelMastersRequest())
            ->withNamespaceName("namespace-0001")
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DescribeRarityParameterModelMastersRequest;
import io.gs2.enchant.result.DescribeRarityParameterModelMastersResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DescribeRarityParameterModelMastersResult result = client.describeRarityParameterModelMasters(
        new DescribeRarityParameterModelMastersRequest()
            .withNamespaceName("namespace-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    List<RarityParameterModelMaster> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DescribeRarityParameterModelMastersResult> asyncResult = null;
yield return client.DescribeRarityParameterModelMasters(
    new Gs2.Gs2Enchant.Request.DescribeRarityParameterModelMastersRequest()
        .WithNamespaceName("namespace-0001")
        .WithPageToken(null)
        .WithLimit(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
var nextPageToken = result.NextPageToken;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.describeRarityParameterModelMasters(
        new Gs2Enchant.DescribeRarityParameterModelMastersRequest()
            .withNamespaceName("namespace-0001")
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.describe_rarity_parameter_model_masters(
        enchant.DescribeRarityParameterModelMastersRequest()
            .with_namespace_name('namespace-0001')
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.describe_rarity_parameter_model_masters({
    namespaceName="namespace-0001",
    pageToken=nil,
    limit=nil,
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.describe_rarity_parameter_model_masters_async({
    namespaceName="namespace-0001",
    pageToken=nil,
    limit=nil,
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
items = result.items;
nextPageToken = result.nextPageToken;

```



---

### createRarityParameterModelMaster

레어리티 파라미터 모델 마스터를 신규 작성<br>

새로운 편집 가능한 레어리티 파라미터 모델 마스터 정의를 작성합니다.<br>
최대 파라미터 수는 파라미터 슬롯의 상한을 지정하며, 파라미터 수 분포는 슬롯이 몇 개 채워질지에 대한 확률 분포를 정의합니다.<br>
파라미터는 레어리티 기반 추첨 가중치가 포함된, 취할 수 있는 값을 정의합니다.<br>
변경 사항은 CurrentParameterMaster API로 마스터 데이터를 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| name | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델 이름<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| metadata | string |  | |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| maximumParameterCount | int |  | ✓|  | 1 ~ 10 | 부여할 파라미터의 최대 수<br>리소스에 부여할 수 있는 파라미터 슬롯 수의 상한입니다. 실제로 부여되는 수는 부여 수 모델 목록에서의 가중 추첨으로 결정되지만, 이 값을 초과하지 않습니다. |
| parameterCounts | [List&lt;RarityParameterCountModel&gt;](#rarityparametercountmodel) |  | ✓|  | 1 ~ 10 items | 레어리티 파라미터의 부여 수 모델 목록<br>부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨 엔트리를 정의합니다. 각 엔트리는 부여 수와 추첨 가중치를 지정합니다. 가중치가 클수록 해당 부여 수가 선택될 확률이 높아집니다. |
| parameters | [List&lt;RarityParameterValueModel&gt;](#rarityparametervaluemodel) |  | ✓|  | 1 ~ 1000 items | 레어리티 파라미터 값 모델 목록<br>추첨 가능한 파라미터 값의 풀을 정의합니다. 각 엔트리는 파라미터 이름, 리소스 상세 정보, 추첨 가중치를 지정합니다. 파라미터 슬롯을 채울 때, 이 풀에서 중복 없이 가중 추첨으로 값이 선택됩니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterModelMaster](#rarityparametermodelmaster) | 작성한 레어리티 파라미터 모델 마스터 데이터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.CreateRarityParameterModelMaster(
    &enchant.CreateRarityParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        Name: pointy.String("rarity-0001"),
        Description: nil,
        Metadata: nil,
        MaximumParameterCount: pointy.Int32(5),
        ParameterCounts: []enchant.RarityParameterCountModel{
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(0),
                Weight: pointy.Int32(1),
            },
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(1),
                Weight: pointy.Int32(2),
            },
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(2),
                Weight: pointy.Int32(3),
            },
        },
        Parameters: []enchant.RarityParameterValueModel{
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-0001"),
                ResourceName: pointy.String("resource-0001"),
                ResourceValue: pointy.Int64(100),
                Weight: pointy.Int32(1),
            },
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-0002"),
                ResourceName: pointy.String("resource-0002"),
                ResourceValue: pointy.Int64(200),
                Weight: pointy.Int32(2),
            },
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-0003"),
                ResourceName: pointy.String("resource-0003"),
                ResourceValue: pointy.Int64(300),
                Weight: pointy.Int32(3),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\CreateRarityParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->createRarityParameterModelMaster(
        (new CreateRarityParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withName("rarity-0001")
            ->withDescription(null)
            ->withMetadata(null)
            ->withMaximumParameterCount(5)
            ->withParameterCounts([
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(0)
                    ->withWeight(1),
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(1)
                    ->withWeight(2),
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(2)
                    ->withWeight(3),
            ])
            ->withParameters([
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-0001")
                    ->withResourceName("resource-0001")
                    ->withResourceValue(100)
                    ->withWeight(1),
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-0002")
                    ->withResourceName("resource-0002")
                    ->withResourceValue(200)
                    ->withWeight(2),
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-0003")
                    ->withResourceName("resource-0003")
                    ->withResourceValue(300)
                    ->withWeight(3),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.CreateRarityParameterModelMasterRequest;
import io.gs2.enchant.result.CreateRarityParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    CreateRarityParameterModelMasterResult result = client.createRarityParameterModelMaster(
        new CreateRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withName("rarity-0001")
            .withDescription(null)
            .withMetadata(null)
            .withMaximumParameterCount(5)
            .withParameterCounts(Arrays.asList(
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(0)
                    .withWeight(1),
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(1)
                    .withWeight(2),
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(2)
                    .withWeight(3)
            ))
            .withParameters(Arrays.asList(
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-0001")
                    .withResourceName("resource-0001")
                    .withResourceValue(100L)
                    .withWeight(1),
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-0002")
                    .withResourceName("resource-0002")
                    .withResourceValue(200L)
                    .withWeight(2),
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-0003")
                    .withResourceName("resource-0003")
                    .withResourceValue(300L)
                    .withWeight(3)
            ))
    );
    RarityParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.CreateRarityParameterModelMasterResult> asyncResult = null;
yield return client.CreateRarityParameterModelMaster(
    new Gs2.Gs2Enchant.Request.CreateRarityParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithName("rarity-0001")
        .WithDescription(null)
        .WithMetadata(null)
        .WithMaximumParameterCount(5)
        .WithParameterCounts(new Gs2.Gs2Enchant.Model.RarityParameterCountModel[] {
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(0)
                .WithWeight(1),
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(1)
                .WithWeight(2),
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(2)
                .WithWeight(3),
        })
        .WithParameters(new Gs2.Gs2Enchant.Model.RarityParameterValueModel[] {
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-0001")
                .WithResourceName("resource-0001")
                .WithResourceValue(100L)
                .WithWeight(1),
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-0002")
                .WithResourceName("resource-0002")
                .WithResourceValue(200L)
                .WithWeight(2),
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-0003")
                .WithResourceName("resource-0003")
                .WithResourceValue(300L)
                .WithWeight(3),
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.createRarityParameterModelMaster(
        new Gs2Enchant.CreateRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withName("rarity-0001")
            .withDescription(null)
            .withMetadata(null)
            .withMaximumParameterCount(5)
            .withParameterCounts([
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(0)
                    .withWeight(1),
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(1)
                    .withWeight(2),
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(2)
                    .withWeight(3),
            ])
            .withParameters([
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-0001")
                    .withResourceName("resource-0001")
                    .withResourceValue(100)
                    .withWeight(1),
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-0002")
                    .withResourceName("resource-0002")
                    .withResourceValue(200)
                    .withWeight(2),
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-0003")
                    .withResourceName("resource-0003")
                    .withResourceValue(300)
                    .withWeight(3),
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.create_rarity_parameter_model_master(
        enchant.CreateRarityParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_name('rarity-0001')
            .with_description(None)
            .with_metadata(None)
            .with_maximum_parameter_count(5)
            .with_parameter_counts([
                enchant.RarityParameterCountModel()
                    .with_count(0)
                    .with_weight(1),
                enchant.RarityParameterCountModel()
                    .with_count(1)
                    .with_weight(2),
                enchant.RarityParameterCountModel()
                    .with_count(2)
                    .with_weight(3),
            ])
            .with_parameters([
                enchant.RarityParameterValueModel()
                    .with_name('parameter-0001')
                    .with_resource_name('resource-0001')
                    .with_resource_value(100)
                    .with_weight(1),
                enchant.RarityParameterValueModel()
                    .with_name('parameter-0002')
                    .with_resource_name('resource-0002')
                    .with_resource_value(200)
                    .with_weight(2),
                enchant.RarityParameterValueModel()
                    .with_name('parameter-0003')
                    .with_resource_name('resource-0003')
                    .with_resource_value(300)
                    .with_weight(3),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.create_rarity_parameter_model_master({
    namespaceName="namespace-0001",
    name="rarity-0001",
    description=nil,
    metadata=nil,
    maximumParameterCount=5,
    parameterCounts={
        {
            count=0,
            weight=1,
        },
        {
            count=1,
            weight=2,
        },
        {
            count=2,
            weight=3,
        }
    },
    parameters={
        {
            name="parameter-0001",
            resourceName="resource-0001",
            resourceValue=100,
            weight=1,
        },
        {
            name="parameter-0002",
            resourceName="resource-0002",
            resourceValue=200,
            weight=2,
        },
        {
            name="parameter-0003",
            resourceName="resource-0003",
            resourceValue=300,
            weight=3,
        }
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.create_rarity_parameter_model_master_async({
    namespaceName="namespace-0001",
    name="rarity-0001",
    description=nil,
    metadata=nil,
    maximumParameterCount=5,
    parameterCounts={
        {
            count=0,
            weight=1,
        },
        {
            count=1,
            weight=2,
        },
        {
            count=2,
            weight=3,
        }
    },
    parameters={
        {
            name="parameter-0001",
            resourceName="resource-0001",
            resourceValue=100,
            weight=1,
        },
        {
            name="parameter-0002",
            resourceName="resource-0002",
            resourceValue=200,
            weight=2,
        },
        {
            name="parameter-0003",
            resourceName="resource-0003",
            resourceValue=300,
            weight=3,
        }
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### getRarityParameterModelMaster

레어리티 파라미터 모델 마스터를 조회<br>

이름을 지정하여 특정 편집 가능한 레어리티 파라미터 모델 마스터의 상세 정보를 조회합니다.<br>
유효화 전 마스터 정의의 열람·편집에 사용합니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델 이름<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterModelMaster](#rarityparametermodelmaster) | 레어리티 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.GetRarityParameterModelMaster(
    &enchant.GetRarityParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\GetRarityParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->getRarityParameterModelMaster(
        (new GetRarityParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.GetRarityParameterModelMasterRequest;
import io.gs2.enchant.result.GetRarityParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    GetRarityParameterModelMasterResult result = client.getRarityParameterModelMaster(
        new GetRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    RarityParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.GetRarityParameterModelMasterResult> asyncResult = null;
yield return client.GetRarityParameterModelMaster(
    new Gs2.Gs2Enchant.Request.GetRarityParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.getRarityParameterModelMaster(
        new Gs2Enchant.GetRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.get_rarity_parameter_model_master(
        enchant.GetRarityParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.get_rarity_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.get_rarity_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### updateRarityParameterModelMaster

레어리티 파라미터 모델 마스터를 업데이트<br>

기존 레어리티 파라미터 모델 마스터의 설명, 메타데이터, 최대 파라미터 수, 파라미터 수 분포, 파라미터를 업데이트합니다.<br>
파라미터 모델 이름은 작성 후 변경할 수 없습니다.<br>
변경 사항은 CurrentParameterMaster API로 마스터 데이터를 다시 유효화할 때까지 반영되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델 이름<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| description | string |  | |  |  ~ 1024자 | 설명문 |
| metadata | string |  | |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| maximumParameterCount | int |  | ✓|  | 1 ~ 10 | 부여할 파라미터의 최대 수<br>리소스에 부여할 수 있는 파라미터 슬롯 수의 상한입니다. 실제로 부여되는 수는 부여 수 모델 목록에서의 가중 추첨으로 결정되지만, 이 값을 초과하지 않습니다. |
| parameterCounts | [List&lt;RarityParameterCountModel&gt;](#rarityparametercountmodel) |  | ✓|  | 1 ~ 10 items | 레어리티 파라미터의 부여 수 모델 목록<br>부여되는 파라미터 슬롯 수를 결정하기 위한 가중 추첨 엔트리를 정의합니다. 각 엔트리는 부여 수와 추첨 가중치를 지정합니다. 가중치가 클수록 해당 부여 수가 선택될 확률이 높아집니다. |
| parameters | [List&lt;RarityParameterValueModel&gt;](#rarityparametervaluemodel) |  | ✓|  | 1 ~ 1000 items | 레어리티 파라미터 값 모델 목록<br>추첨 가능한 파라미터 값의 풀을 정의합니다. 각 엔트리는 파라미터 이름, 리소스 상세 정보, 추첨 가중치를 지정합니다. 파라미터 슬롯을 채울 때, 이 풀에서 중복 없이 가중 추첨으로 값이 선택됩니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterModelMaster](#rarityparametermodelmaster) | 업데이트한 레어리티 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.UpdateRarityParameterModelMaster(
    &enchant.UpdateRarityParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
        Description: pointy.String("description1"),
        Metadata: pointy.String("RARITY_0001"),
        MaximumParameterCount: pointy.Int32(10),
        ParameterCounts: []enchant.RarityParameterCountModel{
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(5),
                Weight: pointy.Int32(3),
            },
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(10),
                Weight: pointy.Int32(5),
            },
            enchant.RarityParameterCountModel{
                Count: pointy.Int32(3),
                Weight: pointy.Int32(10),
            },
        },
        Parameters: []enchant.RarityParameterValueModel{
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-1001"),
                ResourceName: pointy.String("resource-1001"),
                ResourceValue: pointy.Int64(10),
                Weight: pointy.Int32(10),
            },
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-1002"),
                ResourceName: pointy.String("resource-1002"),
                ResourceValue: pointy.Int64(20),
                Weight: pointy.Int32(20),
            },
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-1003"),
                ResourceName: pointy.String("resource-1003"),
                ResourceValue: pointy.Int64(30),
                Weight: pointy.Int32(30),
            },
            enchant.RarityParameterValueModel{
                Name: pointy.String("parameter-1004"),
                ResourceName: pointy.String("resource-1004"),
                ResourceValue: pointy.Int64(40),
                Weight: pointy.Int32(40),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\UpdateRarityParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->updateRarityParameterModelMaster(
        (new UpdateRarityParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
            ->withDescription("description1")
            ->withMetadata("RARITY_0001")
            ->withMaximumParameterCount(10)
            ->withParameterCounts([
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(5)
                    ->withWeight(3),
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(10)
                    ->withWeight(5),
                (new \Gs2\Enchant\Model\RarityParameterCountModel())
                    ->withCount(3)
                    ->withWeight(10),
            ])
            ->withParameters([
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-1001")
                    ->withResourceName("resource-1001")
                    ->withResourceValue(10)
                    ->withWeight(10),
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-1002")
                    ->withResourceName("resource-1002")
                    ->withResourceValue(20)
                    ->withWeight(20),
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-1003")
                    ->withResourceName("resource-1003")
                    ->withResourceValue(30)
                    ->withWeight(30),
                (new \Gs2\Enchant\Model\RarityParameterValueModel())
                    ->withName("parameter-1004")
                    ->withResourceName("resource-1004")
                    ->withResourceValue(40)
                    ->withWeight(40),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.UpdateRarityParameterModelMasterRequest;
import io.gs2.enchant.result.UpdateRarityParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    UpdateRarityParameterModelMasterResult result = client.updateRarityParameterModelMaster(
        new UpdateRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withDescription("description1")
            .withMetadata("RARITY_0001")
            .withMaximumParameterCount(10)
            .withParameterCounts(Arrays.asList(
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(5)
                    .withWeight(3),
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(10)
                    .withWeight(5),
                new io.gs2.enchant.model.RarityParameterCountModel()
                    .withCount(3)
                    .withWeight(10)
            ))
            .withParameters(Arrays.asList(
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-1001")
                    .withResourceName("resource-1001")
                    .withResourceValue(10L)
                    .withWeight(10),
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-1002")
                    .withResourceName("resource-1002")
                    .withResourceValue(20L)
                    .withWeight(20),
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-1003")
                    .withResourceName("resource-1003")
                    .withResourceValue(30L)
                    .withWeight(30),
                new io.gs2.enchant.model.RarityParameterValueModel()
                    .withName("parameter-1004")
                    .withResourceName("resource-1004")
                    .withResourceValue(40L)
                    .withWeight(40)
            ))
    );
    RarityParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.UpdateRarityParameterModelMasterResult> asyncResult = null;
yield return client.UpdateRarityParameterModelMaster(
    new Gs2.Gs2Enchant.Request.UpdateRarityParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001")
        .WithDescription("description1")
        .WithMetadata("RARITY_0001")
        .WithMaximumParameterCount(10)
        .WithParameterCounts(new Gs2.Gs2Enchant.Model.RarityParameterCountModel[] {
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(5)
                .WithWeight(3),
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(10)
                .WithWeight(5),
            new Gs2.Gs2Enchant.Model.RarityParameterCountModel()
                .WithCount(3)
                .WithWeight(10),
        })
        .WithParameters(new Gs2.Gs2Enchant.Model.RarityParameterValueModel[] {
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-1001")
                .WithResourceName("resource-1001")
                .WithResourceValue(10L)
                .WithWeight(10),
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-1002")
                .WithResourceName("resource-1002")
                .WithResourceValue(20L)
                .WithWeight(20),
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-1003")
                .WithResourceName("resource-1003")
                .WithResourceValue(30L)
                .WithWeight(30),
            new Gs2.Gs2Enchant.Model.RarityParameterValueModel()
                .WithName("parameter-1004")
                .WithResourceName("resource-1004")
                .WithResourceValue(40L)
                .WithWeight(40),
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.updateRarityParameterModelMaster(
        new Gs2Enchant.UpdateRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
            .withDescription("description1")
            .withMetadata("RARITY_0001")
            .withMaximumParameterCount(10)
            .withParameterCounts([
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(5)
                    .withWeight(3),
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(10)
                    .withWeight(5),
                new Gs2Enchant.model.RarityParameterCountModel()
                    .withCount(3)
                    .withWeight(10),
            ])
            .withParameters([
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-1001")
                    .withResourceName("resource-1001")
                    .withResourceValue(10)
                    .withWeight(10),
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-1002")
                    .withResourceName("resource-1002")
                    .withResourceValue(20)
                    .withWeight(20),
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-1003")
                    .withResourceName("resource-1003")
                    .withResourceValue(30)
                    .withWeight(30),
                new Gs2Enchant.model.RarityParameterValueModel()
                    .withName("parameter-1004")
                    .withResourceName("resource-1004")
                    .withResourceValue(40)
                    .withWeight(40),
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.update_rarity_parameter_model_master(
        enchant.UpdateRarityParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
            .with_description('description1')
            .with_metadata('RARITY_0001')
            .with_maximum_parameter_count(10)
            .with_parameter_counts([
                enchant.RarityParameterCountModel()
                    .with_count(5)
                    .with_weight(3),
                enchant.RarityParameterCountModel()
                    .with_count(10)
                    .with_weight(5),
                enchant.RarityParameterCountModel()
                    .with_count(3)
                    .with_weight(10),
            ])
            .with_parameters([
                enchant.RarityParameterValueModel()
                    .with_name('parameter-1001')
                    .with_resource_name('resource-1001')
                    .with_resource_value(10)
                    .with_weight(10),
                enchant.RarityParameterValueModel()
                    .with_name('parameter-1002')
                    .with_resource_name('resource-1002')
                    .with_resource_value(20)
                    .with_weight(20),
                enchant.RarityParameterValueModel()
                    .with_name('parameter-1003')
                    .with_resource_name('resource-1003')
                    .with_resource_value(30)
                    .with_weight(30),
                enchant.RarityParameterValueModel()
                    .with_name('parameter-1004')
                    .with_resource_name('resource-1004')
                    .with_resource_value(40)
                    .with_weight(40),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.update_rarity_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    description="description1",
    metadata="RARITY_0001",
    maximumParameterCount=10,
    parameterCounts={
        {
            count=5,
            weight=3,
        },
        {
            count=10,
            weight=5,
        },
        {
            count=3,
            weight=10,
        }
    },
    parameters={
        {
            name="parameter-1001",
            resourceName="resource-1001",
            resourceValue=10,
            weight=10,
        },
        {
            name="parameter-1002",
            resourceName="resource-1002",
            resourceValue=20,
            weight=20,
        },
        {
            name="parameter-1003",
            resourceName="resource-1003",
            resourceValue=30,
            weight=30,
        },
        {
            name="parameter-1004",
            resourceName="resource-1004",
            resourceValue=40,
            weight=40,
        }
    },
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.update_rarity_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
    description="description1",
    metadata="RARITY_0001",
    maximumParameterCount=10,
    parameterCounts={
        {
            count=5,
            weight=3,
        },
        {
            count=10,
            weight=5,
        },
        {
            count=3,
            weight=10,
        }
    },
    parameters={
        {
            name="parameter-1001",
            resourceName="resource-1001",
            resourceValue=10,
            weight=10,
        },
        {
            name="parameter-1002",
            resourceName="resource-1002",
            resourceValue=20,
            weight=20,
        },
        {
            name="parameter-1003",
            resourceName="resource-1003",
            resourceValue=30,
            weight=30,
        },
        {
            name="parameter-1004",
            resourceName="resource-1004",
            resourceValue=40,
            weight=40,
        }
    },
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---

### deleteRarityParameterModelMaster

레어리티 파라미터 모델 마스터를 삭제<br>

편집 가능한 레어리티 파라미터 모델 마스터 정의를 삭제합니다.<br>
마스터 데이터에만 영향을 미치며, 현재 유효화(공개)된 모델은 마스터 데이터가 다시 유효화될 때까지 영향을 받지 않습니다.<br>
삭제된 모델과 관련된 기존 사용자 파라미터 상태는 자동으로 삭제되지 않습니다.


#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| parameterName | string |  | ✓|  |  ~ 128자 | 레어리티 파라미터 모델 이름<br>레어리티 파라미터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| item | [RarityParameterModelMaster](#rarityparametermodelmaster) | 삭제한 레어리티 파라미터 모델 마스터 |

#### 구현 예제




**Go**
```go

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enchant"
import "github.com/openlyinc/pointy"

session := core.Gs2RestSession{
    Credential: &core.BasicGs2Credential{
        ClientId: "your client id",
        ClientSecret: "your client secret",
    },
    Region: core.ApNortheast1,
}

if err := session.Connect(); err != nil {
    panic("error occurred")
}

client := enchant.Gs2EnchantRestClient{
    Session: &session,
}
result, err := client.DeleteRarityParameterModelMaster(
    &enchant.DeleteRarityParameterModelMasterRequest {
        NamespaceName: pointy.String("namespace-0001"),
        ParameterName: pointy.String("rarity-0001"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item

```

**PHP**
```php

use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enchant\Gs2EnchantRestClient;
use Gs2\Enchant\Request\DeleteRarityParameterModelMasterRequest;

$session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region::AP_NORTHEAST_1
);

$session->open();

$client = new Gs2EnchantRestClient(
    $session
);

try {
    $result = $client->deleteRarityParameterModelMaster(
        (new DeleteRarityParameterModelMasterRequest())
            ->withNamespaceName("namespace-0001")
            ->withParameterName("rarity-0001")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}

```

**Java**
```java

import io.gs2.core.model.Region;
import io.gs2.core.model.BasicGs2Credential;
import io.gs2.core.rest.Gs2RestSession;
import io.gs2.core.exception.Gs2Exception;
import io.gs2.enchant.rest.Gs2EnchantRestClient;
import io.gs2.enchant.request.DeleteRarityParameterModelMasterRequest;
import io.gs2.enchant.result.DeleteRarityParameterModelMasterResult;

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    )
);
session.connect();
Gs2EnchantRestClient client = new Gs2EnchantRestClient(session);

try {
    DeleteRarityParameterModelMasterResult result = client.deleteRarityParameterModelMaster(
        new DeleteRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    RarityParameterModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}

```

**C#**
```csharp

using Gs2.Core;
using Gs2.Core.Model;
using Gs2.Core.Net;
using Gs2.Core.Exception;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        "your client id",
        "your client secret"
    ),
    Region.ApNortheast1
);
yield return session.OpenAsync(r => { });
var client = new Gs2EnchantRestClient(session);

AsyncResult<Gs2.Gs2Enchant.Result.DeleteRarityParameterModelMasterResult> asyncResult = null;
yield return client.DeleteRarityParameterModelMaster(
    new Gs2.Gs2Enchant.Request.DeleteRarityParameterModelMasterRequest()
        .WithNamespaceName("namespace-0001")
        .WithParameterName("rarity-0001"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;

```

**TypeScript**
```typescript

import Gs2Core from '@/gs2/core';
import * as Gs2Enchant from '@/gs2/enchant';

const session = new Gs2Core.Gs2RestSession(
    "ap-northeast-1",
    new Gs2Core.BasicGs2Credential(
        'your client id',
        'your client secret'
    )
);
await session.connect();
const client = new Gs2Enchant.Gs2EnchantRestClient(session);

try {
    const result = await client.deleteRarityParameterModelMaster(
        new Gs2Enchant.DeleteRarityParameterModelMasterRequest()
            .withNamespaceName("namespace-0001")
            .withParameterName("rarity-0001")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}

```

**Python**
```python

from gs2 import core
from gs2 import enchant

session = core.Gs2RestSession(
    core.BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    "ap-northeast-1",
)
session.connect()
client = enchant.Gs2EnchantRestClient(session)

try:
    result = client.delete_rarity_parameter_model_master(
        enchant.DeleteRarityParameterModelMasterRequest()
            .with_namespace_name('namespace-0001')
            .with_parameter_name('rarity-0001')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)


```

**GS2-Script**
```lua

client = gs2('enchant')

api_result = client.delete_rarity_parameter_model_master({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```

**GS2-Script(Async)**
```lua

client = gs2('enchant')

api_result_handler = client.delete_rarity_parameter_model_master_async({
    namespaceName="namespace-0001",
    parameterName="rarity-0001",
})

api_result = api_result_handler()  -- Call the handler to get the result

if(api_result.isError) then
    -- When error occurs
    fail(api_result['statusCode'], api_result['errorMessage'])
end

result = api_result.result
item = result.item;

```



---



