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

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

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





## Consume Action

消費アクション

### Gs2Exchange:DeleteAwaitByUserId

ユーザーIDを指定して交換待機を削除<br>

指定されたユーザーの交換待機レコードを削除します。<br>
保留中の交換がキャンセルされ、まだ取得されていない報酬は放棄されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| awaitName | string |  | ✓| UUID |  ~ 36文字 | 交換待機の名前<br>交換待機の一意な名前を保持します。<br>名前は UUID（Universally Unique Identifier）フォーマットで自動的に生成され、交換待機を識別するために使用されます。 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:DeleteAwaitByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "awaitName": "[string]交換待機の名前",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:DeleteAwaitByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  awaitName: "[string]交換待機の名前"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").consume.delete_await_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    awaitName="[string]交換待機の名前",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

## Acquire Action

入手アクション

### Gs2Exchange:ExchangeByUserId

ユーザーIDを指定して交換を実行<br>

指定されたユーザーに対して、指定された交換レートモデルに基づいてリソース交換を実行します。<br>
レートモデルのタイミングタイプを検証します：'immediate' タイミングの場合はネームスペースで直接交換が有効である必要があり、'await' タイミングの場合は待機交換が有効である必要があります。<br>
レートモデルで定義された消費・検証・入手アクションを指定回数分実行するトランザクションが発行されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| rateName | string |  | ✓|  |  ~ 128文字 | 交換レートモデル名<br>交換レートモデルの種類固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| count | int |  | ✓|  | 1 ~ 1073741821 | 交換回数 |
| config | List&lt;Config&gt; |  | | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:ExchangeByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "rateName": "[string]交換レートモデル名",
        "userId": "[string]ユーザーID",
        "count": "[int]交換回数",
        "config": [
            {
                "key": "[string]名前",
                "value": "[string]値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:ExchangeByUserId
request:
  namespaceName: "[string]ネームスペース名"
  rateName: "[string]交換レートモデル名"
  userId: "[string]ユーザーID"
  count: "[int]交換回数"
  config: 
    - key: "[string]名前"
      value: "[string]値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").acquire.exchange_by_user_id({
    namespaceName="[string]ネームスペース名",
    rateName="[string]交換レートモデル名",
    userId="[string]ユーザーID",
    count="[int]交換回数",
    config={
        {
            key="[string]名前",
            value="[string]値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Exchange:IncrementalExchangeByUserId

ユーザーIDを指定してコスト上昇型交換を実行<br>

指定されたユーザーに対して、指定されたコスト上昇型交換レートモデルに基づいて、実行回数に応じてコストが段階的に上昇するリソース交換を実行します。<br>
消費コストはモデルの計算タイプ（線形計算式またはGS2-Script）と現在の交換回数に基づいて計算されます。<br>
消費・入手アクションを実行するトランザクションが発行されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| rateName | string |  | ✓|  |  ~ 128文字 | コスト上昇型交換レートモデルの名前<br>コスト上昇型交換レートモデルの種類固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| count | int |  | ✓|  | 1 ~ 1073741821 | 交換回数 |
| config | List&lt;Config&gt; |  | | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:IncrementalExchangeByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "rateName": "[string]コスト上昇型交換レートモデルの名前",
        "userId": "[string]ユーザーID",
        "count": "[int]交換回数",
        "config": [
            {
                "key": "[string]名前",
                "value": "[string]値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:IncrementalExchangeByUserId
request:
  namespaceName: "[string]ネームスペース名"
  rateName: "[string]コスト上昇型交換レートモデルの名前"
  userId: "[string]ユーザーID"
  count: "[int]交換回数"
  config: 
    - key: "[string]名前"
      value: "[string]値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").acquire.incremental_exchange_by_user_id({
    namespaceName="[string]ネームスペース名",
    rateName="[string]コスト上昇型交換レートモデルの名前",
    userId="[string]ユーザーID",
    count="[int]交換回数",
    config={
        {
            key="[string]名前",
            value="[string]値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Exchange:CreateAwaitByUserId

ユーザーIDを指定して交換待機を作成<br>

時間待機型交換の新しい交換待機レコードを作成します。<br>
指定されたレートモデルのタイミングタイプは 'await' である必要があり、そうでない場合はリクエストが拒否されます。<br>
待機はスキップ秒数ゼロで開始され、レートモデルで定義されたロック時間が報酬取得までのユーザーの待機時間を決定します。<br>
作成時にデフォルトの設定値を指定でき、取得時に提供される設定値とマージされます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| rateName | string |  | ✓|  |  ~ 128文字 | 交換レートモデル名<br>交換レートモデルの種類固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| count | int |  | | 1 | 1 ~ 10000 | 交換数<br>この交換を実行する回数です。複数回の交換を1つの待機にまとめることができ、消費されるコストと受け取る報酬の両方が乗算されます。 |
| config | List&lt;Config&gt; |  | | [] | 0 ~ 32 items | 報酬取得時に適用するデフォルト設定値 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:CreateAwaitByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "rateName": "[string]交換レートモデル名",
        "count": "[int]交換数",
        "config": [
            {
                "key": "[string]名前",
                "value": "[string]値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:CreateAwaitByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  rateName: "[string]交換レートモデル名"
  count: "[int]交換数"
  config: 
    - key: "[string]名前"
      value: "[string]値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").acquire.create_await_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    rateName="[string]交換レートモデル名",
    count="[int]交換数",
    config={
        {
            key="[string]名前",
            value="[string]値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Exchange:AcquireForceByUserId

交換待機の報酬を、待機時間の判定を行わず強制取得<br>

ロック時間が経過しているかどうかに関係なく、交換待機の報酬を強制的に取得します。<br>
通常の待機時間チェックをバイパスし、即時に報酬を取得できます。<br>
提供された設定値は待機作成時に設定されたデフォルト設定値とマージされます。<br>
レートモデルで定義された入手アクションを実行するトランザクションが発行されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| awaitName | string |  | ✓| UUID |  ~ 36文字 | 交換待機の名前<br>交換待機の一意な名前を保持します。<br>名前は UUID（Universally Unique Identifier）フォーマットで自動的に生成され、交換待機を識別するために使用されます。 |
| config | List&lt;Config&gt; |  | | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:AcquireForceByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "awaitName": "[string]交換待機の名前",
        "config": [
            {
                "key": "[string]名前",
                "value": "[string]値"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:AcquireForceByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  awaitName: "[string]交換待機の名前"
  config: 
    - key: "[string]名前"
      value: "[string]値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").acquire.acquire_force_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    awaitName="[string]交換待機の名前",
    config={
        {
            key="[string]名前",
            value="[string]値"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Exchange:SkipByUserId

ユーザーIDを指定して交換待機をスキップ<br>

交換待機の待機時間を加速またはスキップします。<br>
4つのスキップタイプをサポートしています：'complete' は残りの待機時間を全てスキップし、'minutes' は指定した分数をスキップ秒数に加算し、'totalRate' は全体のロック時間の割合をスキップし、'remainRate' は残りの待機時間の割合をスキップします。<br>
スキップ秒数は合計ロック時間が上限となり、それを超えることはできません。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| awaitName | string |  | ✓| UUID |  ~ 36文字 | 交換待機の名前<br>交換待機の一意な名前を保持します。<br>名前は UUID（Universally Unique Identifier）フォーマットで自動的に生成され、交換待機を識別するために使用されます。 |
| skipType | 文字列列挙型<br>enum {<br>&nbsp;&nbsp;"complete",<br>&nbsp;&nbsp;"minutes",<br>&nbsp;&nbsp;"totalRate",<br>&nbsp;&nbsp;"remainRate"<br>}<br> |  | | "complete" |  | スキップ方法"complete": 完全にスキップ / "minutes": 時間を指定してスキップ(分) / "totalRate": 全体の待機時間の割合を指定してスキップ / "remainRate": 残りの待機時間の割合を指定してスキップ /  |
| minutes | int | {skipType} == "minutes" | |  | 0 ~ 2147483646 | スキップする分数<br>※ skipType が "minutes" であれば有効 |
| rate | float | {skipType} == "totalRate" or {skipType} == "remainRate" | |  | 0 ~ 1 | スキップする待機時間の割合 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Exchange:SkipByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "awaitName": "[string]交換待機の名前",
        "skipType": "[string]スキップ方法",
        "minutes": "[int]スキップする分数",
        "rate": "[float]スキップする待機時間の割合",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Exchange:SkipByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  awaitName: "[string]交換待機の名前"
  skipType: "[string]スキップ方法"
  minutes: "[int]スキップする分数"
  rate: "[float]スキップする待機時間の割合"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("exchange").acquire.skip_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    awaitName="[string]交換待機の名前",
    skipType="[string]スキップ方法",
    minutes="[int]スキップする分数",
    rate="[float]スキップする待機時間の割合",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---



