API Reference of GS2-Showcase SDK for Game Engine
Model
EzSalesItem
Showcase
Set the price required to purchase the product and the reward earned for the purchase of the product.
| Type | Require | Default | Limitation | Description |
---|
name | string | ✓ | | ~ 128 chars | Product Name |
metadata | string | | | ~ 2048 chars | metadata |
consumeActions | List<EzConsumeAction> | | | | List of Consumption Action |
acquireActions | List<EzAcquireAction> | ✓ | | | List of Acquire Action |
EzSalesItemGroup
Product Group
A product group is an entity for display on a showcase.
The first product that is determined to be available for purchase is actually displayed on the shelves.
This can be used for products that are discounted only for the first time, or for a system in which the contents of products change depending on the number of times they are purchased, such as a step-up gacha.
| Type | Require | Default | Limitation | Description |
---|
name | string | ✓ | | ~ 128 chars | Product Group Name |
metadata | string | | | ~ 2048 chars | metadata |
salesItems | List<EzSalesItem> | ✓ | | | Products to be included in the product group |
EzShowcase
Showcase
The sales period can be set for the display shelf.
| Type | Require | Default | Limitation | Description |
---|
name | string | ✓ | | ~ 128 chars | Showcase Name |
metadata | string | | | ~ 2048 chars | metadata |
displayItems | List<EzDisplayItem> | ✓ | | | List of Products on display |
EzDisplayItem
Displayed Item
| Type | Require | Default | Limitation | Description |
---|
displayItemId | string | ✓ | UUID | ~ 128 chars | Displayed Item ID |
type | enum [‘salesItem’, ‘salesItemGroup’] | ✓ | | ~ 128 chars | Type |
salesItem | EzSalesItem | {type} == “salesItem” | | | Products to be displayed |
salesItemGroup | EzSalesItemGroup | {type} == “salesItemGroup” | | | Product group to be displayed |
EzRandomDisplayItem
Random displayable items on the Random Showcase
| Type | Require | Default | Limitation | Description |
---|
name | string | ✓ | UUID | ~ 128 chars | Random Displayed Item ID |
metadata | string | | | ~ 2048 chars | metadata |
consumeActions | List<EzConsumeAction> | | | | List of Consumption Action |
acquireActions | List<EzAcquireAction> | ✓ | | | List of Acquire Action |
currentPurchaseCount | int | ✓ | | 1 ~ 2147483646 | Current purchase count |
maximumPurchaseCount | int | ✓ | | 1 ~ 2147483646 | Maximum purchase count |
EzConfig
| Type | Require | Default | Limitation | Description |
---|
key | string | ✓ | | ~ 64 chars | Name |
value | string | | | ~ 51200 chars | Value |
EzConsumeAction
| Type | Require | Default | Limitation | Description |
---|
action | enum [] | ✓ | | ~ 128 chars | Types of actions to be performed in the stamp task |
request | string | ✓ | | ~ 1048576 chars | JSON of the obtain request |
EzAcquireAction
| Type | Require | Default | Limitation | Description |
---|
action | enum [] | ✓ | | ~ 128 chars | Types of actions to be performed in the stamp sheet |
request | string | ✓ | | ~ 1048576 chars | JSON of request |
Methods
buy
Buy Product
Request
| Type | Require | Default | Limitation | Description |
---|
namespaceName | string | ✓ | | ~ 32 chars | Namespace name |
showcaseName | string | ✓ | | ~ 128 chars | Showcase Name |
accessToken | string | ✓ | | ~ 128 chars | User Id |
displayItemId | string | ✓ | UUID | ~ 128 chars | Displayed Item ID |
quantity | int | ✓ | 1 | 1 ~ 1000 | Purchase Quantity |
config | List<EzConfig> | | [] | | Set values to be applied to stamp sheet variables |
Result
| Type | Description |
---|
item | EzSalesItem | Product |
transactionId | string | Transaction ID of the stamp sheet issued |
stampSheet | string | Stamp sheets used to execute the purchase process |
stampSheetEncryptionKeyId | string | Cryptographic key GRN used for stamp sheet signature calculations |
autoRunStampSheet | bool | Is stamp sheet auto-execution enabled? |
Implementation Example
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
).DisplayItem(
displayItemId: "display-item-0001"
);
var result = await domain.BuyAsync(
quantity: null,
config: null
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
).DisplayItem(
displayItemId: "display-item-0001"
);
var future = domain.Buy(
quantity: null,
config: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Showcase(
"showcase-0001" // showcaseName
)->DisplayItem(
"display-item-0001" // displayItemId
);
const auto Future = Domain->Buy(
nullptr, // quantity
nullptr // config
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
getShowcase
Retrieve showcase
Request
| Type | Require | Default | Limitation | Description |
---|
namespaceName | string | ✓ | | ~ 32 chars | Namespace name |
accessToken | string | ✓ | | ~ 128 chars | User Id |
showcaseName | string | ✓ | | ~ 128 chars | Showcase Name |
Result
Implementation Example
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Showcase(
"showcase-0001" // showcaseName
);
const auto Future = Domain.Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
getRandomShowcaseDisplayItem
Get random showcase display item
Request
| Type | Require | Default | Limitation | Description |
---|
namespaceName | string | ✓ | | ~ 32 chars | Namespace name |
accessToken | string | ✓ | | ~ 128 chars | User Id |
showcaseName | string | ✓ | | ~ 128 chars | Random Showcase Name |
displayItemName | string | ✓ | UUID | ~ 128 chars | Random Displayed Item ID |
Result
Implementation Example
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
).RandomDisplayItem(
displayItemName: "display-item-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
).RandomDisplayItem(
displayItemName: "display-item-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->RandomShowcase(
"showcase-0001" // showcaseName
)->RandomDisplayItem(
"display-item-0001" // displayItemName
);
const auto Future = Domain.Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
listRandomShowcaseDisplayItems
Retrieve random showcase display items
Request
| Type | Require | Default | Limitation | Description |
---|
namespaceName | string | ✓ | | ~ 32 chars | Namespace name |
accessToken | string | ✓ | | ~ 128 chars | User Id |
showcaseName | string | ✓ | | ~ 128 chars | Random Showcase Name |
Result
Implementation Example
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
);
var items = await domain.RandomDisplayItemsAsync(
).ToListAsync();
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
);
var it = domain.RandomDisplayItems(
);
List<EzRandomDisplayItem> items = new List<EzRandomDisplayItem>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->RandomShowcase(
"showcase-0001" // showcaseName
);
const auto It = Domain->RandomDisplayItems(
);
for (auto Item : *It)
{
}
randomShowcaseBuy
Buy Product from random showcase
Request
| Type | Require | Default | Limitation | Description |
---|
namespaceName | string | ✓ | | ~ 32 chars | Namespace name |
showcaseName | string | ✓ | | ~ 128 chars | Random Showcase Name |
accessToken | string | ✓ | | ~ 128 chars | User Id |
displayItemName | string | ✓ | UUID | ~ 128 chars | Random Displayed Item ID |
quantity | int | ✓ | 1 | 1 ~ 1000 | Purchase Quantity |
config | List<EzConfig> | | [] | | Set values to be applied to stamp sheet variables |
Result
| Type | Description |
---|
item | EzRandomDisplayItem | Displayed item |
transactionId | string | Transaction ID of the stamp sheet issued |
stampSheet | string | Stamp sheets used to execute the purchase process |
stampSheetEncryptionKeyId | string | Cryptographic key GRN used for stamp sheet signature calculations |
autoRunStampSheet | bool | Is stamp sheet auto-execution enabled? |
Implementation Example
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
).RandomDisplayItem(
displayItemName: "display-item-0001"
);
var result = await domain.RandomShowcaseBuyAsync(
quantity: 1,
config: null
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).RandomShowcase(
showcaseName: "showcase-0001"
).RandomDisplayItem(
displayItemName: "display-item-0001"
);
var future = domain.RandomShowcaseBuy(
quantity: 1,
config: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->RandomShowcase(
"showcase-0001" // showcaseName
)->RandomDisplayItem(
"display-item-0001" // displayItemName
);
const auto Future = Domain->RandomShowcaseBuy(
1, // quantity
nullptr // config
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}