API Reference of GS2-Enhance SDK

Model

Namespace

Namespace

Namespace is a mechanism that allows multiple uses of the same service for different purposes within a single project. Basically, GS2 services have a layer called namespace, and different namespaces are treated as completely different data spaces, even for the same service.

Therefore, it is necessary to create a namespace before starting to use each service.

TypeRequireDefaultLimitationDescription
namespaceIdstring~ 1024 charsNamespace GRN
namestring~ 32 charsNamespace name
descriptionstring~ 1024 charsdescription of Namespace
enableDirectEnhanceboolfalseDirectEnhance is available
transactionSettingTransactionSettingTransaction settings
enhanceScriptScriptSettingScript to be executed at the time of reinforcement
logSettingLogSettingLog output settings
createdAtlongDatetime of creation
updatedAtlongDatetime of last update
queueNamespaceIdstring~ 1024 charsNamespace in GS2-JobQueue used to run the stamp sheet
keyIdstring~ 1024 charsGS2-Key namespace used to issue stamp sheets

RateModel

Enhancement Rates

The enhancement rate is data that defines the materials used for enhancement and the target of enhancement.

Both material data and enhancement target data must be managed in GS2-Inventory. The experience value obtained from the enhancement is recorded in GS2-Inventory metadata in JSON format. Here, it is necessary to describe at which level of the metadata the experience value is stored.

A correction value can be applied to the amount of experience value that can be obtained with a certain probability of great success during enhancement. The probability of that draw is also defined in this entity.

TypeRequireDefaultLimitationDescription
rateModelIdstring~ 1024 charsEnhance Rate Model GRN
namestring~ 128 charsEnhanced Rate Name
descriptionstring~ 1024 charsdescription of Namespace
metadatastring~ 2048 charsmetadata
targetInventoryModelIdstring~ 1024 charsInventory available for enhancement targets
acquireExperienceSuffixstring~ 1024 charsSuffix to be assigned to the property ID that stores the experience value obtained from GS2-Experience
materialInventoryModelIdstring~ 1024 charsInventory model GRN
acquireExperienceHierarchyList<string>JSON hierarchy of metadata storing acquired experience values
experienceModelIdstring~ 1024 charsExperience Model GRN
bonusRatesList<BonusRate>Experience gain bonus

RateModelMaster

Enhancement Rate Master

The reinforcement rate is data that defines the materials used for reinforcement and the target of reinforcement.

Both material data and reinforcement target data must be managed in GS2-Inventory. The experience value obtained from the reinforcement is recorded in GS2-Inventory metadata in JSON format. Here, it is necessary to describe at which level of the metadata the experience value is stored.

A correction value can be applied to the amount of experience value that can be obtained with a certain probability of great success during reinforcement. The probability of that draw is also defined in this entity.

TypeRequireDefaultLimitationDescription
rateModelIdstring~ 1024 charsEnhance Rate Model Master GRN
namestring~ 128 charsEnhanced Rate Name
descriptionstring~ 1024 charsdescription of Namespace
metadatastring~ 2048 charsmetadata
targetInventoryModelIdstring~ 1024 charsInventory available for enhancement targets
acquireExperienceSuffixstring~ 1024 charsSuffix to be assigned to the property ID that stores the experience value obtained from GS2-Experience
materialInventoryModelIdstring~ 1024 charsInventory available for materials
acquireExperienceHierarchyList<string>JSON hierarchy of metadata storing acquired experience values
experienceModelIdstring~ 1024 charsExperience gained as a result of reinforcement
bonusRatesList<BonusRate>Experience gain bonus
createdAtlongDatetime of creation
updatedAtlongDatetime of last update

Progress

Enhance Progress

It is created at the beginning of the enhance and deleted at the end.

When you exit the application in the middle of an enhance, this data will remain. It is possible to resume the game from the ongoing enhance information maintained by the entity.

TypeRequireDefaultLimitationDescription
progressIdstring~ 1024 charsProgress GRN
userIdstring~ 128 charsUser Id
rateNamestring~ 128 charsRate Model Name
namestringUUID~ 36 charsConduct ID
propertyIdstring~ 1024 charsProperty ID to be enhanced
experienceValuelong~ 9223372036854775805Experience value
ratefloat~ 100.0Experience value scale factor
createdAtlongDatetime of creation
updatedAtlongDatetime of last update

CurrentRateMaster

Currently available enhanced rate masters

GS2 uses JSON format files for master data management. By uploading the file, the settings can actually be reflected on the server.

We provide a Master Data Editor on the Management Console as a way to create JSON files, but you can also create your own JSON files using the The service can also be used by creating a tool more appropriate for game management and exporting a JSON file in the appropriate format.

Please refer to the documentation for the format of the JSON file.

TypeRequireDefaultLimitationDescription
namespaceIdstring~ 1024 charsCurrently available enhance experience rate setting GRN
settingsstring~ 5242880 charsMaster data

BonusRate

TypeRequireDefaultLimitationDescription
ratefloat1.0~ 10000Experience bonus multiplier (1.0 = no bonus)
weightint1~ 2147483645lottery weight

Material

TypeRequireDefaultLimitationDescription
materialItemSetIdstring~ 1024 charsQuantity of items held per expiration date GRN
countint1~ 2147483645Number of consumption

Config

TypeRequireDefaultLimitationDescription
keystring~ 64 charsName
valuestring~ 51200 charsValue

GitHubCheckoutSetting

TypeRequireDefaultLimitationDescription
apiKeyIdstring~ 1024 charsGitHub API key GRN
repositoryNamestring~ 1024 charsRepository Name
sourcePathstring~ 1024 charsSource code file path
referenceTypeenum [‘commit_hash’, ‘branch’, ’tag’]~ 128 charsSource of code
commitHashstring{referenceType} == “commit_hash”~ 1024 charsCommit hash
branchNamestring{referenceType} == “branch”~ 1024 charsBranch Name
tagNamestring{referenceType} == “tag”~ 1024 charsTag Name

ScriptSetting

TypeRequireDefaultLimitationDescription
triggerScriptIdstring~ 1024 charsScript GRN
doneTriggerTargetTypeenum [’none’, ‘gs2_script’, ‘aws’]“none”~ 128 charsNotification of Completion
doneTriggerScriptIdstring{doneTriggerTargetType} == “gs2_script”~ 1024 charsScript GRN
doneTriggerQueueNamespaceIdstring{doneTriggerTargetType} == “gs2_script”~ 1024 charsNamespace GRN

LogSetting

TypeRequireDefaultLimitationDescription
loggingNamespaceIdstring~ 1024 charsNamespace GRN

TransactionSetting

TypeRequireDefaultLimitationDescription
enableAutoRunboolfalseAutomatically run issued stamp sheets on the server side, or
distributorNamespaceIdstring{enableAutoRun}~ 1024 charsGS2-Distributor namespace used for stamp sheet execution
keyIdstring!{enableAutoRun}~ 1024 charsGS2-Key encryption key used to sign the stamp sheet
queueNamespaceIdstring~ 1024 charsNamespace in GS2-JobQueue used to run the stamp sheet

Methods

describeNamespaces

Get list of namespaces

Request

TypeRequireDefaultLimitationDescription
pageTokenstring~ 1024 charsToken specifying the position from which to start acquiring data
limitint301 ~ 1000Number of data acquired

Result

TypeDescription
itemsList<Namespace>List of Namespace
nextPageTokenstringPage token to retrieve the rest of the listing

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DescribeNamespaces(
    &enhance.DescribeNamespacesRequest {
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DescribeNamespacesRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->describeNamespaces(
        (new DescribeNamespacesRequest())
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DescribeNamespacesRequest;
import io.gs2.enhance.result.DescribeNamespacesResult;

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

try {
    DescribeNamespacesResult result = client.describeNamespaces(
        new DescribeNamespacesRequest()
            .withPageToken(null)
            .withLimit(null)
    );
    List<Namespace> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DescribeNamespacesRequest;
using Gs2.Gs2Enhance.Result.DescribeNamespacesResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DescribeNamespacesResult> asyncResult = null;
yield return client.DescribeNamespaces(
    new Gs2.Gs2Enhance.Request.DescribeNamespacesRequest()
        .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;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.describeNamespaces(
        new Gs2Enhance.DescribeNamespacesRequest()
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

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

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

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

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

createNamespace

Create a new namespace

Request

TypeRequireDefaultLimitationDescription
namestring~ 32 charsNamespace name
descriptionstring~ 1024 charsdescription of Namespace
enableDirectEnhanceboolfalseDirectEnhance is available
transactionSettingTransactionSettingTransaction settings
enhanceScriptScriptSettingScript to be executed at the time of reinforcement
logSettingLogSettingLog output settings
queueNamespaceIdstring~ 1024 charsNamespace in GS2-JobQueue used to run the stamp sheet
keyIdstring~ 1024 charsGS2-Key namespace used to issue stamp sheets

Result

TypeDescription
itemNamespaceNamespace created

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.CreateNamespace(
    &enhance.CreateNamespaceRequest {
        Name: pointy.String("namespace1"),
        Description: nil,
        EnableDirectEnhance: pointy.Bool(true),
        TransactionSetting: &enhance.TransactionSetting{
            EnableAutoRun: pointy.Bool(false),
            QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
            KeyId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001"),
        },
        EnhanceScript: nil,
        LogSetting: &enhance.LogSetting{
            LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"),
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\CreateNamespaceRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->createNamespace(
        (new CreateNamespaceRequest())
            ->withName(self::namespace1)
            ->withDescription(null)
            ->withEnableDirectEnhance(True)
            ->withTransactionSetting((new \Gs2\Enhance\Model\TransactionSetting())
                ->withEnableAutoRun(False)
                ->withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
                ->withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:\namespace1:key:key-0001"))
            ->withEnhanceScript(null)
            ->withLogSetting((new \Gs2\Enhance\Model\LogSetting())
                ->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:\namespace1"))
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.CreateNamespaceRequest;
import io.gs2.enhance.result.CreateNamespaceResult;

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

try {
    CreateNamespaceResult result = client.createNamespace(
        new CreateNamespaceRequest()
            .withName("namespace1")
            .withDescription(null)
            .withEnableDirectEnhance(true)
            .withTransactionSetting(new io.gs2.enhance.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
                .withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001"))
            .withEnhanceScript(null)
            .withLogSetting(new io.gs2.enhance.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"))
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.CreateNamespaceRequest;
using Gs2.Gs2Enhance.Result.CreateNamespaceResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.CreateNamespaceResult> asyncResult = null;
yield return client.CreateNamespace(
    new Gs2.Gs2Enhance.Request.CreateNamespaceRequest()
        .WithName("namespace1")
        .WithDescription(null)
        .WithEnableDirectEnhance(true)
        .WithTransactionSetting(new Gs2.Gs2Enhance.Model.TransactionSetting()
            .WithEnableAutoRun(false)
            .WithQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
            .WithKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001"))
        .WithEnhanceScript(null)
        .WithLogSetting(new Gs2.Gs2Enhance.Model.LogSetting()
            .WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1")),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.createNamespace(
        new Gs2Enhance.CreateNamespaceRequest()
            .withName("namespace1")
            .withDescription(null)
            .withEnableDirectEnhance(true)
            .withTransactionSetting(new Gs2Enhance.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
                .withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001"))
            .withEnhanceScript(null)
            .withLogSetting(new Gs2Enhance.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"))
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.create_namespace(
        enhance.CreateNamespaceRequest()
            .with_name(self.hash1)
            .with_description(None)
            .with_enable_direct_enhance(True)
            .with_transaction_setting(
                enhance.TransactionSetting()
                    .with_enable_auto_run(False)
                    .with_queue_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001')
                    .with_key_id('grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001'))
            .with_enhance_script(None)
            .with_log_setting(
                enhance.LogSetting()
                    .with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1'))
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.create_namespace({
    name='namespace1',
    description=nil,
    enableDirectEnhance=true,
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId='grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001',
        keyId='grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0001',
    },
    enhanceScript=nil,
    logSetting={
        loggingNamespaceId='grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1',
    },
})

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

result = api_result.result
item = result.item;

getNamespaceStatus

Get namespace status

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
statusstring

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.GetNamespaceStatus(
    &enhance.GetNamespaceStatusRequest {
        NamespaceName: pointy.String("namespace1"),
    }
)
if err != nil {
    panic("error occurred")
}
status := result.Status
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\GetNamespaceStatusRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->getNamespaceStatus(
        (new GetNamespaceStatusRequest())
            ->withNamespaceName(self::namespace1)
    );
    $status = $result->getStatus();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.GetNamespaceStatusRequest;
import io.gs2.enhance.result.GetNamespaceStatusResult;

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

try {
    GetNamespaceStatusResult result = client.getNamespaceStatus(
        new GetNamespaceStatusRequest()
            .withNamespaceName("namespace1")
    );
    String status = result.getStatus();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.GetNamespaceStatusRequest;
using Gs2.Gs2Enhance.Result.GetNamespaceStatusResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.GetNamespaceStatusResult> asyncResult = null;
yield return client.GetNamespaceStatus(
    new Gs2.Gs2Enhance.Request.GetNamespaceStatusRequest()
        .WithNamespaceName("namespace1"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var status = result.Status;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.getNamespaceStatus(
        new Gs2Enhance.GetNamespaceStatusRequest()
            .withNamespaceName("namespace1")
    );
    const status = result.getStatus();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.get_namespace_status(
        enhance.GetNamespaceStatusRequest()
            .with_namespace_name(self.hash1)
    )
    status = result.status
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.get_namespace_status({
    namespaceName='namespace1',
})

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

result = api_result.result
status = result.status;

getNamespace

Get namespace

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
itemNamespaceNamespace

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.GetNamespace(
    &enhance.GetNamespaceRequest {
        NamespaceName: pointy.String("namespace1"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\GetNamespaceRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->getNamespace(
        (new GetNamespaceRequest())
            ->withNamespaceName(self::namespace1)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.GetNamespaceRequest;
import io.gs2.enhance.result.GetNamespaceResult;

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

try {
    GetNamespaceResult result = client.getNamespace(
        new GetNamespaceRequest()
            .withNamespaceName("namespace1")
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.GetNamespaceRequest;
using Gs2.Gs2Enhance.Result.GetNamespaceResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.GetNamespaceResult> asyncResult = null;
yield return client.GetNamespace(
    new Gs2.Gs2Enhance.Request.GetNamespaceRequest()
        .WithNamespaceName("namespace1"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.getNamespace(
        new Gs2Enhance.GetNamespaceRequest()
            .withNamespaceName("namespace1")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.get_namespace(
        enhance.GetNamespaceRequest()
            .with_namespace_name(self.hash1)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.get_namespace({
    namespaceName='namespace1',
})

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

result = api_result.result
item = result.item;

updateNamespace

Update namespace

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
descriptionstring~ 1024 charsdescription of Namespace
enableDirectEnhanceboolfalseDirectEnhance is available
transactionSettingTransactionSettingTransaction settings
enhanceScriptScriptSettingScript to be executed at the time of reinforcement
logSettingLogSettingLog output settings
queueNamespaceIdstring~ 1024 charsNamespace in GS2-JobQueue used to run the stamp sheet
keyIdstring~ 1024 charsGS2-Key namespace used to issue stamp sheets

Result

TypeDescription
itemNamespaceUpdated namespace

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.UpdateNamespace(
    &enhance.UpdateNamespaceRequest {
        NamespaceName: pointy.String("namespace1"),
        Description: pointy.String("description1"),
        EnableDirectEnhance: pointy.Bool(false),
        TransactionSetting: &enhance.TransactionSetting{
            EnableAutoRun: pointy.Bool(false),
            QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002"),
            KeyId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002"),
        },
        EnhanceScript: nil,
        LogSetting: &enhance.LogSetting{
            LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"),
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\UpdateNamespaceRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->updateNamespace(
        (new UpdateNamespaceRequest())
            ->withNamespaceName(self::namespace1)
            ->withDescription("description1")
            ->withEnableDirectEnhance(False)
            ->withTransactionSetting((new \Gs2\Enhance\Model\TransactionSetting())
                ->withEnableAutoRun(False)
                ->withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002")
                ->withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:\namespace1:key:key-0002"))
            ->withEnhanceScript(null)
            ->withLogSetting((new \Gs2\Enhance\Model\LogSetting())
                ->withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:\namespace1"))
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.UpdateNamespaceRequest;
import io.gs2.enhance.result.UpdateNamespaceResult;

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

try {
    UpdateNamespaceResult result = client.updateNamespace(
        new UpdateNamespaceRequest()
            .withNamespaceName("namespace1")
            .withDescription("description1")
            .withEnableDirectEnhance(false)
            .withTransactionSetting(new io.gs2.enhance.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002")
                .withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002"))
            .withEnhanceScript(null)
            .withLogSetting(new io.gs2.enhance.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"))
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.UpdateNamespaceRequest;
using Gs2.Gs2Enhance.Result.UpdateNamespaceResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.UpdateNamespaceResult> asyncResult = null;
yield return client.UpdateNamespace(
    new Gs2.Gs2Enhance.Request.UpdateNamespaceRequest()
        .WithNamespaceName("namespace1")
        .WithDescription("description1")
        .WithEnableDirectEnhance(false)
        .WithTransactionSetting(new Gs2.Gs2Enhance.Model.TransactionSetting()
            .WithEnableAutoRun(false)
            .WithQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002")
            .WithKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002"))
        .WithEnhanceScript(null)
        .WithLogSetting(new Gs2.Gs2Enhance.Model.LogSetting()
            .WithLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1")),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.updateNamespace(
        new Gs2Enhance.UpdateNamespaceRequest()
            .withNamespaceName("namespace1")
            .withDescription("description1")
            .withEnableDirectEnhance(false)
            .withTransactionSetting(new Gs2Enhance.model.TransactionSetting()
                .withEnableAutoRun(false)
                .withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002")
                .withKeyId("grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002"))
            .withEnhanceScript(null)
            .withLogSetting(new Gs2Enhance.model.LogSetting()
                .withLoggingNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1"))
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.update_namespace(
        enhance.UpdateNamespaceRequest()
            .with_namespace_name(self.hash1)
            .with_description('description1')
            .with_enable_direct_enhance(False)
            .with_transaction_setting(
                enhance.TransactionSetting()
                    .with_enable_auto_run(False)
                    .with_queue_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002')
                    .with_key_id('grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002'))
            .with_enhance_script(None)
            .with_log_setting(
                enhance.LogSetting()
                    .with_logging_namespace_id('grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1'))
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.update_namespace({
    namespaceName='namespace1',
    description='description1',
    enableDirectEnhance=false,
    transactionSetting={
        enableAutoRun=false,
        queueNamespaceId='grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002',
        keyId='grn:gs2:ap-northeast-1:YourOwnerId:key:namespace1:key:key-0002',
    },
    enhanceScript=nil,
    logSetting={
        loggingNamespaceId='grn:gs2:ap-northeast-1:YourOwnerId:log:namespace1',
    },
})

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

result = api_result.result
item = result.item;

deleteNamespace

Delete namespace

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
itemNamespaceDeleted namespace

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DeleteNamespace(
    &enhance.DeleteNamespaceRequest {
        NamespaceName: pointy.String("namespace1"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DeleteNamespaceRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->deleteNamespace(
        (new DeleteNamespaceRequest())
            ->withNamespaceName(self::namespace1)
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DeleteNamespaceRequest;
import io.gs2.enhance.result.DeleteNamespaceResult;

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

try {
    DeleteNamespaceResult result = client.deleteNamespace(
        new DeleteNamespaceRequest()
            .withNamespaceName("namespace1")
    );
    Namespace item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DeleteNamespaceRequest;
using Gs2.Gs2Enhance.Result.DeleteNamespaceResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DeleteNamespaceResult> asyncResult = null;
yield return client.DeleteNamespace(
    new Gs2.Gs2Enhance.Request.DeleteNamespaceRequest()
        .WithNamespaceName("namespace1"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.deleteNamespace(
        new Gs2Enhance.DeleteNamespaceRequest()
            .withNamespaceName("namespace1")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.delete_namespace(
        enhance.DeleteNamespaceRequest()
            .with_namespace_name(self.hash1)
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.delete_namespace({
    namespaceName='namespace1',
})

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

result = api_result.result
item = result.item;

describeRateModels

Get list of enhanced rate models

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
itemsList<RateModel>List of Enhanced Rate Model

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DescribeRateModels(
    &enhance.DescribeRateModelsRequest {
        NamespaceName: pointy.String("namespace1"),
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DescribeRateModelsRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->describeRateModels(
        (new DescribeRateModelsRequest())
            ->withNamespaceName(self::namespace1)
    );
    $items = $result->getItems();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DescribeRateModelsRequest;
import io.gs2.enhance.result.DescribeRateModelsResult;

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

try {
    DescribeRateModelsResult result = client.describeRateModels(
        new DescribeRateModelsRequest()
            .withNamespaceName("namespace1")
    );
    List<RateModel> items = result.getItems();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DescribeRateModelsRequest;
using Gs2.Gs2Enhance.Result.DescribeRateModelsResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DescribeRateModelsResult> asyncResult = null;
yield return client.DescribeRateModels(
    new Gs2.Gs2Enhance.Request.DescribeRateModelsRequest()
        .WithNamespaceName("namespace1"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var items = result.Items;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.describeRateModels(
        new Gs2Enhance.DescribeRateModelsRequest()
            .withNamespaceName("namespace1")
    );
    const items = result.getItems();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.describe_rate_models(
        enhance.DescribeRateModelsRequest()
            .with_namespace_name(self.hash1)
    )
    items = result.items
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.describe_rate_models({
    namespaceName='namespace1',
})

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

result = api_result.result
items = result.items;

getRateModel

Get Enhanced Rate Model

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name

Result

TypeDescription
itemRateModelEnhanced Rate Model

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.GetRateModel(
    &enhance.GetRateModelRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("character-level"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\GetRateModelRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->getRateModel(
        (new GetRateModelRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("character-level")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.GetRateModelRequest;
import io.gs2.enhance.result.GetRateModelResult;

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

try {
    GetRateModelResult result = client.getRateModel(
        new GetRateModelRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    RateModel item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.GetRateModelRequest;
using Gs2.Gs2Enhance.Result.GetRateModelResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.GetRateModelResult> asyncResult = null;
yield return client.GetRateModel(
    new Gs2.Gs2Enhance.Request.GetRateModelRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("character-level"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.getRateModel(
        new Gs2Enhance.GetRateModelRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.get_rate_model(
        enhance.GetRateModelRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('character-level')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.get_rate_model({
    namespaceName='namespace1',
    rateName='character-level',
})

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

result = api_result.result
item = result.item;

describeRateModelMasters

Get list of enhanced rate masters

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
pageTokenstring~ 1024 charsToken specifying the position from which to start acquiring data
limitint301 ~ 1000Number of data acquired

Result

TypeDescription
itemsList<RateModelMaster>List of Enhanced Rate Master
nextPageTokenstringPage token to retrieve the rest of the listing

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DescribeRateModelMasters(
    &enhance.DescribeRateModelMastersRequest {
        NamespaceName: pointy.String("namespace1"),
        PageToken: nil,
        Limit: nil,
    }
)
if err != nil {
    panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageToken
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DescribeRateModelMastersRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->describeRateModelMasters(
        (new DescribeRateModelMastersRequest())
            ->withNamespaceName(self::namespace1)
            ->withPageToken(null)
            ->withLimit(null)
    );
    $items = $result->getItems();
    $nextPageToken = $result->getNextPageToken();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DescribeRateModelMastersRequest;
import io.gs2.enhance.result.DescribeRateModelMastersResult;

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

try {
    DescribeRateModelMastersResult result = client.describeRateModelMasters(
        new DescribeRateModelMastersRequest()
            .withNamespaceName("namespace1")
            .withPageToken(null)
            .withLimit(null)
    );
    List<RateModelMaster> items = result.getItems();
    String nextPageToken = result.getNextPageToken();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DescribeRateModelMastersRequest;
using Gs2.Gs2Enhance.Result.DescribeRateModelMastersResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DescribeRateModelMastersResult> asyncResult = null;
yield return client.DescribeRateModelMasters(
    new Gs2.Gs2Enhance.Request.DescribeRateModelMastersRequest()
        .WithNamespaceName("namespace1")
        .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;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.describeRateModelMasters(
        new Gs2Enhance.DescribeRateModelMastersRequest()
            .withNamespaceName("namespace1")
            .withPageToken(null)
            .withLimit(null)
    );
    const items = result.getItems();
    const nextPageToken = result.getNextPageToken();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.describe_rate_model_masters(
        enhance.DescribeRateModelMastersRequest()
            .with_namespace_name(self.hash1)
            .with_page_token(None)
            .with_limit(None)
    )
    items = result.items
    next_page_token = result.next_page_token
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.describe_rate_model_masters({
    namespaceName='namespace1',
    pageToken=nil,
    limit=nil,
})

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

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

createRateModelMaster

Create a new Enhanced Rate Master

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
namestring~ 128 charsEnhanced Rate Name
descriptionstring~ 1024 charsdescription of Namespace
metadatastring~ 2048 charsmetadata
targetInventoryModelIdstring~ 1024 charsInventory available for enhancement targets
acquireExperienceSuffixstring~ 1024 charsSuffix to be assigned to the property ID that stores the experience value obtained from GS2-Experience
materialInventoryModelIdstring~ 1024 charsInventory available for materials
acquireExperienceHierarchyList<string>JSON hierarchy of metadata storing acquired experience values
experienceModelIdstring~ 1024 charsExperience gained as a result of reinforcement
bonusRatesList<BonusRate>Experience gain bonus

Result

TypeDescription
itemRateModelMasterCreated Enhanced Rate Master

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.CreateRateModelMaster(
    &enhance.CreateRateModelMasterRequest {
        NamespaceName: pointy.String("namespace1"),
        Name: pointy.String("character-level"),
        Description: nil,
        Metadata: pointy.String("CHARACTER_LEVEL"),
        TargetInventoryModelId: pointy.String("grn:inventory:character"),
        AcquireExperienceSuffix: pointy.String(":level"),
        MaterialInventoryModelId: pointy.String("grn:inventory:material"),
        AcquireExperienceHierarchy: []string{
            "experience",
        },
        ExperienceModelId: pointy.String("grn:experience:level"),
        BonusRates: []enhance.BonusRate{
            enhance.BonusRate{
                Rate: pointy.Float32(1.0),
                Weight: pointy.Int32(90),
            },
        enhance.BonusRate{
                Rate: pointy.Float32(1.5),
                Weight: pointy.Int32(9),
            },
        enhance.BonusRate{
                Rate: pointy.Float32(2.0),
                Weight: pointy.Int32(1),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\CreateRateModelMasterRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->createRateModelMaster(
        (new CreateRateModelMasterRequest())
            ->withNamespaceName(self::namespace1)
            ->withName("character-level")
            ->withDescription(null)
            ->withMetadata("CHARACTER_LEVEL")
            ->withTargetInventoryModelId("grn:inventory:character")
            ->withAcquireExperienceSuffix(":level")
            ->withMaterialInventoryModelId("grn:inventory:material")
            ->withAcquireExperienceHierarchy([    "experience",
            ])
            ->withExperienceModelId("grn:experience:level")
            ->withBonusRates([    (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(1.0)
                ->withWeight(90),
            (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(1.5)
                ->withWeight(9),
            (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(2.0)
                ->withWeight(1),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.CreateRateModelMasterRequest;
import io.gs2.enhance.result.CreateRateModelMasterResult;

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

try {
    CreateRateModelMasterResult result = client.createRateModelMaster(
        new CreateRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withName("character-level")
            .withDescription(null)
            .withMetadata("CHARACTER_LEVEL")
            .withTargetInventoryModelId("grn:inventory:character")
            .withAcquireExperienceSuffix(":level")
            .withMaterialInventoryModelId("grn:inventory:material")
            .withAcquireExperienceHierarchy(Arrays.asList(
                "experience"
            ))
            .withExperienceModelId("grn:experience:level")
            .withBonusRates(Arrays.asList(
                new io.gs2.enhance.model.BonusRate()
                    .withRate(1.0f)
                    .withWeight(90),
            new io.gs2.enhance.model.BonusRate()
                    .withRate(1.5f)
                    .withWeight(9),
            new io.gs2.enhance.model.BonusRate()
                    .withRate(2.0f)
                    .withWeight(1)
            ))
    );
    RateModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.CreateRateModelMasterRequest;
using Gs2.Gs2Enhance.Result.CreateRateModelMasterResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.CreateRateModelMasterResult> asyncResult = null;
yield return client.CreateRateModelMaster(
    new Gs2.Gs2Enhance.Request.CreateRateModelMasterRequest()
        .WithNamespaceName("namespace1")
        .WithName("character-level")
        .WithDescription(null)
        .WithMetadata("CHARACTER_LEVEL")
        .WithTargetInventoryModelId("grn:inventory:character")
        .WithAcquireExperienceSuffix(":level")
        .WithMaterialInventoryModelId("grn:inventory:material")
        .WithAcquireExperienceHierarchy(new string[] {
            "experience"
        })
        .WithExperienceModelId("grn:experience:level")
        .WithBonusRates(new Gs2.Gs2Enhance.Model.BonusRate[] {
            new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(1.0f)
                .WithWeight(90),
        new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(1.5f)
                .WithWeight(9),
        new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(2.0f)
                .WithWeight(1)
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.createRateModelMaster(
        new Gs2Enhance.CreateRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withName("character-level")
            .withDescription(null)
            .withMetadata("CHARACTER_LEVEL")
            .withTargetInventoryModelId("grn:inventory:character")
            .withAcquireExperienceSuffix(":level")
            .withMaterialInventoryModelId("grn:inventory:material")
            .withAcquireExperienceHierarchy([
                "experience"
            ])
            .withExperienceModelId("grn:experience:level")
            .withBonusRates([
                new Gs2Enhance.model.BonusRate()
                    .withRate(1.0)
                    .withWeight(90),
            new Gs2Enhance.model.BonusRate()
                    .withRate(1.5)
                    .withWeight(9),
            new Gs2Enhance.model.BonusRate()
                    .withRate(2.0)
                    .withWeight(1)
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.create_rate_model_master(
        enhance.CreateRateModelMasterRequest()
            .with_namespace_name(self.hash1)
            .with_name('character-level')
            .with_description(None)
            .with_metadata('CHARACTER_LEVEL')
            .with_target_inventory_model_id('grn:inventory:character')
            .with_acquire_experience_suffix(':level')
            .with_material_inventory_model_id('grn:inventory:material')
            .with_acquire_experience_hierarchy([    'experience',
            ])
            .with_experience_model_id('grn:experience:level')
            .with_bonus_rates([    enhance.BonusRate()
                .with_rate(1.0)
                .with_weight(90),
            enhance.BonusRate()
                .with_rate(1.5)
                .with_weight(9),
            enhance.BonusRate()
                .with_rate(2.0)
                .with_weight(1),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.create_rate_model_master({
    namespaceName='namespace1',
    name='character-level',
    description=nil,
    metadata='CHARACTER_LEVEL',
    targetInventoryModelId='grn:inventory:character',
    acquireExperienceSuffix=':level',
    materialInventoryModelId='grn:inventory:material',
    acquireExperienceHierarchy={
        'experience'
    },
    experienceModelId='grn:experience:level',
    bonusRates={
        {
            rate=1.0,
            weight=90,
        },
    {
            rate=1.5,
            weight=9,
        },
    {
            rate=2.0,
            weight=1,
        }
    },
})

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

result = api_result.result
item = result.item;

getRateModelMaster

Get Enhanced Rate Master

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name

Result

TypeDescription
itemRateModelMasterEnhanced Rate Master

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.GetRateModelMaster(
    &enhance.GetRateModelMasterRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("character-level"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\GetRateModelMasterRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->getRateModelMaster(
        (new GetRateModelMasterRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("character-level")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.GetRateModelMasterRequest;
import io.gs2.enhance.result.GetRateModelMasterResult;

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

try {
    GetRateModelMasterResult result = client.getRateModelMaster(
        new GetRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    RateModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.GetRateModelMasterRequest;
using Gs2.Gs2Enhance.Result.GetRateModelMasterResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.GetRateModelMasterResult> asyncResult = null;
yield return client.GetRateModelMaster(
    new Gs2.Gs2Enhance.Request.GetRateModelMasterRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("character-level"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.getRateModelMaster(
        new Gs2Enhance.GetRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.get_rate_model_master(
        enhance.GetRateModelMasterRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('character-level')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.get_rate_model_master({
    namespaceName='namespace1',
    rateName='character-level',
})

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

result = api_result.result
item = result.item;

updateRateModelMaster

Update Enhanced Rate Master

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name
descriptionstring~ 1024 charsdescription of Namespace
metadatastring~ 2048 charsmetadata
targetInventoryModelIdstring~ 1024 charsInventory available for enhancement targets
acquireExperienceSuffixstring~ 1024 charsSuffix to be assigned to the property ID that stores the experience value obtained from GS2-Experience
materialInventoryModelIdstring~ 1024 charsInventory available for materials
acquireExperienceHierarchyList<string>JSON hierarchy of metadata storing acquired experience values
experienceModelIdstring~ 1024 charsExperience gained as a result of reinforcement
bonusRatesList<BonusRate>Experience gain bonus

Result

TypeDescription
itemRateModelMasterUpdated Enhanced Rate Master

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.UpdateRateModelMaster(
    &enhance.UpdateRateModelMasterRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("character-level"),
        Description: nil,
        Metadata: pointy.String("CHARACTER_LEVEL2"),
        TargetInventoryModelId: pointy.String("grn:inventory:character2"),
        AcquireExperienceSuffix: pointy.String(":level2"),
        MaterialInventoryModelId: pointy.String("grn:inventory:material2"),
        AcquireExperienceHierarchy: []string{
            "experience2",
        },
        ExperienceModelId: pointy.String("grn:experience:level2"),
        BonusRates: []enhance.BonusRate{
            enhance.BonusRate{
                Rate: pointy.Float32(1.05),
                Weight: pointy.Int32(905),
            },
        enhance.BonusRate{
                Rate: pointy.Float32(1.55),
                Weight: pointy.Int32(95),
            },
        enhance.BonusRate{
                Rate: pointy.Float32(2.05),
                Weight: pointy.Int32(15),
            },
        },
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\UpdateRateModelMasterRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->updateRateModelMaster(
        (new UpdateRateModelMasterRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("character-level")
            ->withDescription(null)
            ->withMetadata("CHARACTER_LEVEL2")
            ->withTargetInventoryModelId("grn:inventory:character2")
            ->withAcquireExperienceSuffix(":level2")
            ->withMaterialInventoryModelId("grn:inventory:material2")
            ->withAcquireExperienceHierarchy([    "experience2",
            ])
            ->withExperienceModelId("grn:experience:level2")
            ->withBonusRates([    (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(1.05)
                ->withWeight(905),
            (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(1.55)
                ->withWeight(95),
            (new \Gs2\Enhance\Model\BonusRate())
                ->withRate(2.05)
                ->withWeight(15),
            ])
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.UpdateRateModelMasterRequest;
import io.gs2.enhance.result.UpdateRateModelMasterResult;

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

try {
    UpdateRateModelMasterResult result = client.updateRateModelMaster(
        new UpdateRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
            .withDescription(null)
            .withMetadata("CHARACTER_LEVEL2")
            .withTargetInventoryModelId("grn:inventory:character2")
            .withAcquireExperienceSuffix(":level2")
            .withMaterialInventoryModelId("grn:inventory:material2")
            .withAcquireExperienceHierarchy(Arrays.asList(
                "experience2"
            ))
            .withExperienceModelId("grn:experience:level2")
            .withBonusRates(Arrays.asList(
                new io.gs2.enhance.model.BonusRate()
                    .withRate(1.05f)
                    .withWeight(905),
            new io.gs2.enhance.model.BonusRate()
                    .withRate(1.55f)
                    .withWeight(95),
            new io.gs2.enhance.model.BonusRate()
                    .withRate(2.05f)
                    .withWeight(15)
            ))
    );
    RateModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.UpdateRateModelMasterRequest;
using Gs2.Gs2Enhance.Result.UpdateRateModelMasterResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.UpdateRateModelMasterResult> asyncResult = null;
yield return client.UpdateRateModelMaster(
    new Gs2.Gs2Enhance.Request.UpdateRateModelMasterRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("character-level")
        .WithDescription(null)
        .WithMetadata("CHARACTER_LEVEL2")
        .WithTargetInventoryModelId("grn:inventory:character2")
        .WithAcquireExperienceSuffix(":level2")
        .WithMaterialInventoryModelId("grn:inventory:material2")
        .WithAcquireExperienceHierarchy(new string[] {
            "experience2"
        })
        .WithExperienceModelId("grn:experience:level2")
        .WithBonusRates(new Gs2.Gs2Enhance.Model.BonusRate[] {
            new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(1.05f)
                .WithWeight(905),
        new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(1.55f)
                .WithWeight(95),
        new Gs2.Gs2Enhance.Model.BonusRate()
                .WithRate(2.05f)
                .WithWeight(15)
        }),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.updateRateModelMaster(
        new Gs2Enhance.UpdateRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
            .withDescription(null)
            .withMetadata("CHARACTER_LEVEL2")
            .withTargetInventoryModelId("grn:inventory:character2")
            .withAcquireExperienceSuffix(":level2")
            .withMaterialInventoryModelId("grn:inventory:material2")
            .withAcquireExperienceHierarchy([
                "experience2"
            ])
            .withExperienceModelId("grn:experience:level2")
            .withBonusRates([
                new Gs2Enhance.model.BonusRate()
                    .withRate(1.05)
                    .withWeight(905),
            new Gs2Enhance.model.BonusRate()
                    .withRate(1.55)
                    .withWeight(95),
            new Gs2Enhance.model.BonusRate()
                    .withRate(2.05)
                    .withWeight(15)
            ])
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.update_rate_model_master(
        enhance.UpdateRateModelMasterRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('character-level')
            .with_description(None)
            .with_metadata('CHARACTER_LEVEL2')
            .with_target_inventory_model_id('grn:inventory:character2')
            .with_acquire_experience_suffix(':level2')
            .with_material_inventory_model_id('grn:inventory:material2')
            .with_acquire_experience_hierarchy([    'experience2',
            ])
            .with_experience_model_id('grn:experience:level2')
            .with_bonus_rates([    enhance.BonusRate()
                .with_rate(1.05)
                .with_weight(905),
            enhance.BonusRate()
                .with_rate(1.55)
                .with_weight(95),
            enhance.BonusRate()
                .with_rate(2.05)
                .with_weight(15),
            ])
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.update_rate_model_master({
    namespaceName='namespace1',
    rateName='character-level',
    description=nil,
    metadata='CHARACTER_LEVEL2',
    targetInventoryModelId='grn:inventory:character2',
    acquireExperienceSuffix=':level2',
    materialInventoryModelId='grn:inventory:material2',
    acquireExperienceHierarchy={
        'experience2'
    },
    experienceModelId='grn:experience:level2',
    bonusRates={
        {
            rate=1.05,
            weight=905,
        },
    {
            rate=1.55,
            weight=95,
        },
    {
            rate=2.05,
            weight=15,
        }
    },
})

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

result = api_result.result
item = result.item;

deleteRateModelMaster

Delete Enhanced Rate Master

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name

Result

TypeDescription
itemRateModelMasterDeleted Enhanced Rate Master

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DeleteRateModelMaster(
    &enhance.DeleteRateModelMasterRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("character-level"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DeleteRateModelMasterRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->deleteRateModelMaster(
        (new DeleteRateModelMasterRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("character-level")
    );
    $item = $result->getItem();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DeleteRateModelMasterRequest;
import io.gs2.enhance.result.DeleteRateModelMasterResult;

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

try {
    DeleteRateModelMasterResult result = client.deleteRateModelMaster(
        new DeleteRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    RateModelMaster item = result.getItem();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DeleteRateModelMasterRequest;
using Gs2.Gs2Enhance.Result.DeleteRateModelMasterResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DeleteRateModelMasterResult> asyncResult = null;
yield return client.DeleteRateModelMaster(
    new Gs2.Gs2Enhance.Request.DeleteRateModelMasterRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("character-level"),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.deleteRateModelMaster(
        new Gs2Enhance.DeleteRateModelMasterRequest()
            .withNamespaceName("namespace1")
            .withRateName("character-level")
    );
    const item = result.getItem();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.delete_rate_model_master(
        enhance.DeleteRateModelMasterRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('character-level')
    )
    item = result.item
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.delete_rate_model_master({
    namespaceName='namespace1',
    rateName='character-level',
})

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

result = api_result.result
item = result.item;

directEnhance

Perform enhancements

This API has security challenges instead of optimizing execution speed.

While it responds to stamp sheets as well as bonus rates to express “success” and “great success” This allows for sorting by only issuing stamp sheets but not executing them. To prevent selection, the Start / End API in Progress can be used. Consumes reinforcement materials and determines the bonus rate at the timing of the call to Start, and The stamp sheet can be made to issue a stamp sheet to gain experience at the time End is called.

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name
accessTokenstring~ 128 charsUser Id
targetItemSetIdstring~ 1024 charsQuantity of items held per expiration date GRN
materialsList<Material>List of Material
configList<Config>[]Set values to be applied to stamp sheet variables

Result

TypeDescription
itemRateModelEnhanced Rate Model
transactionIdstringTransaction ID of the stamp sheet issued
stampSheetstringStamp sheet used to perform the enhancement process
stampSheetEncryptionKeyIdstringCryptographic key GRN used for stamp sheet signature calculations
autoRunStampSheetbool?Is stamp sheet auto-execution enabled?
acquireExperiencelongAmount of experience gained
bonusRatefloatExperience bonus multiplier (1.0 = no bonus)

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DirectEnhance(
    &enhance.DirectEnhanceRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("rate-0001"),
        AccessToken: pointy.String("$access_token_0001"),
        TargetItemSetId: pointy.String("item-set-0001"),
        Materials: []enhance.Material{
            {'materialItemSetId': 'material-0001', 'count': 1},
        },
        Config: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
acquireExperience := result.AcquireExperience
bonusRate := result.BonusRate
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DirectEnhanceRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->directEnhance(
        (new DirectEnhanceRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("rate-0001")
            ->withAccessToken(self::$accessToken0001)
            ->withTargetItemSetId("item-set-0001")
            ->withMaterials([    {'materialItemSetId': 'material-0001', 'count': 1},
            ])
            ->withConfig(null)
    );
    $item = $result->getItem();
    $transactionId = $result->getTransactionId();
    $stampSheet = $result->getStampSheet();
    $stampSheetEncryptionKeyId = $result->getStampSheetEncryptionKeyId();
    $autoRunStampSheet = $result->getAutoRunStampSheet();
    $acquireExperience = $result->getAcquireExperience();
    $bonusRate = $result->getBonusRate();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DirectEnhanceRequest;
import io.gs2.enhance.result.DirectEnhanceResult;

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

try {
    DirectEnhanceResult result = client.directEnhance(
        new DirectEnhanceRequest()
            .withNamespaceName("namespace1")
            .withRateName("rate-0001")
            .withAccessToken("$access_token_0001")
            .withTargetItemSetId("item-set-0001")
            .withMaterials(Arrays.asList(
                {'materialItemSetId': 'material-0001', 'count': 1}
            ))
            .withConfig(null)
    );
    RateModel item = result.getItem();
    String transactionId = result.getTransactionId();
    String stampSheet = result.getStampSheet();
    String stampSheetEncryptionKeyId = result.getStampSheetEncryptionKeyId();
    boolean autoRunStampSheet = result.getAutoRunStampSheet();
    long acquireExperience = result.getAcquireExperience();
    float bonusRate = result.getBonusRate();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DirectEnhanceRequest;
using Gs2.Gs2Enhance.Result.DirectEnhanceResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DirectEnhanceResult> asyncResult = null;
yield return client.DirectEnhance(
    new Gs2.Gs2Enhance.Request.DirectEnhanceRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("rate-0001")
        .WithAccessToken("$access_token_0001")
        .WithTargetItemSetId("item-set-0001")
        .WithMaterials(new Gs2.Gs2Enhance.Model.Material[] {
            {'materialItemSetId': 'material-0001', 'count': 1}
        })
        .WithConfig(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var transactionId = result.TransactionId;
var stampSheet = result.StampSheet;
var stampSheetEncryptionKeyId = result.StampSheetEncryptionKeyId;
var autoRunStampSheet = result.AutoRunStampSheet;
var acquireExperience = result.AcquireExperience;
var bonusRate = result.BonusRate;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.directEnhance(
        new Gs2Enhance.DirectEnhanceRequest()
            .withNamespaceName("namespace1")
            .withRateName("rate-0001")
            .withAccessToken("$access_token_0001")
            .withTargetItemSetId("item-set-0001")
            .withMaterials([
                {'materialItemSetId': 'material-0001', 'count': 1}
            ])
            .withConfig(null)
    );
    const item = result.getItem();
    const transactionId = result.getTransactionId();
    const stampSheet = result.getStampSheet();
    const stampSheetEncryptionKeyId = result.getStampSheetEncryptionKeyId();
    const autoRunStampSheet = result.getAutoRunStampSheet();
    const acquireExperience = result.getAcquireExperience();
    const bonusRate = result.getBonusRate();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.direct_enhance(
        enhance.DirectEnhanceRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('rate-0001')
            .with_access_token(self.access_token_0001)
            .with_target_item_set_id('item-set-0001')
            .with_materials([    {'materialItemSetId': 'material-0001', 'count': 1},
            ])
            .with_config(None)
    )
    item = result.item
    transaction_id = result.transaction_id
    stamp_sheet = result.stamp_sheet
    stamp_sheet_encryption_key_id = result.stamp_sheet_encryption_key_id
    auto_run_stamp_sheet = result.auto_run_stamp_sheet
    acquire_experience = result.acquire_experience
    bonus_rate = result.bonus_rate
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.direct_enhance({
    namespaceName='namespace1',
    rateName='rate-0001',
    accessToken='$access_token_0001',
    targetItemSetId='item-set-0001',
    materials={
        {'materialItemSetId': 'material-0001', 'count': 1}
    },
    config=nil,
})

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

result = api_result.result
item = result.item;
transactionId = result.transactionId;
stampSheet = result.stampSheet;
stampSheetEncryptionKeyId = result.stampSheetEncryptionKeyId;
autoRunStampSheet = result.autoRunStampSheet;
acquireExperience = result.acquireExperience;
bonusRate = result.bonusRate;

directEnhanceByUserId

Perform enhancement by specifying user ID

This API has security challenges instead of optimizing execution speed.

While it responds to stamp sheets as well as bonus rates to express “success” and “great success” This allows for sorting by only issuing stamp sheets but not executing them. To prevent selection, the Start / End API in Progress can be used. Consumes reinforcement materials and determines the bonus rate at the timing of the call to Start, and The stamp sheet can be made to issue a stamp sheet to gain experience at the time End is called.

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
rateNamestring~ 128 charsEnhanced Rate Name
userIdstring~ 128 charsUser Id
targetItemSetIdstring~ 1024 charsQuantity of items held per expiration date GRN
materialsList<Material>List of Material
configList<Config>[]Set values to be applied to stamp sheet variables

Result

TypeDescription
itemRateModelEnhanced Rate Model
transactionIdstringTransaction ID of the stamp sheet issued
stampSheetstringStamp sheet used to perform the enhancement process
stampSheetEncryptionKeyIdstringCryptographic key GRN used for stamp sheet signature calculations
autoRunStampSheetbool?Is stamp sheet auto-execution enabled?
acquireExperiencelongAmount of experience gained
bonusRatefloatExperience bonus multiplier (1.0 = no bonus)

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DirectEnhanceByUserId(
    &enhance.DirectEnhanceByUserIdRequest {
        NamespaceName: pointy.String("namespace1"),
        RateName: pointy.String("rate-0001"),
        UserId: pointy.String("user-0001"),
        TargetItemSetId: pointy.String("item-set-0001"),
        Materials: []enhance.Material{
            {'materialItemSetId': 'material-0001', 'count': 1},
        },
        Config: nil,
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
acquireExperience := result.AcquireExperience
bonusRate := result.BonusRate
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DirectEnhanceByUserIdRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->directEnhanceByUserId(
        (new DirectEnhanceByUserIdRequest())
            ->withNamespaceName(self::namespace1)
            ->withRateName("rate-0001")
            ->withUserId("user-0001")
            ->withTargetItemSetId("item-set-0001")
            ->withMaterials([    {'materialItemSetId': 'material-0001', 'count': 1},
            ])
            ->withConfig(null)
    );
    $item = $result->getItem();
    $transactionId = $result->getTransactionId();
    $stampSheet = $result->getStampSheet();
    $stampSheetEncryptionKeyId = $result->getStampSheetEncryptionKeyId();
    $autoRunStampSheet = $result->getAutoRunStampSheet();
    $acquireExperience = $result->getAcquireExperience();
    $bonusRate = $result->getBonusRate();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DirectEnhanceByUserIdRequest;
import io.gs2.enhance.result.DirectEnhanceByUserIdResult;

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

try {
    DirectEnhanceByUserIdResult result = client.directEnhanceByUserId(
        new DirectEnhanceByUserIdRequest()
            .withNamespaceName("namespace1")
            .withRateName("rate-0001")
            .withUserId("user-0001")
            .withTargetItemSetId("item-set-0001")
            .withMaterials(Arrays.asList(
                {'materialItemSetId': 'material-0001', 'count': 1}
            ))
            .withConfig(null)
    );
    RateModel item = result.getItem();
    String transactionId = result.getTransactionId();
    String stampSheet = result.getStampSheet();
    String stampSheetEncryptionKeyId = result.getStampSheetEncryptionKeyId();
    boolean autoRunStampSheet = result.getAutoRunStampSheet();
    long acquireExperience = result.getAcquireExperience();
    float bonusRate = result.getBonusRate();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DirectEnhanceByUserIdRequest;
using Gs2.Gs2Enhance.Result.DirectEnhanceByUserIdResult;

var session = new Gs2RestSession(
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    ),
    Region.ApNortheast1
);
yield return session.Open();
var client = new Gs2EnhanceRestClient(session);

AsyncResult<Gs2.Gs2Enhance.Result.DirectEnhanceByUserIdResult> asyncResult = null;
yield return client.DirectEnhanceByUserId(
    new Gs2.Gs2Enhance.Request.DirectEnhanceByUserIdRequest()
        .WithNamespaceName("namespace1")
        .WithRateName("rate-0001")
        .WithUserId("user-0001")
        .WithTargetItemSetId("item-set-0001")
        .WithMaterials(new Gs2.Gs2Enhance.Model.Material[] {
            {'materialItemSetId': 'material-0001', 'count': 1}
        })
        .WithConfig(null),
    r => asyncResult = r
);
if (asyncResult.Error != null) {
    throw asyncResult.Error;
}
var result = asyncResult.Result;
var item = result.Item;
var transactionId = result.TransactionId;
var stampSheet = result.StampSheet;
var stampSheetEncryptionKeyId = result.StampSheetEncryptionKeyId;
var autoRunStampSheet = result.AutoRunStampSheet;
var acquireExperience = result.AcquireExperience;
var bonusRate = result.BonusRate;
import Gs2Core from '@/gs2/core';
import * as Gs2Enhance from '@/gs2/enhance';

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

try {
    const result = await client.directEnhanceByUserId(
        new Gs2Enhance.DirectEnhanceByUserIdRequest()
            .withNamespaceName("namespace1")
            .withRateName("rate-0001")
            .withUserId("user-0001")
            .withTargetItemSetId("item-set-0001")
            .withMaterials([
                {'materialItemSetId': 'material-0001', 'count': 1}
            ])
            .withConfig(null)
    );
    const item = result.getItem();
    const transactionId = result.getTransactionId();
    const stampSheet = result.getStampSheet();
    const stampSheetEncryptionKeyId = result.getStampSheetEncryptionKeyId();
    const autoRunStampSheet = result.getAutoRunStampSheet();
    const acquireExperience = result.getAcquireExperience();
    const bonusRate = result.getBonusRate();
} catch (e) {
    process.exit(1);
}
from gs2 import core
from gs2 import enhance

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

try:
    result = client.direct_enhance_by_user_id(
        enhance.DirectEnhanceByUserIdRequest()
            .with_namespace_name(self.hash1)
            .with_rate_name('rate-0001')
            .with_user_id('user-0001')
            .with_target_item_set_id('item-set-0001')
            .with_materials([    {'materialItemSetId': 'material-0001', 'count': 1},
            ])
            .with_config(None)
    )
    item = result.item
    transaction_id = result.transaction_id
    stamp_sheet = result.stamp_sheet
    stamp_sheet_encryption_key_id = result.stamp_sheet_encryption_key_id
    auto_run_stamp_sheet = result.auto_run_stamp_sheet
    acquire_experience = result.acquire_experience
    bonus_rate = result.bonus_rate
except core.Gs2Exception as e:
    exit(1)
client = gs2('enhance')

api_result = client.direct_enhance_by_user_id({
    namespaceName='namespace1',
    rateName='rate-0001',
    userId='user-0001',
    targetItemSetId='item-set-0001',
    materials={
        {'materialItemSetId': 'material-0001', 'count': 1}
    },
    config=nil,
})

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

result = api_result.result
item = result.item;
transactionId = result.transactionId;
stampSheet = result.stampSheet;
stampSheetEncryptionKeyId = result.stampSheetEncryptionKeyId;
autoRunStampSheet = result.autoRunStampSheet;
acquireExperience = result.acquireExperience;
bonusRate = result.bonusRate;

directEnhanceByStampSheet

Perform enhancements with stamp sheets

Request

TypeRequireDefaultLimitationDescription
stampSheetstring~ 5242880 charsStamp sheet
keyIdstring~ 1024 charsencryption key GRN

Result

TypeDescription
itemRateModelEnhanced Rate Model
transactionIdstringTransaction ID of the stamp sheet issued
stampSheetstringStamp sheet used to perform the enhancement process
stampSheetEncryptionKeyIdstringCryptographic key GRN used for stamp sheet signature calculations
autoRunStampSheetbool?Is stamp sheet auto-execution enabled?
acquireExperiencelongAmount of experience gained
bonusRatefloatExperience bonus multiplier (1.0 = no bonus)

Implementation Example

import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/enhance"
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 := enhance.Gs2EnhanceRestClient{
    Session: &session,
}
result, err := client.DirectEnhanceByStampSheet(
    &enhance.DirectEnhanceByStampSheetRequest {
        StampSheet: pointy.String("$stampSheet"),
        KeyId: pointy.String("$key1.keyId"),
    }
)
if err != nil {
    panic("error occurred")
}
item := result.Item
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
acquireExperience := result.AcquireExperience
bonusRate := result.BonusRate
use Gs2\Core\Model\BasicGs2Credential;
use Gs2\Core\Model\Region;
use Gs2\Core\Net\Gs2RestSession;
use Gs2\Core\Exception\Gs2Exception;
use Gs2\Enhance\Gs2EnhanceRestClient;
use Gs2\Enhance\Request\DirectEnhanceByStampSheetRequest;

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

$session->open();

$client = new Gs2AccountRestClient(
    $session
);

try {
    $result = $client->directEnhanceByStampSheet(
        (new DirectEnhanceByStampSheetRequest())
            ->withStampSheet(self::$stampSheet)
            ->withKeyId(self::$key1.keyId)
    );
    $item = $result->getItem();
    $transactionId = $result->getTransactionId();
    $stampSheet = $result->getStampSheet();
    $stampSheetEncryptionKeyId = $result->getStampSheetEncryptionKeyId();
    $autoRunStampSheet = $result->getAutoRunStampSheet();
    $acquireExperience = $result->getAcquireExperience();
    $bonusRate = $result->getBonusRate();
} catch (Gs2Exception $e) {
    exit("error occurred")
}
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.enhance.rest.Gs2EnhanceRestClient;
import io.gs2.enhance.request.DirectEnhanceByStampSheetRequest;
import io.gs2.enhance.result.DirectEnhanceByStampSheetResult;

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

try {
    DirectEnhanceByStampSheetResult result = client.directEnhanceByStampSheet(
        new DirectEnhanceByStampSheetRequest()
            .withStampSheet("$stampSheet")
            .withKeyId("$key1.keyId")
    );
    RateModel item = result.getItem();
    String transactionId = result.getTransactionId();
    String stampSheet = result.getStampSheet();
    String stampSheetEncryptionKeyId = result.getStampSheetEncryptionKeyId();
    boolean autoRunStampSheet = result.getAutoRunStampSheet();
    long acquireExperience = result.getAcquireExperience();
    float bonusRate = result.getBonusRate();
} catch (Gs2Exception e) {
    System.exit(1);
}
using Gs2.Core.Model.Region;
using Gs2.Core.Model.BasicGs2Credential;
using Gs2.Core.Net.Gs2RestSession;
using Gs2.Core.Exception.Gs2Exception;
using Gs2.Core.AsyncResult;
using Gs2.Gs2Enhance.Gs2EnhanceRestClient;
using Gs2.Gs2Enhance.Request.DirectEnhanceByStampSheetRequest;
using Gs2.Gs2Enhance.Result.DirectEnhanceByStampSheetResult