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

# GS2-Enchant トランザクションアクション

検証/消費/入手の各トランザクションアクションの仕様




## アクションの組み合わせと同時実行

すべてのサービスに共通する前提は [トランザクションアクションの組み合わせ]() にまとめています。先にそちらを読んでください。この節の残りは GS2-Enchant 固有の内容です。

GS2-Enchant のトランザクションアクションは 2 種類のステータスを扱います。どちらもネームスペース・ユーザー・パラメータモデル・プロパティの組で決まり、更新のたびに全体が書き換わります。

- バランスパラメータのステータス
- レアリティパラメータのステータス

操作 | 同じ行を重ねたとき | 入れ子越し | 別の対象になる境界 | 直列実行モード有効時
--- | --- | --- | --- | ---
バランスパラメータの引き直し<br>`ReDrawBalanceParameterStatusByUserId` | まったく同じ指定でも発行時にエラー | 失敗する | ネームスペース・ユーザー・パラメータモデル・プロパティ (バランス) | 入れ子越しでも成立する。後から実行された方の引き直し結果になる
バランスパラメータの設定<br>`SetBalanceParameterStatusByUserId` | 同値なら統合。値が違えば発行時にエラー | 失敗する | ネームスペース・ユーザー・パラメータモデル・プロパティ (バランス) | 入れ子越しでも成立する。同値なら通り、値が違えば後から実行された方の値になる
レアリティパラメータの引き直し<br>`ReDrawRarityParameterStatusByUserId` | まったく同じ指定でも発行時にエラー | 失敗する | ネームスペース・ユーザー・パラメータモデル・プロパティ (レアリティ) | 入れ子越しでも成立する。後から実行された方の引き直し結果になる
レアリティパラメータの加算<br>`AddRarityParameterStatusByUserId` | 統合され、数が合算される | 失敗する | ネームスペース・ユーザー・パラメータモデル・プロパティ (レアリティ) | 成立する。入れ子越しでも合算される
レアリティパラメータの設定<br>`SetRarityParameterStatusByUserId` | 同値なら統合。値が違えば発行時にエラー | 失敗する | ネームスペース・ユーザー・パラメータモデル・プロパティ (レアリティ) | 入れ子越しでも成立する。同値なら通り、値が違えば後から実行された方の値になる
検証<br>`VerifyRarityParameterStatusByUserId` | まったく同じ検証は 1 件にまとめられる | 読み取りだけなので衝突しない | ステータス・検証タイプ・パラメータ名・数 | 変わらない。読み取りだけなのでもともと衝突しない

合算できる値を持つのはレアリティパラメータの加算だけです。引き直しと設定はステータス全体を置き換えるため、同じステータスを触る他の行と同居できません。**直列実行モード（`enableSequentialExecution` または `TransactionSettingV2`）を有効にすると、アクションが 1 件ずつ実行され、それぞれが直前のアクションの書き込みを見られるようになるため、この制約はなくなります。同じステータスに対してこれらの行をどう組み合わせても 1 つのトランザクションに入れられるようになります。フェーズの中での実行順はアクション名で決まるため、レアリティパラメータの加算は必ず引き直しより先に、設定は必ず後に実行されます。したがって加算は後に続く引き直しで捨てられ、設定はそれまでの結果を上書きします。同じステータスへの引き直しを 2 つ並べて指定した場合は、まったく同じアクションが重複しどちらの結果を採用すべきか区別できないため、発行時のエラーのままです。**

引き直しはステータス全体を引き直すため、同じステータスへの引き直しを 2 つ以上指定できません。固定するパラメータまで含めてまったく同じ指定であっても発行時にエラーになります。「2 回引き直す」という指示は表現できないと考えてください。

バランスパラメータのステータスとレアリティパラメータのステータスは、同じプロパティに対するものでも別の対象です。1 つのトランザクションで両方を更新するのは問題ありません。

検証アクションはトランザクション開始時点のステータスを見ます。同じトランザクションで到達するパラメータを検証することはできません。

### 入れ子になったトランザクションに注意

並べて書けば 1 件に統合されたはずの同じレアリティパラメータへの加算どうしでも、片方が内側から届く場合はトランザクションが失敗します。報酬や抽選の中身まで含めて、1 つのトランザクションの中で同じステータスを更新する箇所が 1 つだけになるように設計してください。

直列実行モードを有効にすると、この失敗は起こらなくなります。内側のトランザクションは外側と同じ直列実行の区間で実行されるようになるため、2 つの加算は衝突する代わりに同じ行として統合されます。

引き直しは、並べて書いた場合は発行時に、内側から届いた場合は実行時にエラーになります。エラーになる時点が違うだけなので、同じステータスへの引き直しは 1 つのトランザクションに 1 つだけにしてください。**直列実行モードを有効にすると、入れ子から届く引き直しの実行時エラーは起こらなくなります。内側と外側の引き直しは同じ直列実行の区間で順番に実行されるようになり、後から実行された方の結果が最終的な値になります。並べて書いた引き直し 2 つを発行時に弾く挙動は変わりません。実行される前に判定されるためです。**

### 制限を回避したい場合

GS2-Enchant でステータスを更新するアクションはすべて入手アクションなので、上記の衝突は `acquireActionUseJobQueue` を有効にすれば解消できます。

ただし、発行時に弾かれる重複は例外です。並べて書いた引き直しの重複と、並べて書いた設定の値違いの重複がこれにあたります。どちらも `acquireActionUseJobQueue` の判定より手前で弾かれるため、有効にしても回避できません。同じステータスへの引き直しを 2 回行いたい場合は、トランザクション自体を分けてください。

### 同時実行とリトライ

ステータスはリビジョンの照合を伴って全体が書き換わるため、同じステータスを複数のリクエストが同時に更新すると、後から確定した側がコンフリクト (409) になります。リクエストの内容に問題があるわけではないので、リトライすれば成功します。

同じプロパティへのエンチャントを複数の箇所から同時に行うほど発生しやすくなるので、1 つのステータスへの更新は可能な範囲で直列化してください。

---


## Verify Action

検証アクション

### Gs2Enchant:VerifyRarityParameterStatusByUserId

ユーザーIDを指定してレアリティパラメータを検証<br>

指定されたユーザーのレアリティパラメータの状態が指定された条件を満たすかどうかを検証します。<br>
3つの検証タイプがサポートされています：<br>
- `have`: 指定されたパラメータ値が状態に存在することを検証<br>
- `havent`: 指定されたパラメータ値が状態に存在しないことを検証<br>
- `count`: パラメータの数が指定された数と一致することを検証<br>
他のアクションを実行する前の前提条件チェックとして使用できます。

**数量指定可能なアクション：はい**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザー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文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:VerifyRarityParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "parameterName": "[string]レアリティパラメータモデル名",
        "userId": "[string]ユーザーID",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "verifyType": "[string]検証の種類",
        "parameterValueName": "[string]名前",
        "parameterCount": "[int]検証するパラメータの数",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:VerifyRarityParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  parameterName: "[string]レアリティパラメータモデル名"
  userId: "[string]ユーザーID"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  verifyType: "[string]検証の種類"
  parameterValueName: "[string]名前"
  parameterCount: "[int]検証するパラメータの数"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").verify.verify_rarity_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    parameterName="[string]レアリティパラメータモデル名",
    userId="[string]ユーザーID",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    verifyType="[string]検証の種類",
    parameterValueName="[string]名前",
    parameterCount="[int]検証するパラメータの数",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---


## Acquire Action

入手アクション

### Gs2Enchant:ReDrawBalanceParameterStatusByUserId

ユーザーIDを指定してバランスパラメータを再抽選<br>

特定のプロパティのバランスパラメータ値を再抽選し、合計値をパラメータ間で再分配します。<br>
fixedParameterNames にパラメータ名を指定することで、特定のパラメータを固定（ロック）して再抽選対象から除外できます（最大10個）。<br>
合計値の制約は維持されます：固定されたものを含むすべてのパラメータ値の合計は常にモデルの合計値と等しくなります。<br>
更新後と更新前のパラメータ状態の両方が返されます。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | バランスパラメータモデル名<br>このステータスの抽選条件を定義するバランスパラメータモデルの名前です。合計値、配分方針、利用可能なパラメータスロットを指定するモデルを参照します。 |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのバランスパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| fixedParameterNames | List&lt;string&gt; |  | | [] | 0 ~ 10 items | 再抽選しないパラメータの名前リスト |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:ReDrawBalanceParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "parameterName": "[string]バランスパラメータモデル名",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "fixedParameterNames": [
            "[string]再抽選しないパラメータの名前"
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:ReDrawBalanceParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  parameterName: "[string]バランスパラメータモデル名"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  fixedParameterNames: 
    - "[string]再抽選しないパラメータの名前"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").acquire.re_draw_balance_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    parameterName="[string]バランスパラメータモデル名",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    fixedParameterNames={
        "[string]再抽選しないパラメータの名前"
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Enchant:SetBalanceParameterStatusByUserId

ユーザーIDを指定してバランスパラメータに任意の値を設定<br>

通常の抽選/再抽選メカニズムを経ずに、指定されたユーザーの特定のプロパティにパラメータ値を直接設定します。<br>
これは任意のパラメータ値を割り当てることができる管理操作です。<br>
更新後と更新前のパラメータ状態の両方が返されます。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | バランスパラメータモデル名<br>このステータスの抽選条件を定義するバランスパラメータモデルの名前です。合計値、配分方針、利用可能なパラメータスロットを指定するモデルを参照します。 |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのバランスパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| parameterValues | [List&lt;BalanceParameterValue&gt;](../sdk/#balanceparametervalue) |  | ✓|  | 1 ~ 10 items | バランスパラメータの値リスト<br>抽選処理後に各パラメータスロットに割り当てられた具体的な値です。各エントリはモデルで定義されたパラメータスロットに対応し、割り当てられた実際の数値を保持します。すべての値の合計はモデルで指定された合計値と等しくなります。 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:SetBalanceParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "parameterName": "[string]バランスパラメータモデル名",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "parameterValues": [
            {
                "name": "[string]名前",
                "value": "[long]値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:SetBalanceParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  parameterName: "[string]バランスパラメータモデル名"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  parameterValues: 
    - name: "[string]名前"
      value: "[long]値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").acquire.set_balance_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    parameterName="[string]バランスパラメータモデル名",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    parameterValues={
        {
            name="[string]名前",
            value="[long]値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Enchant:ReDrawRarityParameterStatusByUserId

ユーザーIDを指定してレアリティパラメータを再抽選<br>

特定のプロパティのレアリティパラメータ値を再抽選し、レアリティウェイトに基づいてランダムに新しい値を割り当てます。<br>
fixedParameterNames にパラメータ名を指定することで、特定のパラメータを固定（ロック）して再抽選対象から除外できます（最大10個）。<br>
固定されたパラメータは現在の値を保持し、固定されていないパラメータのみが再抽選されます。<br>
更新後と更新前のパラメータ状態の両方が返されます。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| fixedParameterNames | List&lt;string&gt; |  | |  | 0 ~ 10 items | 再抽選しないパラメータの名前リスト |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:ReDrawRarityParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "parameterName": "[string]レアリティパラメータモデル名",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "fixedParameterNames": [
            "[string]再抽選しないパラメータの名前"
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:ReDrawRarityParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  parameterName: "[string]レアリティパラメータモデル名"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  fixedParameterNames: 
    - "[string]再抽選しないパラメータの名前"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").acquire.re_draw_rarity_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    parameterName="[string]レアリティパラメータモデル名",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    fixedParameterNames={
        "[string]再抽選しないパラメータの名前"
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Enchant:AddRarityParameterStatusByUserId

ユーザーIDを指定してレアリティパラメータを追加<br>

レアリティウェイトに基づいてランダムに値を抽選し、既存のレアリティパラメータ状態に新しいパラメータスロットを追加します。<br>
count は追加するパラメータスロットの数（1〜10）を指定し、モデルの最大パラメータ数が上限となります。<br>
更新後と更新前のパラメータ状態の両方が返されます。

**数量指定可能なアクション：はい**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| count | int |  | | 1 | 1 ~ 10 | 追加するパラメータの数 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:AddRarityParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "parameterName": "[string]レアリティパラメータモデル名",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "count": "[int]追加するパラメータの数",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:AddRarityParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  parameterName: "[string]レアリティパラメータモデル名"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  count: "[int]追加するパラメータの数"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").acquire.add_rarity_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    parameterName="[string]レアリティパラメータモデル名",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    count="[int]追加するパラメータの数",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Enchant:SetRarityParameterStatusByUserId

ユーザーIDを指定してレアリティパラメータに任意の値を設定<br>

通常の抽選/再抽選メカニズムを経ずに、指定されたユーザーの特定のプロパティにパラメータ値を直接設定します。<br>
これはレアリティウェイトに関係なく任意のパラメータ値を割り当てることができる管理操作です。<br>
更新後と更新前のパラメータ状態の両方が返されます。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| parameterValues | [List&lt;RarityParameterValue&gt;](../sdk/#rarityparametervalue) |  | |  | 0 ~ 10 items | レアリティパラメータの値リスト<br>付与された各スロットに対して重み付き抽選で選択された具体的なパラメータ値です。エントリ数は付与数の抽選で決定され、各エントリの値は値モデルプールから選択されます。最大パラメータ数より少ないエントリ数になる場合があります。 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Enchant:SetRarityParameterStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "parameterName": "[string]レアリティパラメータモデル名",
        "propertyId": "[string]パラメータの保有元リソースのプロパティID",
        "parameterValues": [
            {
                "name": "[string]名前",
                "resourceName": "[string]リソースの名前",
                "resourceValue": "[long]リソースの値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Enchant:SetRarityParameterStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  parameterName: "[string]レアリティパラメータモデル名"
  propertyId: "[string]パラメータの保有元リソースのプロパティID"
  parameterValues: 
    - name: "[string]名前"
      resourceName: "[string]リソースの名前"
      resourceValue: "[long]リソースの値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("enchant").acquire.set_rarity_parameter_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    parameterName="[string]レアリティパラメータモデル名",
    propertyId="[string]パラメータの保有元リソースのプロパティID",
    parameterValues={
        {
            name="[string]名前",
            resourceName="[string]リソースの名前",
            resourceValue="[long]リソースの値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---



