Documentation index for AI agents

GS2-LoginReward トランザクションアクション

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

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

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

GS2-LoginReward のトランザクションアクションは、ネームスペース・ユーザー・ボーナスモデルの組で決まる 1 つの受け取り状況を対象にします。どのステップを受け取り済みかを、一覧を丸ごと持つ 1 行として記録します。

操作同じ行を重ねたとき入れ子越し別の対象になる境界
ステップの受け取り済みマーク
MarkReceivedByUserId
同じステップなら 1 つにまとまる。ステップが違えばエラー (400)同じステップなら通る。ステップが違えば失敗するネームスペース・ユーザー・ボーナスモデル
マークの取り消し
UnmarkReceivedByUserId
同じステップなら 1 つにまとまる。ステップが違えばエラー (400)同じステップなら通る。ステップが違えば失敗するネームスペース・ユーザー・ボーナスモデル
受け取り状況の破棄
DeleteReceiveStatusByUserId
1 件に統合される失敗するネームスペース・ユーザー・ボーナスモデル

複数のステップを 1 つのトランザクションで受け取らないでください。 受け取り済みステップの一覧は 1 行にまとまっていて全体が書き換わるため、境界をステップ単位に割れません。そのため違うステップへのマークを 2 つ並べると合成できず、トランザクションを組み立てる時点でエラー (400) になります。同じステップへのマークは 1 つにまとまります。ステップごとにトランザクションを分けてください。

マークとその取り消しは行が違い、境界が同じです。1 つのトランザクションでマークと取り消しを行うことはできません。ステップの報酬の受け取りはマークとして表現され、そのマークを根拠に報酬が支払われます。

受け取り状況の破棄は内容を変えるのではなく丸ごと消すため、それを触る他のアクションと同居できません。

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

内側からマークされたステップと、外側から触られた同じ受け取り状況が衝突して、トランザクションが失敗します。1 つのトランザクションの中でも入れ子越しでも、違うステップへのマークはどちらもエラーになります。

制限を回避したい場合

受け取り済みマークは消費アクション、その取り消しと受け取り状況の破棄は入手アクションです。取り消しと破棄の衝突は acquireActionUseJobQueue を有効にすれば解消できますが、マークとの同居は enableAtomicCommit を無効にしないと解消しません。ただし、1 つのトランザクションに違うステップのマークを入れた場合は、どちらの設定でも許可されません。トランザクションを組み立てる時点で弾かれるためです。

同時実行とリトライ

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


Consume Action

消費アクション

Gs2LoginReward:MarkReceivedByUserId

ユーザーIDを指定して受け取り済み化

指定されたユーザーのボーナスモデルで特定のステップを手動で受け取り済みにマークします。

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

反転可能なアクション:はい

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
bonusModelNamestring
~ 128文字ボーナスモデル名
この受け取り状態が紐づくログインボーナスモデルの名前。
ユーザーの受け取り進捗を特定のボーナスモデル定義に関連づけ、どの報酬リストと配布ルールが適用されるかを決定します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
stepNumberint
0 ~ 100ステップ番号
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2LoginReward:MarkReceivedByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "bonusModelName": "[string]ボーナスモデル名",
        "userId": "[string]ユーザーID",
        "stepNumber": "[int]ステップ番号",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2LoginReward:MarkReceivedByUserId
request:
  namespaceName: "[string]ネームスペース名"
  bonusModelName: "[string]ボーナスモデル名"
  userId: "[string]ユーザーID"
  stepNumber: "[int]ステップ番号"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("loginReward").consume.mark_received_by_user_id({
    namespaceName="[string]ネームスペース名",
    bonusModelName="[string]ボーナスモデル名",
    userId="[string]ユーザーID",
    stepNumber="[int]ステップ番号",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Acquire Action

入手アクション

Gs2LoginReward:DeleteReceiveStatusByUserId

ユーザーIDを指定して受け取り状態のリセット

指定されたユーザーのボーナスモデルの受け取り状態データを全て削除し、ボーナスの進捗を完全にリセットします。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
bonusModelNamestring
~ 128文字ボーナスモデル名
この受け取り状態が紐づくログインボーナスモデルの名前。
ユーザーの受け取り進捗を特定のボーナスモデル定義に関連づけ、どの報酬リストと配布ルールが適用されるかを決定します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2LoginReward:DeleteReceiveStatusByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "bonusModelName": "[string]ボーナスモデル名",
        "userId": "[string]ユーザーID",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2LoginReward:DeleteReceiveStatusByUserId
request:
  namespaceName: "[string]ネームスペース名"
  bonusModelName: "[string]ボーナスモデル名"
  userId: "[string]ユーザーID"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("loginReward").acquire.delete_receive_status_by_user_id({
    namespaceName="[string]ネームスペース名",
    bonusModelName="[string]ボーナスモデル名",
    userId="[string]ユーザーID",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2LoginReward:UnmarkReceivedByUserId

ユーザーIDを指定して未受け取り化

指定されたユーザーのボーナスモデルで、受け取り済みにマークされたステップを未受け取りに戻します。
指定されたステップが受け取り済みでない場合、エラーが返されます。

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

反転可能なアクション:はい

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
bonusModelNamestring
~ 128文字ボーナスモデル名
この受け取り状態が紐づくログインボーナスモデルの名前。
ユーザーの受け取り進捗を特定のボーナスモデル定義に関連づけ、どの報酬リストと配布ルールが適用されるかを決定します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
stepNumberint
0 ~ 100ステップ番号
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2LoginReward:UnmarkReceivedByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "bonusModelName": "[string]ボーナスモデル名",
        "userId": "[string]ユーザーID",
        "stepNumber": "[int]ステップ番号",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2LoginReward:UnmarkReceivedByUserId
request:
  namespaceName: "[string]ネームスペース名"
  bonusModelName: "[string]ボーナスモデル名"
  userId: "[string]ユーザーID"
  stepNumber: "[int]ステップ番号"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("loginReward").acquire.unmark_received_by_user_id({
    namespaceName="[string]ネームスペース名",
    bonusModelName="[string]ボーナスモデル名",
    userId="[string]ユーザーID",
    stepNumber="[int]ステップ番号",
    timeOffsetToken="[string]タイムオフセットトークン",
})