diff --git a/MariesWonderland.sln b/MariesWonderland.sln
new file mode 100644
index 0000000..90d24b4
--- /dev/null
+++ b/MariesWonderland.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34511.84
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MariesWonderland", "src/MariesWonderland.csproj", "{CA577316-1B99-4730-B5BC-52B3B914F4A1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CA577316-1B99-4730-B5BC-52B3B914F4A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA577316-1B99-4730-B5BC-52B3B914F4A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA577316-1B99-4730-B5BC-52B3B914F4A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA577316-1B99-4730-B5BC-52B3B914F4A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {DFE0158F-EDF3-483A-B024-896B0BB7D843}
+ EndGlobalSection
+EndGlobal
diff --git a/src/MariesWonderland.csproj b/src/MariesWonderland.csproj
new file mode 100644
index 0000000..03afbe8
--- /dev/null
+++ b/src/MariesWonderland.csproj
@@ -0,0 +1,17 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Program.cs b/src/Program.cs
new file mode 100644
index 0000000..195058c
--- /dev/null
+++ b/src/Program.cs
@@ -0,0 +1,42 @@
+using MariesWonderland.Services;
+using Microsoft.AspNetCore.Server.Kestrel.Core;
+
+namespace MariesWonderland;
+
+public static class Program
+{
+ public static void Main(string[] args)
+ {
+ var builder = WebApplication.CreateBuilder(args);
+
+ // Enforce HTTP/2
+ builder.WebHost.ConfigureKestrel(options => options.ListenLocalhost(7777, x => x.Protocols = HttpProtocols.Http2));
+ builder.WebHost.ConfigureKestrel(options => options.ListenLocalhost(7776, x =>
+ {
+ x.UseHttps();
+ x.Protocols = HttpProtocols.Http2;
+ }));
+
+ // Add GRPC
+ builder.Services.AddGrpc();
+
+ var app = builder.Build();
+
+ // Add GRPC services
+ app.MapGrpcService();
+ app.MapGrpcService();
+ app.MapGrpcService();
+ app.MapGrpcService();
+ app.MapGrpcService();
+
+ // Add HTTP middleware
+ app.MapGet("/", () => "Marie's Wonderland is open for business :marie:");
+ app.MapGet("/{**catchAll}", (string catchAll) => $"You requested: {catchAll}");
+ app.MapPost("/{**catchAll}", (string catchAll) => $"You requested: {catchAll}");
+ app.MapPut("/{**catchAll}", (string catchAll) => $"You requested: {catchAll}");
+ app.MapDelete("/{**catchAll}", (string catchAll) => $"You requested: {catchAll}");
+ app.MapPatch("/{**catchAll}", (string catchAll) => $"You requested: {catchAll}");
+
+ app.Run();
+ }
+}
\ No newline at end of file
diff --git a/src/Properties/launchSettings.json b/src/Properties/launchSettings.json
new file mode 100644
index 0000000..3a22cd7
--- /dev/null
+++ b/src/Properties/launchSettings.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "https": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "applicationUrl": "https://localhost:7776;http://localhost:7777",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/src/Services/ConfigService.cs b/src/Services/ConfigService.cs
new file mode 100644
index 0000000..4c41326
--- /dev/null
+++ b/src/Services/ConfigService.cs
@@ -0,0 +1,13 @@
+using Art.Framework.ApiNetwork.Grpc.Api.Config;
+using Google.Protobuf.WellKnownTypes;
+using Grpc.Core;
+
+namespace MariesWonderland.Services;
+
+public class ConfigService : Art.Framework.ApiNetwork.Grpc.Api.Config.ConfigService.ConfigServiceBase
+{
+ public override Task GetReviewServerConfig(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetReviewServerConfigResponse());
+ }
+}
diff --git a/src/Services/DataService.cs b/src/Services/DataService.cs
new file mode 100644
index 0000000..3c34306
--- /dev/null
+++ b/src/Services/DataService.cs
@@ -0,0 +1,18 @@
+using Art.Framework.ApiNetwork.Grpc.Api.Data;
+using Google.Protobuf.WellKnownTypes;
+using Grpc.Core;
+
+namespace MariesWonderland.Services;
+
+public class DataService : Art.Framework.ApiNetwork.Grpc.Api.Data.DataService.DataServiceBase
+{
+ public override Task GetLatestMasterDataVersion(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new MasterDataGetLatestVersionResponse());
+ }
+
+ public override Task GetUserData(UserDataGetRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new UserDataGetResponse());
+ }
+}
diff --git a/src/Services/GameplayService.cs b/src/Services/GameplayService.cs
new file mode 100644
index 0000000..2d96197
--- /dev/null
+++ b/src/Services/GameplayService.cs
@@ -0,0 +1,12 @@
+using Art.Framework.ApiNetwork.Grpc.Api.GamePlay;
+using Grpc.Core;
+
+namespace MariesWonderland.Services;
+
+public class GameplayService : Art.Framework.ApiNetwork.Grpc.Api.GamePlay.GameplayService.GameplayServiceBase
+{
+ public override Task CheckBeforeGamePlay(CheckBeforeGamePlayRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new CheckBeforeGamePlayResponse());
+ }
+}
diff --git a/src/Services/GreeterService.cs b/src/Services/GreeterService.cs
new file mode 100644
index 0000000..fd255af
--- /dev/null
+++ b/src/Services/GreeterService.cs
@@ -0,0 +1,17 @@
+using Grpc.Core;
+
+namespace MariesWonderland.Services;
+
+///
+/// Dummy service for testing
+///
+public class GreeterService : Greeter.GreeterBase
+{
+ public override Task SayHello(HelloRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new HelloReply
+ {
+ Message = "Hello " + request.Name
+ });
+ }
+}
diff --git a/src/Services/UserService.cs b/src/Services/UserService.cs
new file mode 100644
index 0000000..ed70ca8
--- /dev/null
+++ b/src/Services/UserService.cs
@@ -0,0 +1,130 @@
+using Art.Framework.ApiNetwork.Grpc.Api.User;
+using Google.Protobuf.WellKnownTypes;
+using Grpc.Core;
+
+namespace MariesWonderland.Services;
+
+public class UserService : Art.Framework.ApiNetwork.Grpc.Api.User.UserService.UserServiceBase
+{
+ public override Task GetAndroidArgs(GetAndroidArgsRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetAndroidArgsResponse
+ {
+ ApiKey = "1234567890",
+ Nonce = "Mama"
+ });
+ }
+
+ public override Task Auth(AuthUserRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new AuthUserResponse
+ {
+ ExpireDatetime = Timestamp.FromDateTime(DateTime.UtcNow.AddDays(30)),
+ UserId = 1234567890123450000,
+ SessionKey = "1234567890",
+ Signature = "V2UnbGxQbGF5QWdhaW5Tb21lZGF5TXJNb25zdGVyIQ==" // Possibly base64 encoded
+ });
+ }
+
+ public override Task CheckTransferSetting(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new CheckTransferSettingResponse());
+ }
+
+ public override Task GameStart(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new GameStartResponse());
+ }
+
+ public override Task GetBackupToken(GetBackupTokenRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetBackupTokenResponse
+ {
+ BackupToken = "1234567890"
+ });
+ }
+
+ public override Task GetBirthYearMonth(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetBirthYearMonthResponse());
+ }
+
+ public override Task GetChargeMoney(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetChargeMoneyResponse());
+ }
+
+ public override Task GetUserGamePlayNote(GetUserGamePlayNoteRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetUserGamePlayNoteResponse());
+ }
+
+ public override Task GetUserProfile(GetUserProfileRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new GetUserProfileResponse());
+ }
+
+ public override Task RegisterUser(RegisterUserRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new RegisterUserResponse());
+ }
+
+ public override Task SetAppleAccount(SetAppleAccountRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetAppleAccountResponse());
+ }
+
+ public override Task SetBirthYearMonth(SetBirthYearMonthRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetBirthYearMonthResponse());
+ }
+
+ public override Task SetFacebookAccount(SetFacebookAccountRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetFacebookAccountResponse());
+ }
+
+ public override Task SetUserFavoriteCostumeId(SetUserFavoriteCostumeIdRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetUserFavoriteCostumeIdResponse());
+ }
+
+ public override Task SetUserMessage(SetUserMessageRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetUserMessageResponse());
+ }
+
+ public override Task SetUserName(SetUserNameRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetUserNameResponse());
+ }
+
+ public override Task SetUserSetting(SetUserSettingRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new SetUserSettingResponse());
+ }
+
+ public override Task TransferUser(TransferUserRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new TransferUserResponse
+ {
+ UserId = 1234567890123450000,
+ Signature = "V2UnbGxQbGF5QWdhaW5Tb21lZGF5TXJNb25zdGVyIQ==" // Possibly base64 encoded
+ });
+ }
+
+ public override Task TransferUserByApple(TransferUserByAppleRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new TransferUserByAppleResponse());
+ }
+
+ public override Task TransferUserByFacebook(TransferUserByFacebookRequest request, ServerCallContext context)
+ {
+ return Task.FromResult(new TransferUserByFacebookResponse());
+ }
+
+ public override Task UnsetFacebookAccount(Empty request, ServerCallContext context)
+ {
+ return Task.FromResult(new UnsetFacebookAccountResponse());
+ }
+}
diff --git a/src/appsettings.Development.json b/src/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/src/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/src/appsettings.json b/src/appsettings.json
new file mode 100644
index 0000000..e939636
--- /dev/null
+++ b/src/appsettings.json
@@ -0,0 +1,16 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning",
+ "Microsoft.AspNetCore.Hosting": "Information",
+ "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
+ }
+ },
+ "AllowedHosts": "*",
+ "Kestrel": {
+ "EndpointDefaults": {
+ "Protocols": "Http2"
+ }
+ }
+}
diff --git a/src/proto/banner.proto b/src/proto/banner.proto
new file mode 100644
index 0000000..a338d60
--- /dev/null
+++ b/src/proto/banner.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Banner";
+
+import "proto/mission.proto";
+import "proto/data.proto";
+
+package apb.api.banner;
+
+service BannerService {
+ rpc GetMamaBanner (GetMamaBannerRequest) returns (GetMamaBannerResponse);
+}
+
+message GetMamaBannerRequest {
+ apb.api.mission.CageMeasurableValues cageMeasurableValues = 50;
+}
+
+message GetMamaBannerResponse {
+ repeated GachaBanner termLimitedGacha = 2;
+ GachaBanner latestChapterGacha = 3;
+ bool isExistUnreadPop = 4;
+ map diffUserData = 99;
+}
+
+message GachaBanner {
+ int32 gachaLabelType = 1;
+ string gachaAssetName = 2;
+ int32 gachaId = 3;
+}
\ No newline at end of file
diff --git a/src/proto/battle.proto b/src/proto/battle.proto
new file mode 100644
index 0000000..cf86a30
--- /dev/null
+++ b/src/proto/battle.proto
@@ -0,0 +1,138 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Battle";
+
+import "proto/data.proto";
+
+package apb.api.battle;
+
+service BattleService {
+ rpc StartWave (StartWaveRequest) returns (StartWaveResponse);
+ rpc FinishWave (FinishWaveRequest) returns (FinishWaveResponse);
+}
+
+message BattleReportRandomDisplay {
+ int32 randomDisplayValueType = 1;
+ int64 randomDisplayValue = 2;
+}
+
+message CostumeBattleInfo {
+ int32 deckCharacterNumber = 1;
+ int64 totalDamage = 2;
+ bool isAlive = 4;
+ int32 hitCount = 5;
+ int64 maxHp = 6;
+ int64 remainingHp = 7;
+ int32 userDeckNumber = 30;
+ BattleReportRandomDisplay battleReportRandomDisplay = 50;
+}
+
+message StartWaveRequest {
+ repeated UserPartyInitialInfo userPartyInitialInfoList = 1;
+ repeated NpcPartyInitialInfo npcPartyInitialInfoList = 2;
+}
+
+message UserPartyInitialInfo {
+ int64 userId = 1;
+ int32 deckType = 2;
+ int64 userDeckNumber = 3;
+ int64 totalHp = 4;
+ string vt = 200;
+}
+
+message NpcPartyInitialInfo {
+ int64 npcId = 1;
+ int32 deckType = 2;
+ int32 battleNpcDeckNumber = 3;
+ int64 totalHp = 4;
+}
+
+message StartWaveResponse {
+ map diffUserData = 99;
+}
+
+message FinishWaveRequest {
+ bytes battleBinary = 1;
+ BattleDetail battleDetail = 2;
+ repeated UserPartyResultInfo userPartyResultInfoList = 3;
+ repeated NpcPartyResultInfo npcPartyResultInfoList = 4;
+ int64 elapsedFrameCount = 5;
+ string vt = 200;
+}
+
+message BattleDetail {
+ int32 characterDeathCount = 1;
+ int32 maxDamage = 2;
+ int32 playerCostumeActiveSkillUsedCount = 3;
+ int32 playerWeaponActiveSkillUsedCount = 4;
+ int32 playerCompanionSkillUsedCount = 5;
+ int32 criticalCount = 6;
+ int32 comboCount = 7;
+ int32 comboMaxDamage = 8;
+ repeated CostumeBattleInfo costumeBattleInfo = 9;
+ int64 totalRecoverPoint = 10;
+}
+
+message UserPartyResultInfo {
+ int64 userId = 1;
+ int32 deckType = 2;
+ int32 userDeckNumber = 3;
+ repeated AddUserDamageInfo addDamageInfoList = 4;
+ repeated UserRecoverInfo userRecoverInfo = 5;
+ repeated SkillUseInfo skillUseInfo = 6;
+ int32 characterDeathCount = 7;
+ int32 characterReviveCount = 8;
+ int32 characterHpDepletedCount = 9;
+}
+
+message AddUserDamageInfo {
+ int64 userId = 1;
+ int32 deckType = 2;
+ int32 deckNumber = 3;
+ int64 totalDamage = 4;
+ int64 totalUnclampedDamage = 5;
+}
+
+message UserRecoverInfo {
+ int64 userId = 1;
+ int32 deckType = 2;
+ int32 deckNumber = 3;
+ int64 totalRecoverPoint = 4;
+}
+
+message SkillUseInfo {
+ string deckCharacterUuid = 1;
+ int32 skillDetailId = 2;
+ int32 useCount = 3;
+}
+
+message NpcPartyResultInfo {
+ int64 npcId = 1;
+ int32 deckType = 2;
+ int32 battleNpcDeckNumber = 3;
+ repeated AddNpcDamageInfo addDamageInfoList = 4;
+ repeated NpcRecoverInfo npcRecoverInfo = 5;
+ repeated SkillUseInfo skillUseInfo = 6;
+ int32 characterDeathCount = 7;
+ int32 characterReviveCount = 8;
+ int32 characterHpDepletedCount = 9;
+}
+
+message AddNpcDamageInfo {
+ int64 npcId = 1;
+ int32 deckType = 2;
+ int32 deckNumber = 3;
+ int64 totalDamage = 4;
+ int64 totalUnclampedDamage = 5;
+}
+
+message NpcRecoverInfo {
+ int64 npcId = 1;
+ int32 deckType = 2;
+ int32 deckNumber = 3;
+ int64 totalRecoverPoint = 4;
+}
+
+message FinishWaveResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/bighunt.proto b/src/proto/bighunt.proto
new file mode 100644
index 0000000..537ee75
--- /dev/null
+++ b/src/proto/bighunt.proto
@@ -0,0 +1,142 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.BigHunt";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "proto/battle.proto";
+
+package apb.api.bighunt;
+
+service BighuntService {
+ rpc StartBigHuntQuest (StartBigHuntQuestRequest) returns (StartBigHuntQuestResponse);
+ rpc UpdateBigHuntQuestSceneProgress (UpdateBigHuntQuestSceneProgressRequest) returns (UpdateBigHuntQuestSceneProgressResponse);
+ rpc FinishBigHuntQuest (FinishBigHuntQuestRequest) returns (FinishBigHuntQuestResponse);
+ rpc RestartBigHuntQuest (RestartBigHuntQuestRequest) returns (RestartBigHuntQuestResponse);
+ rpc SkipBigHuntQuest (SkipBigHuntQuestRequest) returns (SkipBigHuntQuestResponse);
+ rpc SaveBigHuntBattleInfo (SaveBigHuntBattleInfoRequest) returns (SaveBigHuntBattleInfoResponse);
+ rpc GetBigHuntTopData (google.protobuf.Empty) returns (GetBigHuntTopDataResponse);
+}
+
+message WeeklyScoreResult {
+ int32 attributeType = 1;
+ int64 beforeMaxScore = 2;
+ int64 currentMaxScore = 3;
+ int32 beforeAssetGradeIconId = 4;
+ int32 currentAssetGradeIconId = 5;
+ int64 afterMaxScore = 6;
+ int32 afterAssetGradeIconId = 7;
+}
+
+message BigHuntReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message StartBigHuntQuestRequest {
+ int32 bigHuntBossQuestId = 1;
+ int32 bigHuntQuestId = 2;
+ int32 userDeckNumber = 3;
+ bool isDryRun = 4;
+}
+
+message StartBigHuntQuestResponse {
+ map diffUserData = 99;
+}
+
+message UpdateBigHuntQuestSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateBigHuntQuestSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message FinishBigHuntQuestRequest {
+ int32 bigHuntBossQuestId = 1;
+ int32 bigHuntQuestId = 2;
+ bool isRetired = 3;
+ string vt = 200;
+}
+
+message FinishBigHuntQuestResponse {
+ BigHuntScoreInfo scoreInfo = 1;
+ repeated BigHuntReward scoreReward = 2;
+ BigHuntBattleReport battleReport = 3;
+ map diffUserData = 99;
+}
+
+message BigHuntScoreInfo {
+ int64 userScore = 1;
+ bool isHighScore = 2;
+ int64 totalDamage = 3;
+ int64 baseScore = 4;
+ int32 difficultyBonusPermil = 5;
+ int32 aliveBonusPermil = 6;
+ int32 maxComboBonusPermil = 7;
+ int32 assetGradeIconId = 8;
+}
+
+message BigHuntBattleReport {
+ repeated BigHuntBattleReportWave battleReportWave = 1;
+}
+
+message BigHuntBattleReportWave {
+ repeated BigHuntBattleReportCostume battleReportCostume = 1;
+}
+
+message BigHuntBattleReportCostume {
+ int32 costumeId = 1;
+ int64 totalDamage = 2;
+ int32 hitCount = 3;
+ apb.api.battle.BattleReportRandomDisplay battleReportRandomDisplay = 4;
+}
+
+message RestartBigHuntQuestRequest {
+ int32 bigHuntBossQuestId = 1;
+ int32 bigHuntQuestId = 2;
+}
+
+message RestartBigHuntQuestResponse {
+ bytes battleBinary = 1;
+ int32 deckNumber = 2;
+ map diffUserData = 99;
+}
+
+message SkipBigHuntQuestRequest {
+ int32 bigHuntBossQuestId = 1;
+ int32 skipCount = 2;
+}
+
+message SkipBigHuntQuestResponse {
+ repeated BigHuntReward scoreReward = 1;
+ map diffUserData = 99;
+}
+
+message SaveBigHuntBattleInfoRequest {
+ bytes battleBinary = 1;
+ BigHuntBattleDetail bigHuntBattleDetail = 2;
+ int64 elapsedFrameCount = 3;
+ string vt = 200;
+}
+
+message BigHuntBattleDetail {
+ int32 deckType = 1;
+ int32 userTripleDeckNumber = 2;
+ int32 bossKnockDownCount = 3;
+ int32 maxComboCount = 4;
+ repeated apb.api.battle.CostumeBattleInfo costumeBattleInfo = 9;
+}
+
+message SaveBigHuntBattleInfoResponse {
+ map diffUserData = 99;
+}
+
+message GetBigHuntTopDataResponse {
+ repeated WeeklyScoreResult weeklyScoreResult = 1;
+ repeated BigHuntReward weeklyScoreReward = 2;
+ bool isReceivedWeeklyScoreReward = 3;
+ repeated BigHuntReward lastWeekWeeklyScoreReward = 4;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/cageornament.proto b/src/proto/cageornament.proto
new file mode 100644
index 0000000..659f254
--- /dev/null
+++ b/src/proto/cageornament.proto
@@ -0,0 +1,35 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.CageOrnament";
+
+import "proto/data.proto";
+
+package apb.api.cageornament;
+
+service CageornamentService {
+ rpc ReceiveReward (ReceiveRewardRequest) returns (ReceiveRewardResponse);
+ rpc RecordAccess (RecordAccessRequest) returns (RecordAccessResponse);
+}
+
+message ReceiveRewardRequest {
+ int32 cageOrnamentId = 1;
+}
+
+message ReceiveRewardResponse {
+ repeated CageOrnamentReward cageOrnamentReward = 1;
+ map diffUserData = 99;
+}
+
+message CageOrnamentReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message RecordAccessRequest {
+ int32 cageOrnamentId = 1;
+}
+
+message RecordAccessResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/character.proto b/src/proto/character.proto
new file mode 100644
index 0000000..8c2bb47
--- /dev/null
+++ b/src/proto/character.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Character";
+
+import "proto/data.proto";
+
+package apb.api.character;
+
+service CharacterService {
+ rpc Rebirth (RebirthRequest) returns (RebirthResponse);
+}
+
+message RebirthRequest {
+ int32 characterId = 1;
+ int32 rebirthCount = 2;
+}
+
+message RebirthResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/characterboard.proto b/src/proto/characterboard.proto
new file mode 100644
index 0000000..2de1af6
--- /dev/null
+++ b/src/proto/characterboard.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.CharacterBoard";
+
+import "proto/data.proto";
+
+package apb.api.characterboard;
+
+service CharacterboardService {
+ rpc ReleasePanel (ReleasePanelRequest) returns (ReleasePanelResponse);
+}
+
+message ReleasePanelRequest {
+ repeated int32 characterBoardPanelId = 1;
+}
+
+message ReleasePanelResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/characterviewer.proto b/src/proto/characterviewer.proto
new file mode 100644
index 0000000..679884a
--- /dev/null
+++ b/src/proto/characterviewer.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.CharacterViewer";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.characterviewer;
+
+service CharacterviewerService {
+ rpc CharacterViewerTop (google.protobuf.Empty) returns (CharacterViewerTopResponse);
+}
+
+message CharacterViewerTopResponse {
+ repeated int32 releaseCharacterViewerFieldId = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/companion.proto b/src/proto/companion.proto
new file mode 100644
index 0000000..3501425
--- /dev/null
+++ b/src/proto/companion.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Companion";
+
+import "proto/data.proto";
+
+package apb.api.companion;
+
+service CompanionService {
+ rpc Enhance (EnhanceRequest) returns (EnhanceResponse);
+}
+
+message EnhanceRequest {
+ string userCompanionUuid = 1;
+ int32 addLevelCount = 2;
+}
+
+message EnhanceResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/config.proto b/src/proto/config.proto
new file mode 100644
index 0000000..027701f
--- /dev/null
+++ b/src/proto/config.proto
@@ -0,0 +1,41 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Config";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.config;
+
+service ConfigService {
+ rpc GetReviewServerConfig (google.protobuf.Empty) returns (GetReviewServerConfigResponse);
+}
+
+message GetReviewServerConfigResponse {
+ ApiConfig api = 1;
+ OctoConfig octo = 2;
+ WebViewConfig webView = 3;
+ MasterDataConfig masterData = 4;
+ map diffUserData = 99;
+}
+
+message ApiConfig {
+ string hostname = 1;
+ int32 port = 2;
+}
+
+message OctoConfig {
+ int32 version = 1;
+ int32 appId = 2;
+ string clientSecretKey = 3;
+ string aesKey = 4;
+ string url = 5;
+}
+
+message WebViewConfig {
+ string baseUrl = 1;
+}
+
+message MasterDataConfig {
+ string urlFormat = 1;
+}
\ No newline at end of file
diff --git a/src/proto/consumableitem.proto b/src/proto/consumableitem.proto
new file mode 100644
index 0000000..6484dfc
--- /dev/null
+++ b/src/proto/consumableitem.proto
@@ -0,0 +1,34 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.ConsumableItem";
+
+import "proto/data.proto";
+
+package apb.api.consumableitem;
+
+service ConsumableitemService {
+ rpc UseEffectItem (UseEffectItemRequest) returns (UseEffectItemResponse);
+ rpc Sell (SellRequest) returns (SellResponse);
+}
+
+message UseEffectItemRequest {
+ int32 consumableItemId = 1;
+ int32 count = 2;
+}
+
+message UseEffectItemResponse {
+ map diffUserData = 99;
+}
+
+message SellRequest {
+ repeated SellPossession consumableItemPossession = 1;
+}
+
+message SellPossession {
+ int32 consumableItemId = 1;
+ int32 count = 2;
+}
+
+message SellResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/contentsstory.proto b/src/proto/contentsstory.proto
new file mode 100644
index 0000000..08e4f65
--- /dev/null
+++ b/src/proto/contentsstory.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.ContentsStory";
+
+import "proto/data.proto";
+
+package apb.api.contentsstory;
+
+service ContentsstoryService {
+ rpc RegisterPlayed (RegisterPlayedRequest) returns (RegisterPlayedResponse);
+}
+
+message RegisterPlayedRequest {
+ int32 contentsStoryId = 1;
+}
+
+message RegisterPlayedResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/costume.proto b/src/proto/costume.proto
new file mode 100644
index 0000000..4459d22
--- /dev/null
+++ b/src/proto/costume.proto
@@ -0,0 +1,92 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Costume";
+
+import "proto/data.proto";
+
+package apb.api.costume;
+
+service CostumeService {
+ rpc Enhance (EnhanceRequest) returns (EnhanceResponse);
+ rpc LimitBreak (LimitBreakRequest) returns (LimitBreakResponse);
+ rpc Awaken (AwakenRequest) returns (AwakenResponse);
+ rpc EnhanceActiveSkill (EnhanceActiveSkillRequest) returns (EnhanceActiveSkillResponse);
+ rpc RegisterLevelBonusConfirmed (RegisterLevelBonusConfirmedRequest) returns (RegisterLevelBonusConfirmedResponse);
+ rpc UnlockLotteryEffectSlot (UnlockLotteryEffectSlotRequest) returns (UnlockLotteryEffectSlotResponse);
+ rpc DrawLotteryEffect (DrawLotteryEffectRequest) returns (DrawLotteryEffectResponse);
+ rpc ConfirmLotteryEffect (ConfirmLotteryEffectRequest) returns (ConfirmLotteryEffectResponse);
+}
+
+message EnhanceRequest {
+ string userCostumeUuid = 1;
+ map materials = 2;
+}
+
+message EnhanceResponse {
+ bool isGreatSuccess = 1;
+ map surplusEnhanceMaterial = 2;
+ map diffUserData = 99;
+}
+
+message LimitBreakRequest {
+ string userCostumeUuid = 1;
+ map materials = 2;
+}
+
+message LimitBreakResponse {
+ map diffUserData = 99;
+}
+
+message AwakenRequest {
+ string userCostumeUuid = 1;
+ map materials = 2;
+}
+
+message AwakenResponse {
+ map diffUserData = 99;
+}
+
+message EnhanceActiveSkillRequest {
+ string userCostumeUuid = 1;
+ int32 addLevelCount = 2;
+}
+
+message EnhanceActiveSkillResponse {
+ map diffUserData = 99;
+}
+
+message RegisterLevelBonusConfirmedRequest {
+ int32 costumeId = 1;
+ int32 level = 2;
+}
+
+message RegisterLevelBonusConfirmedResponse {
+ map diffUserData = 99;
+}
+
+message UnlockLotteryEffectSlotRequest {
+ string userCostumeUuid = 1;
+ int32 slotNumber = 2;
+}
+
+message UnlockLotteryEffectSlotResponse {
+ map diffUserData = 99;
+}
+
+message DrawLotteryEffectRequest {
+ string userCostumeUuid = 1;
+ int32 slotNumber = 2;
+}
+
+message DrawLotteryEffectResponse {
+ map diffUserData = 99;
+}
+
+message ConfirmLotteryEffectRequest {
+ string userCostumeUuid = 1;
+ bool isAccept = 2;
+}
+
+message ConfirmLotteryEffectResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/data.proto b/src/proto/data.proto
new file mode 100644
index 0000000..29e14b7
--- /dev/null
+++ b/src/proto/data.proto
@@ -0,0 +1,38 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Data";
+
+import "google/protobuf/empty.proto";
+
+package apb.api.data;
+
+service DataService {
+ rpc GetLatestMasterDataVersion (google.protobuf.Empty) returns (MasterDataGetLatestVersionResponse);
+ rpc GetUserDataNameV2 (google.protobuf.Empty) returns (UserDataGetNameResponseV2);
+ rpc GetUserData (UserDataGetRequest) returns (UserDataGetResponse);
+}
+
+message DiffData {
+ string updateRecordsJson = 1;
+ string deleteKeysJson = 2;
+}
+
+message MasterDataGetLatestVersionResponse {
+ string latestMasterDataVersion = 1;
+}
+
+message UserDataGetNameResponseV2 {
+ repeated TableNameList tableNameList = 1;
+}
+
+message TableNameList {
+ repeated string tableName = 1;
+}
+
+message UserDataGetRequest {
+ repeated string tableName = 1;
+}
+
+message UserDataGetResponse {
+ map userDataJson = 1;
+}
\ No newline at end of file
diff --git a/src/proto/deck.proto b/src/proto/deck.proto
new file mode 100644
index 0000000..91a9f95
--- /dev/null
+++ b/src/proto/deck.proto
@@ -0,0 +1,158 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Deck";
+
+import "proto/data.proto";
+
+package apb.api.deck;
+
+service DeckService {
+ rpc UpdateName (UpdateNameRequest) returns (UpdateNameResponse);
+ rpc ReplaceDeck (ReplaceDeckRequest) returns (ReplaceDeckResponse);
+ rpc SetPvpDefenseDeck (SetPvpDefenseDeckRequest) returns (SetPvpDefenseDeckResponse);
+ rpc CopyDeck (CopyDeckRequest) returns (CopyDeckResponse);
+ rpc RemoveDeck (RemoveDeckRequest) returns (RemoveDeckResponse);
+ rpc RefreshDeckPower (RefreshDeckPowerRequest) returns (RefreshDeckPowerResponse);
+ rpc UpdateTripleDeckName (UpdateTripleDeckNameRequest) returns (UpdateTripleDeckNameResponse);
+ rpc ReplaceTripleDeck (ReplaceTripleDeckRequest) returns (ReplaceTripleDeckResponse);
+ rpc ReplaceMultiDeck (ReplaceMultiDeckRequest) returns (ReplaceMultiDeckResponse);
+ rpc RefreshMultiDeckPower (RefreshMultiDeckPowerRequest) returns (RefreshMultiDeckPowerResponse);
+}
+
+message Deck {
+ DeckCharacter character01 = 1;
+ DeckCharacter character02 = 2;
+ DeckCharacter character03 = 3;
+}
+
+message DeckCharacter {
+ string userCostumeUuid = 1;
+ string mainUserWeaponUuid = 2;
+ repeated string subUserWeaponUuid = 3;
+ string userCompanionUuid = 4;
+ repeated string userPartsUuid = 5;
+ int32 dressupCostumeId = 6;
+ string userThoughtUuid = 7;
+}
+
+message UpdateNameRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ string name = 3;
+}
+
+message UpdateNameResponse {
+ map diffUserData = 99;
+}
+
+message ReplaceDeckRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ Deck deck = 3;
+}
+
+message ReplaceDeckResponse {
+ map diffUserData = 99;
+}
+
+message SetPvpDefenseDeckRequest {
+ int32 userDeckNumber = 1;
+ DeckPower deckPower = 2;
+}
+
+message DeckPower {
+ int32 power = 1;
+ DeckCharacterPower deckCharacterPower01 = 2;
+ DeckCharacterPower deckCharacterPower02 = 3;
+ DeckCharacterPower deckCharacterPower03 = 4;
+}
+
+message DeckCharacterPower {
+ string userDeckCharacterUuid = 1;
+ int32 power = 2;
+}
+
+message SetPvpDefenseDeckResponse {
+ map diffUserData = 99;
+}
+
+message CopyDeckRequest {
+ int32 fromDeckType = 1;
+ int32 fromUserDeckNumber = 2;
+ int32 toDeckType = 3;
+ int32 toUserDeckNumber = 4;
+}
+
+message CopyDeckResponse {
+ int32 resultType = 1;
+ map diffUserData = 99;
+}
+
+message RemoveDeckRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+}
+
+message RemoveDeckResponse {
+ map diffUserData = 99;
+}
+
+message RefreshDeckPowerRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ DeckPower deckPower = 3;
+}
+
+message RefreshDeckPowerResponse {
+ map diffUserData = 99;
+}
+
+message UpdateTripleDeckNameRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ string name = 3;
+}
+
+message UpdateTripleDeckNameResponse {
+ map diffUserData = 99;
+}
+
+message ReplaceTripleDeckRequest {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ DeckDetail deckDetail01 = 3;
+ DeckDetail deckDetail02 = 4;
+ DeckDetail deckDetail03 = 5;
+}
+
+message DeckDetail {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ Deck deck = 3;
+}
+
+message ReplaceTripleDeckResponse {
+ map diffUserData = 99;
+}
+
+message ReplaceMultiDeckRequest {
+ repeated DeckDetail deckDetail = 1;
+}
+
+message ReplaceMultiDeckResponse {
+ map diffUserData = 99;
+}
+
+message RefreshMultiDeckPowerRequest {
+ repeated DeckPowerInfo deckPowerInfo = 1;
+}
+
+message DeckPowerInfo {
+ int32 deckType = 1;
+ int32 userDeckNumber = 2;
+ DeckPower deckPower = 3;
+}
+
+message RefreshMultiDeckPowerResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/dokan.proto b/src/proto/dokan.proto
new file mode 100644
index 0000000..b407bb2
--- /dev/null
+++ b/src/proto/dokan.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Dokan";
+
+import "proto/data.proto";
+
+package apb.api.dokan;
+
+service DokanService {
+ rpc RegisterDokanConfirmed (RegisterDokanConfirmedRequest) returns (RegisterDokanConfirmedResponse);
+}
+
+message RegisterDokanConfirmedRequest {
+ repeated int32 dokanId = 1;
+}
+
+message RegisterDokanConfirmedResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/explore.proto b/src/proto/explore.proto
new file mode 100644
index 0000000..54b6c8c
--- /dev/null
+++ b/src/proto/explore.proto
@@ -0,0 +1,49 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Explore";
+
+import "proto/data.proto";
+
+package apb.api.explore;
+
+service ExploreService {
+ rpc StartExplore (StartExploreRequest) returns (StartExploreResponse);
+ rpc FinishExplore (FinishExploreRequest) returns (FinishExploreResponse);
+ rpc RetireExplore (RetireExploreRequest) returns (RetireExploreResponse);
+}
+
+message StartExploreRequest {
+ int32 exploreId = 1;
+ int32 useConsumableItemId = 2;
+}
+
+message StartExploreResponse {
+ map diffUserData = 99;
+}
+
+message FinishExploreRequest {
+ int32 exploreId = 1;
+ int32 score = 2;
+ string vt = 200;
+}
+
+message FinishExploreResponse {
+ int32 acquireStaminaCount = 1;
+ repeated ExploreReward exploreReward = 2;
+ int32 assetGradeIconId = 3;
+ map diffUserData = 99;
+}
+
+message ExploreReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message RetireExploreRequest {
+ int32 exploreId = 1;
+}
+
+message RetireExploreResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/friend.proto b/src/proto/friend.proto
new file mode 100644
index 0000000..0f44234
--- /dev/null
+++ b/src/proto/friend.proto
@@ -0,0 +1,135 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Friend";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "google/protobuf/timestamp.proto";
+import "proto/mission.proto";
+
+package apb.api.friend;
+
+service FriendService {
+ rpc GetUser (GetUserRequest) returns (GetUserResponse);
+ rpc SearchRecommendedUsers (google.protobuf.Empty) returns (SearchRecommendedUsersResponse);
+ rpc GetFriendList (GetFriendListRequest) returns (GetFriendListResponse);
+ rpc GetFriendRequestList (google.protobuf.Empty) returns (GetFriendRequestListResponse);
+ rpc SendFriendRequest (SendFriendRequestRequest) returns (SendFriendRequestResponse);
+ rpc AcceptFriendRequest (AcceptFriendRequestRequest) returns (AcceptFriendRequestResponse);
+ rpc DeclineFriendRequest (DeclineFriendRequestRequest) returns (DeclineFriendRequestResponse);
+ rpc DeleteFriend (DeleteFriendRequest) returns (DeleteFriendResponse);
+ rpc CheerFriend (CheerFriendRequest) returns (CheerFriendResponse);
+ rpc BulkCheerFriend (google.protobuf.Empty) returns (BulkCheerFriendResponse);
+ rpc ReceiveCheer (ReceiveCheerRequest) returns (ReceiveCheerResponse);
+ rpc BulkReceiveCheer (google.protobuf.Empty) returns (BulkReceiveCheerResponse);
+}
+
+message GetUserRequest {
+ int64 playerId = 1;
+}
+
+message GetUserResponse {
+ User user = 1;
+ map diffUserData = 99;
+}
+
+message User {
+ int64 playerId = 1;
+ string userName = 2;
+ google.protobuf.Timestamp lastLoginDatetime = 3;
+ int32 maxDeckPower = 4;
+ int32 favoriteCostumeId = 5;
+ int32 level = 6;
+}
+
+message SearchRecommendedUsersResponse {
+ repeated User users = 1;
+ map diffUserData = 99;
+}
+
+message GetFriendListRequest {
+ apb.api.mission.CageMeasurableValues cageMeasurableValues = 50;
+}
+
+message GetFriendListResponse {
+ repeated FriendUser friendUser = 1;
+ int32 sendCheerCount = 2;
+ int32 receivedCheerCount = 3;
+ map diffUserData = 99;
+}
+
+message FriendUser {
+ int64 playerId = 1;
+ string userName = 2;
+ google.protobuf.Timestamp lastLoginDatetime = 3;
+ int32 maxDeckPower = 4;
+ int32 favoriteCostumeId = 5;
+ int32 level = 6;
+ bool cheerReceived = 7;
+ bool cheerSent = 8;
+ bool staminaReceived = 9;
+}
+
+message GetFriendRequestListResponse {
+ repeated User user = 1;
+ map diffUserData = 99;
+}
+
+message SendFriendRequestRequest {
+ int64 playerId = 1;
+}
+
+message SendFriendRequestResponse {
+ map diffUserData = 99;
+}
+
+message AcceptFriendRequestRequest {
+ int64 playerId = 1;
+}
+
+message AcceptFriendRequestResponse {
+ map diffUserData = 99;
+}
+
+message DeclineFriendRequestRequest {
+ int64 playerIdOld = 1;
+ repeated int64 playerId = 2;
+}
+
+message DeclineFriendRequestResponse {
+ map diffUserData = 99;
+}
+
+message DeleteFriendRequest {
+ int64 playerId = 1;
+}
+
+message DeleteFriendResponse {
+ map diffUserData = 99;
+}
+
+message CheerFriendRequest {
+ int64 playerId = 1;
+}
+
+message CheerFriendResponse {
+ map diffUserData = 99;
+}
+
+message BulkCheerFriendResponse {
+ repeated int64 playerId = 1;
+ map diffUserData = 99;
+}
+
+message ReceiveCheerRequest {
+ int64 playerId = 1;
+}
+
+message ReceiveCheerResponse {
+ map diffUserData = 99;
+}
+
+message BulkReceiveCheerResponse {
+ repeated int64 playerId = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/gacha.proto b/src/proto/gacha.proto
new file mode 100644
index 0000000..f5042f5
--- /dev/null
+++ b/src/proto/gacha.proto
@@ -0,0 +1,174 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Gacha";
+
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "proto/data.proto";
+
+package apb.api.gacha;
+
+service GachaService {
+ rpc GetGachaList (GetGachaListRequest) returns (GetGachaListResponse);
+ rpc GetGacha (GetGachaRequest) returns (GetGachaResponse);
+ rpc Draw (DrawRequest) returns (DrawResponse);
+ rpc ResetBoxGacha (ResetBoxGachaRequest) returns (ResetBoxGachaResponse);
+ rpc GetRewardGacha (google.protobuf.Empty) returns (GetRewardGachaResponse);
+ rpc RewardDraw (RewardDrawRequest) returns (RewardDrawResponse);
+}
+
+message MenuGachaBadgeInfo {
+ google.protobuf.Timestamp displayStartDatetime = 1;
+ google.protobuf.Timestamp displayEndDatetime = 2;
+}
+
+message GetGachaListRequest {
+ repeated int32 gachaLabelType = 1;
+}
+
+message GetGachaListResponse {
+ repeated Gacha gacha = 1;
+ ConvertedGachaMedal convertedGachaMedal = 2;
+ map diffUserData = 99;
+}
+
+message Gacha {
+ int32 gachaId = 1;
+ int32 gachaLabelType = 2;
+ int32 gachaModeType = 4;
+ int32 gachaAutoResetType = 5;
+ int32 gachaAutoResetPeriod = 6;
+ google.protobuf.Timestamp nextAutoResetDatetime = 7;
+ repeated GachaUnlockCondition gachaUnlockCondition = 8;
+ bool isUserGachaUnlock = 9;
+ google.protobuf.Timestamp startDatetime = 10;
+ google.protobuf.Timestamp endDatetime = 13;
+ repeated GachaPricePhase gachaPricePhase = 14;
+ int32 relatedMainQuestChapterId = 16;
+ int32 relatedEventQuestChapterId = 17;
+ int32 promotionMovieAssetId = 18;
+ int32 gachaMedalId = 19;
+ int32 gachaDecorationType = 20;
+ int32 sortOrder = 21;
+ bool isInactive = 22;
+ int32 informationId = 23;
+ bytes gachaMode = 24;
+}
+
+message GachaUnlockCondition {
+ int32 gachaUnlockConditionType = 1;
+ int32 conditionValue = 2;
+}
+
+message GachaPricePhase {
+ int32 gachaPricePhaseId = 1;
+ bool isEnabled = 2;
+ google.protobuf.Timestamp endDatetime = 3;
+ int32 limitExecCount = 4;
+ int32 userExecCount = 5;
+ int32 gachaBadgeType = 6;
+ int32 priceType = 7;
+ int32 priceId = 8;
+ int32 price = 9;
+ int32 regularPrice = 10;
+ int32 drawCount = 11;
+ int32 eachMaxExecCount = 12;
+ repeated GachaBonus gachaBonus = 13;
+ GachaOddsFixedRarity gachaOddsFixedRarity = 14;
+}
+
+message GachaBonus {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message GachaOddsFixedRarity {
+ int32 fixedRarityTypeLowerLimit = 1;
+ int32 fixedCount = 2;
+}
+
+message ConvertedGachaMedal {
+ repeated ConsumableItemPossession convertedMedalPossession = 1;
+ ConsumableItemPossession obtainPossession = 2;
+}
+
+message ConsumableItemPossession {
+ int32 consumableItemId = 1;
+ int32 count = 2;
+}
+
+message GetGachaRequest {
+ repeated int32 gachaId = 1;
+}
+
+message GetGachaResponse {
+ map gacha = 1;
+ map diffUserData = 99;
+}
+
+message DrawRequest {
+ int32 gachaId = 1;
+ int32 gachaPricePhaseId = 2;
+ int32 execCount = 3;
+ string consumeUserWeaponUuid = 4;
+}
+
+message DrawResponse {
+ Gacha nextGacha = 1;
+ repeated DrawGachaOddsItem gachaResult = 2;
+ repeated GachaBonus gachaBonus = 3;
+ repeated MenuGachaBadgeInfo menuGachaBadgeInfo = 4;
+ map diffUserData = 99;
+}
+
+message DrawGachaOddsItem {
+ GachaItem gachaItem = 1;
+ GachaItem gachaItemBonus = 2;
+ int32 duplicationBonusGrade = 3;
+ repeated GachaBonus duplicationBonus = 4;
+ GachaBonus medalBonus = 5;
+ bool isTarget = 6;
+}
+
+message GachaItem {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+ int32 promotionOrder = 4;
+ bool isNew = 5;
+}
+
+message ResetBoxGachaRequest {
+ int32 gachaId = 1;
+}
+
+message ResetBoxGachaResponse {
+ Gacha gacha = 1;
+ map diffUserData = 99;
+}
+
+message GetRewardGachaResponse {
+ bool available = 1;
+ int32 todaysCurrentDrawCount = 2;
+ int32 dailyMaxCount = 3;
+ map diffUserData = 99;
+}
+
+message RewardDrawRequest {
+ string placementName = 1;
+ string rewardName = 2;
+ string rewardAmount = 3;
+}
+
+message RewardDrawResponse {
+ repeated RewardGachaItem rewardGachaResult = 1;
+ map diffUserData = 99;
+}
+
+message RewardGachaItem {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+ bool isNew = 4;
+}
\ No newline at end of file
diff --git a/src/proto/gameplay.proto b/src/proto/gameplay.proto
new file mode 100644
index 0000000..fd27ce5
--- /dev/null
+++ b/src/proto/gameplay.proto
@@ -0,0 +1,24 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.GamePlay";
+
+import "proto/gacha.proto";
+import "proto/data.proto";
+
+package apb.api.gameplay;
+
+service GameplayService {
+ rpc CheckBeforeGamePlay (CheckBeforeGamePlayRequest) returns (CheckBeforeGamePlayResponse);
+}
+
+message CheckBeforeGamePlayRequest {
+ string tr = 1;
+ int32 voiceClientSystemLanguageTypeId = 2;
+ int32 textClientSystemLanguageTypeId = 3;
+}
+
+message CheckBeforeGamePlayResponse {
+ bool isExistUnreadPop = 1;
+ repeated apb.api.gacha.MenuGachaBadgeInfo menuGachaBadgeInfo = 2;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/gift.proto b/src/proto/gift.proto
new file mode 100644
index 0000000..819e462
--- /dev/null
+++ b/src/proto/gift.proto
@@ -0,0 +1,68 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Gift";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "google/protobuf/timestamp.proto";
+
+package apb.api.gift;
+
+service GiftService {
+ rpc ReceiveGift (ReceiveGiftRequest) returns (ReceiveGiftResponse);
+ rpc GetGiftList (GetGiftListRequest) returns (GetGiftListResponse);
+ rpc GetGiftReceiveHistoryList (google.protobuf.Empty) returns (GetGiftReceiveHistoryListResponse);
+}
+
+message ReceiveGiftRequest {
+ repeated string userGiftUuid = 1;
+}
+
+message ReceiveGiftResponse {
+ repeated string receivedGiftUuid = 1;
+ repeated string expiredGiftUuid = 2;
+ repeated string overflowGiftUuid = 3;
+ map diffUserData = 99;
+}
+
+message GetGiftListRequest {
+ repeated int32 rewardKindType = 1;
+ int32 expirationType = 2;
+ bool isAscendingSort = 3;
+ int64 nextCursor = 4;
+ int64 previousCursor = 5;
+ int32 getCount = 6;
+}
+
+message GetGiftListResponse {
+ repeated NotReceivedGift gift = 1;
+ int32 totalPageCount = 2;
+ int64 nextCursor = 3;
+ int64 previousCursor = 4;
+ map diffUserData = 99;
+}
+
+message NotReceivedGift {
+ GiftCommon giftCommon = 1;
+ google.protobuf.Timestamp expirationDatetime = 2;
+ string userGiftUuid = 3;
+}
+
+message GiftCommon {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+ google.protobuf.Timestamp grantDatetime = 4;
+ int32 descriptionGiftTextId = 5;
+ bytes equipmentData = 6;
+}
+
+message GetGiftReceiveHistoryListResponse {
+ repeated ReceivedGift gift = 1;
+ map diffUserData = 99;
+}
+
+message ReceivedGift {
+ GiftCommon giftCommon = 1;
+ google.protobuf.Timestamp receivedDatetime = 2;
+}
\ No newline at end of file
diff --git a/src/proto/gimmick.proto b/src/proto/gimmick.proto
new file mode 100644
index 0000000..28432c0
--- /dev/null
+++ b/src/proto/gimmick.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Gimmick";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.gimmick;
+
+service GimmickService {
+ rpc UpdateSequence (UpdateSequenceRequest) returns (UpdateSequenceResponse);
+ rpc UpdateGimmickProgress (UpdateGimmickProgressRequest) returns (UpdateGimmickProgressResponse);
+ rpc InitSequenceSchedule (google.protobuf.Empty) returns (InitSequenceScheduleResponse);
+ rpc Unlock (UnlockRequest) returns (UnlockResponse);
+}
+
+message UpdateSequenceRequest {
+ int32 gimmickSequenceScheduleId = 1;
+ int32 gimmickSequenceId = 2;
+}
+
+message UpdateSequenceResponse {
+ map diffUserData = 99;
+}
+
+message UpdateGimmickProgressRequest {
+ int32 gimmickSequenceScheduleId = 1;
+ int32 gimmickSequenceId = 2;
+ int32 gimmickId = 3;
+ int32 gimmickOrnamentIndex = 4;
+ int32 progressValueBit = 5;
+ int32 flowType = 6;
+}
+
+message UpdateGimmickProgressResponse {
+ repeated GimmickReward gimmickOrnamentReward = 1;
+ bool isSequenceCleared = 2;
+ repeated GimmickReward gimmickSequenceClearReward = 3;
+ map diffUserData = 99;
+}
+
+message GimmickReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message InitSequenceScheduleResponse {
+ map diffUserData = 99;
+}
+
+message UnlockRequest {
+ repeated GimmickKey gimmickKey = 1;
+}
+
+message GimmickKey {
+ int32 gimmickSequenceScheduleId = 1;
+ int32 gimmickSequenceId = 2;
+ int32 gimmickId = 3;
+}
+
+message UnlockResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/greet.proto b/src/proto/greet.proto
new file mode 100644
index 0000000..153b666
--- /dev/null
+++ b/src/proto/greet.proto
@@ -0,0 +1,21 @@
+syntax = "proto3";
+
+option csharp_namespace = "MariesWonderland";
+
+package greet;
+
+// The greeting service definition.
+service Greeter {
+ // Sends a greeting
+ rpc SayHello (HelloRequest) returns (HelloReply);
+}
+
+// The request message containing the user's name.
+message HelloRequest {
+ string name = 1;
+}
+
+// The response message containing the greetings.
+message HelloReply {
+ string message = 1;
+}
diff --git a/src/proto/individualpop.proto b/src/proto/individualpop.proto
new file mode 100644
index 0000000..d5d9a78
--- /dev/null
+++ b/src/proto/individualpop.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.IndividualPop";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.individualpop;
+
+service IndividualpopService {
+ rpc GetUnreadPop (google.protobuf.Empty) returns (GetUnreadPopResponse);
+}
+
+message GetUnreadPopResponse {
+ repeated string unreadPop = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/labyrinth.proto b/src/proto/labyrinth.proto
new file mode 100644
index 0000000..6b25ecc
--- /dev/null
+++ b/src/proto/labyrinth.proto
@@ -0,0 +1,54 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Labyrinth";
+
+import "proto/data.proto";
+
+package apb.api.labyrinth;
+
+service LabyrinthService {
+ rpc UpdateSeasonData (UpdateSeasonDataRequest) returns (UpdateSeasonDataResponse);
+ rpc ReceiveStageClearReward (ReceiveStageClearRewardRequest) returns (ReceiveStageClearRewardResponse);
+ rpc ReceiveStageAccumulationReward (ReceiveStageAccumulationRewardRequest) returns (ReceiveStageAccumulationRewardResponse);
+}
+
+message LabyrinthSeasonResult {
+ int32 eventQuestChapterId = 1;
+ int32 headQuestId = 2;
+ repeated LabyrinthReward seasonReward = 3;
+ int32 headStageOrder = 4;
+}
+
+message LabyrinthReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message UpdateSeasonDataRequest {
+ int32 eventQuestChapterId = 1;
+}
+
+message UpdateSeasonDataResponse {
+ repeated LabyrinthSeasonResult seasonResult = 1;
+ map diffUserData = 99;
+}
+
+message ReceiveStageClearRewardRequest {
+ int32 eventQuestChapterId = 1;
+ int32 stageOrder = 2;
+}
+
+message ReceiveStageClearRewardResponse {
+ map diffUserData = 99;
+}
+
+message ReceiveStageAccumulationRewardRequest {
+ int32 eventQuestChapterId = 1;
+ int32 stageOrder = 2;
+ int32 questMissionClearCount = 3;
+}
+
+message ReceiveStageAccumulationRewardResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/loginbonus.proto b/src/proto/loginbonus.proto
new file mode 100644
index 0000000..ee19b76
--- /dev/null
+++ b/src/proto/loginbonus.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.LoginBonus";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.loginbonus;
+
+service LoginbonusService {
+ rpc ReceiveStamp (google.protobuf.Empty) returns (ReceiveStampResponse);
+}
+
+message ReceiveStampResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/material.proto b/src/proto/material.proto
new file mode 100644
index 0000000..5db73bb
--- /dev/null
+++ b/src/proto/material.proto
@@ -0,0 +1,24 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Material";
+
+import "proto/data.proto";
+
+package apb.api.material;
+
+service MaterialService {
+ rpc Sell (SellRequest) returns (SellResponse);
+}
+
+message SellRequest {
+ repeated SellPossession materialPossession = 1;
+}
+
+message SellPossession {
+ int32 materialId = 1;
+ int32 count = 2;
+}
+
+message SellResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/mission.proto b/src/proto/mission.proto
new file mode 100644
index 0000000..b2b133f
--- /dev/null
+++ b/src/proto/mission.proto
@@ -0,0 +1,70 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Mission";
+
+import "proto/data.proto";
+
+package apb.api.mission;
+
+service MissionService {
+ rpc ReceiveMissionRewardsById (ReceiveMissionRewardsByIdRequest) returns (ReceiveMissionRewardsResponse);
+ rpc UpdateMissionProgress (UpdateMissionProgressRequest) returns (UpdateMissionProgressResponse);
+ rpc ReceiveMissionPassRewards (ReceiveMissionPassRewardsRequest) returns (ReceiveMissionPassRewardsResponse);
+}
+
+message CageMeasurableValues {
+ int32 runningDistanceMeters = 1;
+ int32 mamaTappedCount = 2;
+}
+
+message ReceiveMissionRewardsByIdRequest {
+ repeated int32 missionId = 1;
+}
+
+message ReceiveMissionRewardsResponse {
+ repeated MissionReward receivedPossession = 1;
+ repeated MissionReward expiredPossession = 2;
+ repeated MissionReward overflowPossession = 3;
+ map diffUserData = 99;
+}
+
+message MissionReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message UpdateMissionProgressRequest {
+ CageMeasurableValues cageMeasurableValues = 50;
+ PictureBookMeasurableValues pictureBookMeasurableValues = 51;
+}
+
+message PictureBookMeasurableValues {
+ int32 defeatWizardCount = 1;
+ RhythmInteractionMeasurableValues rhythmInteractionMeasurableValues = 2;
+}
+
+message RhythmInteractionMeasurableValues {
+ int32 liveTypeId = 1;
+ int32 tapCount = 2;
+}
+
+message UpdateMissionProgressResponse {
+ map diffUserData = 99;
+}
+
+message ReceiveMissionPassRewardsRequest {
+ int32 missionPassId = 1;
+}
+
+message ReceiveMissionPassRewardsResponse {
+ repeated MissionPassReward receivedPossession = 1;
+ repeated MissionPassReward overflowPossession = 2;
+ map diffUserData = 99;
+}
+
+message MissionPassReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
\ No newline at end of file
diff --git a/src/proto/movie.proto b/src/proto/movie.proto
new file mode 100644
index 0000000..20eb697
--- /dev/null
+++ b/src/proto/movie.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Movie";
+
+import "proto/data.proto";
+
+package apb.api.movie;
+
+service MovieService {
+ rpc SaveViewedMovie (SaveViewedMovieRequest) returns (SaveViewedMovieResponse);
+}
+
+message SaveViewedMovieRequest {
+ repeated int32 movieId = 1;
+}
+
+message SaveViewedMovieResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/navicutin.proto b/src/proto/navicutin.proto
new file mode 100644
index 0000000..88583ed
--- /dev/null
+++ b/src/proto/navicutin.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.NaviCutIn";
+
+import "proto/data.proto";
+
+package apb.api.navicutin;
+
+service NavicutinService {
+ rpc RegisterPlayed (RegisterPlayedRequest) returns (RegisterPlayedResponse);
+}
+
+message RegisterPlayedRequest {
+ int32 naviCutId = 1;
+}
+
+message RegisterPlayedResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/notification.proto b/src/proto/notification.proto
new file mode 100644
index 0000000..e4d9906
--- /dev/null
+++ b/src/proto/notification.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Notification";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.notification;
+
+service NotificationService {
+ rpc GetHeaderNotification (google.protobuf.Empty) returns (GetHeaderNotificationResponse);
+}
+
+message GetHeaderNotificationResponse {
+ int32 giftNotReceiveCount = 1;
+ int32 friendRequestReceiveCount = 2;
+ bool isExistUnreadInformation = 3;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/omikuji.proto b/src/proto/omikuji.proto
new file mode 100644
index 0000000..04509af
--- /dev/null
+++ b/src/proto/omikuji.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Omikuji";
+
+import "proto/data.proto";
+
+package apb.api.omikuji;
+
+service OmikujiService {
+ rpc OmikujiDraw (OmikujiDrawRequest) returns (OmikujiDrawResponse);
+}
+
+message OmikujiDrawRequest {
+ int32 omikujiId = 1;
+}
+
+message OmikujiDrawResponse {
+ int32 omikujiResultAssetId = 1;
+ repeated OmikujiItem omikujiItem = 2;
+ map diffUserData = 99;
+}
+
+message OmikujiItem {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
\ No newline at end of file
diff --git a/src/proto/parts.proto b/src/proto/parts.proto
new file mode 100644
index 0000000..dd10409
--- /dev/null
+++ b/src/proto/parts.proto
@@ -0,0 +1,108 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Parts";
+
+import "proto/data.proto";
+
+package apb.api.parts;
+
+service PartsService {
+ rpc Sell (SellRequest) returns (SellResponse);
+ rpc Protect (ProtectRequest) returns (ProtectResponse);
+ rpc Unprotect (UnprotectRequest) returns (UnprotectResponse);
+ rpc Enhance (EnhanceRequest) returns (EnhanceResponse);
+ rpc UpdatePresetName (UpdatePresetNameRequest) returns (UpdatePresetNameResponse);
+ rpc UpdatePresetTagNumber (UpdatePresetTagNumberRequest) returns (UpdatePresetTagNumberResponse);
+ rpc UpdatePresetTagName (UpdatePresetTagNameRequest) returns (UpdatePresetTagNameResponse);
+ rpc ReplacePreset (ReplacePresetRequest) returns (ReplacePresetResponse);
+ rpc CopyPreset (CopyPresetRequest) returns (CopyPresetResponse);
+ rpc RemovePreset (RemovePresetRequest) returns (RemovePresetResponse);
+}
+
+message SellRequest {
+ repeated string userPartsUuid = 1;
+}
+
+message SellResponse {
+ map diffUserData = 99;
+}
+
+message ProtectRequest {
+ repeated string userPartsUuid = 1;
+}
+
+message ProtectResponse {
+ map diffUserData = 99;
+}
+
+message UnprotectRequest {
+ repeated string userPartsUuid = 1;
+}
+
+message UnprotectResponse {
+ map diffUserData = 99;
+}
+
+message EnhanceRequest {
+ string userPartsUuid = 1;
+}
+
+message EnhanceResponse {
+ bool isSuccess = 1;
+ map diffUserData = 99;
+}
+
+message UpdatePresetNameRequest {
+ int32 userPartsPresetNumber = 1;
+ string name = 2;
+}
+
+message UpdatePresetNameResponse {
+ map diffUserData = 99;
+}
+
+message UpdatePresetTagNumberRequest {
+ int32 userPartsPresetNumber = 1;
+ int32 userPartsPresetTagNumber = 2;
+}
+
+message UpdatePresetTagNumberResponse {
+ map diffUserData = 99;
+}
+
+message UpdatePresetTagNameRequest {
+ int32 userPartsPresetTagNumber = 1;
+ string name = 2;
+}
+
+message UpdatePresetTagNameResponse {
+ map diffUserData = 99;
+}
+
+message ReplacePresetRequest {
+ int32 userPartsPresetNumber = 1;
+ string userPartsUuid01 = 2;
+ string userPartsUuid02 = 3;
+ string userPartsUuid03 = 4;
+}
+
+message ReplacePresetResponse {
+ map diffUserData = 99;
+}
+
+message CopyPresetRequest {
+ int32 fromUserPartsPresetNumber = 1;
+ int32 toUserPartsPresetNumber = 2;
+}
+
+message CopyPresetResponse {
+ map diffUserData = 99;
+}
+
+message RemovePresetRequest {
+ int32 userPartsPresetNumber = 1;
+}
+
+message RemovePresetResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/portalcage.proto b/src/proto/portalcage.proto
new file mode 100644
index 0000000..186ae13
--- /dev/null
+++ b/src/proto/portalcage.proto
@@ -0,0 +1,32 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.PortalCage";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.portalcage;
+
+service PortalcageService {
+ rpc UpdatePortalCageSceneProgress (UpdatePortalCageSceneProgressRequest) returns (UpdatePortalCageSceneProgressResponse);
+ rpc GetDropItem (google.protobuf.Empty) returns (GetDropItemResponse);
+}
+
+message UpdatePortalCageSceneProgressRequest {
+ int32 portalCageSceneId = 1;
+}
+
+message UpdatePortalCageSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message GetDropItemResponse {
+ repeated PortalCageDropItem portalCageDropItem = 1;
+ map diffUserData = 99;
+}
+
+message PortalCageDropItem {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
\ No newline at end of file
diff --git a/src/proto/pvp.proto b/src/proto/pvp.proto
new file mode 100644
index 0000000..95aab18
--- /dev/null
+++ b/src/proto/pvp.proto
@@ -0,0 +1,279 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Pvp";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "google/protobuf/timestamp.proto";
+
+package apb.api.pvp;
+
+service PvpService {
+ rpc GetTopData (google.protobuf.Empty) returns (GetTopDataResponse);
+ rpc GetMatchingList (google.protobuf.Empty) returns (GetMatchingListResponse);
+ rpc UpdateMatchingList (google.protobuf.Empty) returns (UpdateMatchingListResponse);
+ rpc StartBattle (StartBattleRequest) returns (StartBattleResponse);
+ rpc FinishBattle (FinishBattleRequest) returns (FinishBattleResponse);
+ rpc GetRanking (GetRankingRequest) returns (GetRankingResponse);
+ rpc GetSeasonResult (google.protobuf.Empty) returns (GetSeasonResultResponse);
+ rpc GetAttackLogList (google.protobuf.Empty) returns (GetAttackLogListResponse);
+ rpc GetDefenseLogList (google.protobuf.Empty) returns (GetDefenseLogListResponse);
+}
+
+message WeeklyGradeResult {
+ int32 targetSeasonId = 1;
+ int32 pvpPoint = 2;
+ int32 pvpGradeWeeklyRewardGroupId = 3;
+}
+
+message SeasonRankResult {
+ int32 targetSeasonId = 1;
+ int32 rank = 2;
+ int32 pvpSeasonRankRewardGroupId = 3;
+}
+
+message WeeklyRankResult {
+ int32 targetSeasonId = 1;
+ int32 rank = 2;
+ int32 pvpWeeklyRankRewardGroupId = 3;
+}
+
+message GetTopDataResponse {
+ int32 currentSeasonId = 1;
+ int32 pvpPoint = 2;
+ int32 rank = 3;
+ WeeklyGradeResult weeklyGradeResult = 4;
+ SeasonRankResult seasonRankResult = 5;
+ WeeklyRankResult weeklyRankResult = 6;
+ map diffUserData = 99;
+}
+
+message GetMatchingListResponse {
+ repeated MatchingOpponent matching = 1;
+ map diffUserData = 99;
+}
+
+message MatchingOpponent {
+ int64 playerId = 1;
+ string name = 2;
+ int32 pvpPoint = 3;
+ int32 rank = 4;
+ int32 deckPower = 5;
+ repeated int32 deckMainWeaponAttributeType = 6;
+ int32 mostPowerfulCostumeId = 7;
+}
+
+message UpdateMatchingListResponse {
+ repeated MatchingOpponent matching = 1;
+ map diffUserData = 99;
+}
+
+message StartBattleRequest {
+ int64 opponentPlayerId = 1;
+ int32 useDeckNumber = 2;
+}
+
+message StartBattleResponse {
+ repeated DeckCharacter opponentDeckCharacter = 1;
+ map diffUserData = 99;
+}
+
+message DeckCharacter {
+ CostumeInfo costume = 1;
+ CompanionInfo companion = 2;
+ WeaponInfo mainWeapon = 3;
+ repeated WeaponInfo subWeapon = 4;
+ repeated PartsInfo parts = 5;
+ repeated CharacterBoardAbilityInfo characterBoardAbilities = 6;
+ repeated CharacterBoardStatusUpInfo characterBoardStatusUps = 7;
+ repeated CostumeLevelBonusStatusUpInfo costumeLevelBonusStatusUps = 8;
+ repeated AwakenAbilityInfo awakenAbilities = 9;
+ repeated AwakenStatusUpInfo awakenStatusUps = 10;
+ ThoughtInfo thought = 11;
+ repeated StainedGlassStatusUpInfo stainedGlassStatusUps = 12;
+ repeated CostumeLotteryEffectAbilityInfo costumeLotteryEffectAbilities = 13;
+ repeated CostumeLotteryEffectStatusUpInfo costumeLotteryEffectStatusUps = 14;
+}
+
+message CostumeInfo {
+ int32 costumeId = 1;
+ int32 limitBreakCount = 2;
+ int32 level = 3;
+ int32 activeSkillLevel = 4;
+ int32 characterLevel = 5;
+ int32 costumeLotteryEffectUnlockedSlotCount = 6;
+}
+
+message CompanionInfo {
+ int32 companionId = 1;
+ int32 level = 2;
+}
+
+message WeaponInfo {
+ int32 weaponId = 1;
+ int32 limitBreakCount = 2;
+ int32 level = 3;
+ repeated WeaponAbilityInfo weaponAbility = 4;
+ repeated WeaponSkillInfo weaponSkill = 5;
+ AwakenAbilityInfo weaponAwakenAbility = 6;
+ repeated AwakenStatusUpInfo weaponAwakenStatusUps = 7;
+}
+
+message WeaponAbilityInfo {
+ int32 abilityId = 1;
+ int32 level = 2;
+}
+
+message WeaponSkillInfo {
+ int32 skillId = 1;
+ int32 level = 2;
+}
+
+message AwakenAbilityInfo {
+ int32 abilityId = 1;
+ int32 level = 2;
+}
+
+message AwakenStatusUpInfo {
+ int32 statusCalculationType = 1;
+ int32 hp = 2;
+ int32 attack = 3;
+ int32 vitality = 4;
+ int32 agility = 5;
+ int32 criticalRatio = 6;
+ int32 criticalAttack = 7;
+}
+
+message PartsInfo {
+ int32 partsId = 1;
+ int32 level = 2;
+ int32 partsMainStatusId = 3;
+ repeated PartsSubStatusInfo subPartsStatus = 4;
+}
+
+message PartsSubStatusInfo {
+ int32 level = 1;
+ int32 statusKindType = 2;
+ int32 statusCalculationType = 3;
+ int32 statusChangeValue = 4;
+}
+
+message CharacterBoardAbilityInfo {
+ int32 abilityId = 1;
+ int32 level = 2;
+}
+
+message CharacterBoardStatusUpInfo {
+ int32 statusCalculationType = 1;
+ int32 hp = 2;
+ int32 attack = 3;
+ int32 vitality = 4;
+ int32 agility = 5;
+ int32 criticalRatio = 6;
+ int32 criticalAttack = 7;
+}
+
+message CostumeLevelBonusStatusUpInfo {
+ int32 statusCalculationType = 1;
+ int32 hp = 2;
+ int32 attack = 3;
+ int32 vitality = 4;
+ int32 agility = 5;
+ int32 criticalRatio = 6;
+ int32 criticalAttack = 7;
+}
+
+message ThoughtInfo {
+ int32 thoughtId = 1;
+}
+
+message StainedGlassStatusUpInfo {
+ int32 statusCalculationType = 1;
+ int32 hp = 2;
+ int32 attack = 3;
+ int32 vitality = 4;
+ int32 agility = 5;
+ int32 criticalRatio = 6;
+ int32 criticalAttack = 7;
+}
+
+message CostumeLotteryEffectAbilityInfo {
+ int32 abilityId = 1;
+ int32 level = 2;
+}
+
+message CostumeLotteryEffectStatusUpInfo {
+ int32 statusCalculationType = 1;
+ int32 hp = 2;
+ int32 attack = 3;
+ int32 vitality = 4;
+ int32 agility = 5;
+ int32 criticalRatio = 6;
+ int32 criticalAttack = 7;
+}
+
+message FinishBattleRequest {
+ int64 opponentPlayerId = 1;
+ bool isVictory = 2;
+}
+
+message FinishBattleResponse {
+ int32 beforePvpPoint = 1;
+ int32 beforeRank = 2;
+ int32 afterPvpPoint = 3;
+ int32 afterRank = 4;
+ int32 pvpGradeOneMatchRewardId = 5;
+ int32 pvpGradeGroupId = 6;
+ map diffUserData = 99;
+}
+
+message GetRankingRequest {
+ int32 rankFrom = 1;
+}
+
+message GetRankingResponse {
+ repeated RankingUser rankingUser = 1;
+ int32 userCount = 2;
+ int32 rankingPosition = 3;
+ map diffUserData = 99;
+}
+
+message RankingUser {
+ int32 rank = 1;
+ int64 playerId = 2;
+ string name = 3;
+ int32 pvpPoint = 4;
+ int32 deckPower = 5;
+ int32 favoriteCostumeId = 6;
+}
+
+message GetSeasonResultResponse {
+ int32 attackWinCount = 1;
+ int32 attackLoseCount = 2;
+ int32 attackPvpPoint = 3;
+ int32 defenseWinRatePermil = 4;
+ int32 defensePvpPoint = 5;
+ map diffUserData = 99;
+}
+
+message GetAttackLogListResponse {
+ repeated BattleLog attackLog = 1;
+ map diffUserData = 99;
+}
+
+message BattleLog {
+ int64 playerId = 1;
+ string name = 2;
+ int32 pvpPoint = 3;
+ int32 deckPower = 4;
+ repeated int32 deckCostumeId = 5;
+ bool isVictory = 6;
+ google.protobuf.Timestamp battleDatetime = 7;
+ int32 fluctuatedPvpPoint = 8;
+ int32 rank = 9;
+}
+
+message GetDefenseLogListResponse {
+ repeated BattleLog defenseLog = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/quest.proto b/src/proto/quest.proto
new file mode 100644
index 0000000..fba8f7b
--- /dev/null
+++ b/src/proto/quest.proto
@@ -0,0 +1,333 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Quest";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "proto/mission.proto";
+
+package apb.api.quest;
+
+service QuestService {
+ rpc UpdateMainFlowSceneProgress (UpdateMainFlowSceneProgressRequest) returns (UpdateMainFlowSceneProgressResponse);
+ rpc UpdateReplayFlowSceneProgress (UpdateReplayFlowSceneProgressRequest) returns (UpdateReplayFlowSceneProgressResponse);
+ rpc UpdateMainQuestSceneProgress (UpdateMainQuestSceneProgressRequest) returns (UpdateMainQuestSceneProgressResponse);
+ rpc UpdateExtraQuestSceneProgress (UpdateExtraQuestSceneProgressRequest) returns (UpdateExtraQuestSceneProgressResponse);
+ rpc UpdateEventQuestSceneProgress (UpdateEventQuestSceneProgressRequest) returns (UpdateEventQuestSceneProgressResponse);
+ rpc StartMainQuest (StartMainQuestRequest) returns (StartMainQuestResponse);
+ rpc RestartMainQuest (RestartMainQuestRequest) returns (RestartMainQuestResponse);
+ rpc FinishMainQuest (FinishMainQuestRequest) returns (FinishMainQuestResponse);
+ rpc StartExtraQuest (StartExtraQuestRequest) returns (StartExtraQuestResponse);
+ rpc RestartExtraQuest (RestartExtraQuestRequest) returns (RestartExtraQuestResponse);
+ rpc FinishExtraQuest (FinishExtraQuestRequest) returns (FinishExtraQuestResponse);
+ rpc StartEventQuest (StartEventQuestRequest) returns (StartEventQuestResponse);
+ rpc RestartEventQuest (RestartEventQuestRequest) returns (RestartEventQuestResponse);
+ rpc FinishEventQuest (FinishEventQuestRequest) returns (FinishEventQuestResponse);
+ rpc FinishAutoOrbit (google.protobuf.Empty) returns (FinishAutoOrbitResponse);
+ rpc SetRoute (SetRouteRequest) returns (SetRouteResponse);
+ rpc SetQuestSceneChoice (SetQuestSceneChoiceRequest) returns (SetQuestSceneChoiceResponse);
+ rpc ReceiveTowerAccumulationReward (ReceiveTowerAccumulationRewardRequest) returns (ReceiveTowerAccumulationRewardResponse);
+ rpc SkipQuest (SkipQuestRequest) returns (SkipQuestResponse);
+ rpc SkipQuestBulk (SkipQuestBulkRequest) returns (SkipQuestBulkResponse);
+ rpc SetAutoSaleSetting (SetAutoSaleSettingRequest) returns (SetAutoSaleSettingResponse);
+ rpc StartGuerrillaFreeOpen (google.protobuf.Empty) returns (StartGuerrillaFreeOpenResponse);
+ rpc ResetLimitContentQuestProgress (ResetLimitContentQuestProgressRequest) returns (ResetLimitContentQuestProgressResponse);
+ rpc ReceiveDailyQuestGroupCompleteReward (google.protobuf.Empty) returns (ReceiveDailyQuestGroupCompleteRewardResponse);
+}
+
+message UpdateMainFlowSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateMainFlowSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message UpdateReplayFlowSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateReplayFlowSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message UpdateMainQuestSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateMainQuestSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message UpdateExtraQuestSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateExtraQuestSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message UpdateEventQuestSceneProgressRequest {
+ int32 questSceneId = 1;
+}
+
+message UpdateEventQuestSceneProgressResponse {
+ map diffUserData = 99;
+}
+
+message StartMainQuestRequest {
+ int32 questId = 1;
+ bool isMainFlow = 2;
+ int32 userDeckNumber = 3;
+ bool isBattleOnly = 4;
+ int32 maxAutoOrbitCount = 5;
+ bool isReplayFlow = 6;
+ apb.api.mission.CageMeasurableValues cageMeasurableValues = 50;
+}
+
+message StartMainQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ map diffUserData = 99;
+}
+
+message BattleDropReward {
+ int32 questSceneId = 1;
+ int32 battleDropCategoryId = 2;
+ int32 battleDropEffectId = 3;
+}
+
+message RestartMainQuestRequest {
+ int32 questId = 1;
+ bool isMainFlow = 2;
+}
+
+message RestartMainQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ bytes battleBinary = 2;
+ int32 deckNumber = 3;
+ map diffUserData = 99;
+}
+
+message FinishMainQuestRequest {
+ int32 questId = 1;
+ bool isRetired = 2;
+ bool isMainFlow = 3;
+ bool isAnnihilated = 4;
+ bool isAutoOrbit = 5;
+ int32 storySkipType = 6;
+ bool isReplayFlow = 7;
+ string vt = 200;
+}
+
+message FinishMainQuestResponse {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward firstClearReward = 2;
+ repeated QuestReward missionClearReward = 3;
+ repeated QuestReward missionClearCompleteReward = 4;
+ repeated QuestReward autoOrbitResult = 5;
+ bool isBigWin = 6;
+ repeated int32 bigWinClearedQuestMissionIdList = 7;
+ repeated QuestReward replayFlowFirstClearReward = 8;
+ repeated QuestReward userStatusCampaignReward = 9;
+ QuestAutoOrbitResult autoOrbitReward = 10;
+ map diffUserData = 99;
+}
+
+message QuestReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+ int32 rewardEffectId = 4;
+ bool isAutoSale = 5;
+ bytes equipmentData = 6;
+}
+
+message QuestAutoOrbitResult {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward userStatusCampaignReward = 2;
+}
+
+message StartExtraQuestRequest {
+ int32 questId = 1;
+ int32 userDeckNumber = 2;
+}
+
+message StartExtraQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ map diffUserData = 99;
+}
+
+message RestartExtraQuestRequest {
+ int32 questId = 1;
+}
+
+message RestartExtraQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ bytes battleBinary = 2;
+ int32 deckNumber = 3;
+ map diffUserData = 99;
+}
+
+message FinishExtraQuestRequest {
+ int32 questId = 1;
+ bool isRetired = 2;
+ bool isAnnihilated = 3;
+ int32 storySkipType = 4;
+ string vt = 200;
+}
+
+message FinishExtraQuestResponse {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward firstClearReward = 2;
+ repeated QuestReward missionClearReward = 3;
+ repeated QuestReward missionClearCompleteReward = 4;
+ bool isBigWin = 5;
+ repeated int32 bigWinClearedQuestMissionIdList = 6;
+ repeated QuestReward userStatusCampaignReward = 7;
+ map diffUserData = 99;
+}
+
+message StartEventQuestRequest {
+ int32 eventQuestChapterId = 1;
+ int32 questId = 2;
+ int32 userDeckNumber = 3;
+ bool isBattleOnly = 4;
+ int32 maxAutoOrbitCount = 5;
+}
+
+message StartEventQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ map diffUserData = 99;
+}
+
+message RestartEventQuestRequest {
+ int32 eventQuestChapterId = 1;
+ int32 questId = 2;
+}
+
+message RestartEventQuestResponse {
+ repeated BattleDropReward battleDropReward = 1;
+ bytes battleBinary = 2;
+ int32 deckNumber = 3;
+ map diffUserData = 99;
+}
+
+message FinishEventQuestRequest {
+ int32 eventQuestChapterId = 1;
+ int32 questId = 2;
+ bool isRetired = 3;
+ bool isAnnihilated = 4;
+ bool isAutoOrbit = 5;
+ int32 storySkipType = 6;
+ string vt = 200;
+}
+
+message FinishEventQuestResponse {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward firstClearReward = 2;
+ repeated QuestReward missionClearReward = 3;
+ repeated QuestReward missionClearCompleteReward = 4;
+ repeated QuestReward autoOrbitResult = 5;
+ bool isBigWin = 6;
+ repeated int32 bigWinClearedQuestMissionIdList = 7;
+ repeated QuestReward userStatusCampaignReward = 8;
+ QuestAutoOrbitResult autoOrbitReward = 9;
+ map diffUserData = 99;
+}
+
+message FinishAutoOrbitResponse {
+ repeated QuestReward autoOrbitResult = 1;
+ QuestAutoOrbitResult autoOrbitReward = 2;
+ map diffUserData = 99;
+}
+
+message SetRouteRequest {
+ int32 mainQuestRouteId = 1;
+}
+
+message SetRouteResponse {
+ map diffUserData = 99;
+}
+
+message SetQuestSceneChoiceRequest {
+ int32 questSceneId = 1;
+ int32 choiceNumber = 2;
+ int32 questFlowType = 3;
+}
+
+message SetQuestSceneChoiceResponse {
+ map diffUserData = 99;
+}
+
+message ReceiveTowerAccumulationRewardRequest {
+ int32 eventQuestChapterId = 1;
+ int32 targetMissionClearCount = 2;
+}
+
+message ReceiveTowerAccumulationRewardResponse {
+ map diffUserData = 99;
+}
+
+message SkipQuestRequest {
+ int32 questId = 1;
+ int32 questType = 2;
+ int32 userDeckNumber = 3;
+ int32 skipCount = 4;
+ repeated UseEffectItem useEffectItem = 5;
+ int32 questChapterId = 6;
+}
+
+message UseEffectItem {
+ int32 consumableItemId = 1;
+ int32 count = 2;
+}
+
+message SkipQuestResponse {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward userStatusCampaignReward = 2;
+ map diffUserData = 99;
+}
+
+message SkipQuestBulkRequest {
+ repeated SkipQuestInfo skipQuestInfo = 1;
+ int32 userDeckNumber = 2;
+ repeated UseEffectItem useEffectItem = 3;
+}
+
+message SkipQuestInfo {
+ int32 questId = 1;
+ int32 questType = 2;
+ int32 questChapterId = 3;
+ int32 skipCount = 4;
+}
+
+message SkipQuestBulkResponse {
+ repeated QuestReward dropReward = 1;
+ repeated QuestReward userStatusCampaignReward = 2;
+ map diffUserData = 99;
+}
+
+message SetAutoSaleSettingRequest {
+ map autoSaleSettingItem = 1;
+}
+
+message SetAutoSaleSettingResponse {
+ map diffUserData = 99;
+}
+
+message StartGuerrillaFreeOpenResponse {
+ map diffUserData = 99;
+}
+
+message ResetLimitContentQuestProgressRequest {
+ int32 eventQuestChapterId = 1;
+ int32 questId = 2;
+}
+
+message ResetLimitContentQuestProgressResponse {
+ map diffUserData = 99;
+}
+
+message ReceiveDailyQuestGroupCompleteRewardResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/reward.proto b/src/proto/reward.proto
new file mode 100644
index 0000000..7c83961
--- /dev/null
+++ b/src/proto/reward.proto
@@ -0,0 +1,43 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Reward";
+
+import "google/protobuf/empty.proto";
+import "proto/pvp.proto";
+import "proto/data.proto";
+import "proto/bighunt.proto";
+import "proto/labyrinth.proto";
+
+package apb.api.reward;
+
+service RewardService {
+ rpc ReceivePvpReward (google.protobuf.Empty) returns (ReceivePvpRewardResponse);
+ rpc ReceiveBigHuntReward (google.protobuf.Empty) returns (ReceiveBigHuntRewardResponse);
+ rpc ReceiveLabyrinthSeasonReward (google.protobuf.Empty) returns (ReceiveLabyrinthSeasonRewardResponse);
+ rpc ReceiveMissionPassRemainingReward (google.protobuf.Empty) returns (ReceiveMissionPassRemainingRewardResponse);
+}
+
+message ReceivePvpRewardResponse {
+ apb.api.pvp.WeeklyGradeResult weeklyGradeResult = 1;
+ apb.api.pvp.SeasonRankResult seasonRankResult = 2;
+ apb.api.pvp.WeeklyRankResult weeklyRankResult = 3;
+ map diffUserData = 99;
+}
+
+message ReceiveBigHuntRewardResponse {
+ repeated apb.api.bighunt.WeeklyScoreResult weeklyScoreResult = 1;
+ repeated apb.api.bighunt.BigHuntReward weeklyScoreReward = 2;
+ bool isReceivedWeeklyScoreReward = 3;
+ repeated apb.api.bighunt.BigHuntReward lastWeekWeeklyScoreReward = 4;
+ map diffUserData = 99;
+}
+
+message ReceiveLabyrinthSeasonRewardResponse {
+ repeated apb.api.labyrinth.LabyrinthSeasonResult seasonResult = 1;
+ map diffUserData = 99;
+}
+
+message ReceiveMissionPassRemainingRewardResponse {
+ int32 rewardReceivedMissionPassId = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/shop.proto b/src/proto/shop.proto
new file mode 100644
index 0000000..53eceb8
--- /dev/null
+++ b/src/proto/shop.proto
@@ -0,0 +1,73 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Shop";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+
+package apb.api.shop;
+
+service ShopService {
+ rpc Buy (BuyRequest) returns (BuyResponse);
+ rpc RefreshUserData (RefreshRequest) returns (RefreshResponse);
+ rpc GetCesaLimit (google.protobuf.Empty) returns (GetCesaLimitResponse);
+ rpc CreatePurchaseTransaction (CreatePurchaseTransactionRequest) returns (CreatePurchaseTransactionResponse);
+ rpc PurchaseGooglePlayStoreProduct (PurchaseGooglePlayStoreProductRequest) returns (PurchaseGooglePlayStoreProductResponse);
+}
+
+message BuyRequest {
+ int32 shopId = 1;
+ map shopItems = 2;
+}
+
+message BuyResponse {
+ repeated Possession overflowPossession = 1;
+ map diffUserData = 99;
+}
+
+message Possession {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message RefreshRequest {
+ bool isGemUsed = 1;
+}
+
+message RefreshResponse {
+ map diffUserData = 99;
+}
+
+message GetCesaLimitResponse {
+ repeated CesaLimit cesaLimit = 1;
+ map diffUserData = 99;
+}
+
+message CesaLimit {
+ int32 age = 1;
+ int32 limit = 2;
+}
+
+message CreatePurchaseTransactionRequest {
+ int32 shopId = 1;
+ int32 shopItemId = 2;
+ string productId = 3;
+ string amazonUserId = 4;
+}
+
+message CreatePurchaseTransactionResponse {
+ string purchaseTransactionId = 1;
+ map diffUserData = 99;
+}
+
+message PurchaseGooglePlayStoreProductRequest {
+ string purchaseTransactionId = 1;
+ string purchaseData = 2;
+ string dataSignature = 3;
+}
+
+message PurchaseGooglePlayStoreProductResponse {
+ repeated Possession overflowPossession = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/sidestoryquest.proto b/src/proto/sidestoryquest.proto
new file mode 100644
index 0000000..48dcb12
--- /dev/null
+++ b/src/proto/sidestoryquest.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.SideStoryQuest";
+
+import "proto/data.proto";
+
+package apb.api.sidestoryquest;
+
+service SidestoryquestService {
+ rpc MoveSideStoryQuestProgress (MoveSideStoryQuestRequest) returns (MoveSideStoryQuestResponse);
+ rpc UpdateSideStoryQuestSceneProgress (UpdateSideStoryQuestSceneProgressRequest) returns (UpdateSideStoryQuestSceneProgressResponse);
+}
+
+message MoveSideStoryQuestRequest {
+ int32 sideStoryQuestId = 1;
+}
+
+message MoveSideStoryQuestResponse {
+ map diffUserData = 99;
+}
+
+message UpdateSideStoryQuestSceneProgressRequest {
+ int32 sideStoryQuestId = 1;
+ int32 sideStoryQuestSceneId = 2;
+}
+
+message UpdateSideStoryQuestSceneProgressResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/tutorial.proto b/src/proto/tutorial.proto
new file mode 100644
index 0000000..0183a21
--- /dev/null
+++ b/src/proto/tutorial.proto
@@ -0,0 +1,42 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Tutorial";
+
+import "proto/data.proto";
+import "proto/deck.proto";
+
+package apb.api.tutorial;
+
+service TutorialService {
+ rpc SetTutorialProgress (SetTutorialProgressRequest) returns (SetTutorialProgressResponse);
+ rpc SetTutorialProgressAndReplaceDeck (SetTutorialProgressAndReplaceDeckRequest) returns (SetTutorialProgressAndReplaceDeckResponse);
+}
+
+message SetTutorialProgressRequest {
+ int32 tutorialType = 1;
+ int32 progressPhase = 2;
+ int32 choiceId = 3;
+}
+
+message SetTutorialProgressResponse {
+ repeated TutorialChoiceReward tutorialChoiceReward = 1;
+ map diffUserData = 99;
+}
+
+message TutorialChoiceReward {
+ int32 possessionType = 1;
+ int32 possessionId = 2;
+ int32 count = 3;
+}
+
+message SetTutorialProgressAndReplaceDeckRequest {
+ int32 tutorialType = 1;
+ int32 progressPhase = 2;
+ int32 deckType = 3;
+ int32 userDeckNumber = 4;
+ apb.api.deck.Deck deck = 5;
+}
+
+message SetTutorialProgressAndReplaceDeckResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/user.proto b/src/proto/user.proto
new file mode 100644
index 0000000..f7655e4
--- /dev/null
+++ b/src/proto/user.proto
@@ -0,0 +1,262 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.User";
+
+import "google/protobuf/empty.proto";
+import "proto/data.proto";
+import "google/protobuf/timestamp.proto";
+
+package apb.api.user;
+
+service UserService {
+ rpc RegisterUser (RegisterUserRequest) returns (RegisterUserResponse);
+ rpc TransferUser (TransferUserRequest) returns (TransferUserResponse);
+ rpc Auth (AuthUserRequest) returns (AuthUserResponse);
+ rpc GameStart (google.protobuf.Empty) returns (GameStartResponse);
+ rpc SetUserName (SetUserNameRequest) returns (SetUserNameResponse);
+ rpc SetUserMessage (SetUserMessageRequest) returns (SetUserMessageResponse);
+ rpc SetUserFavoriteCostumeId (SetUserFavoriteCostumeIdRequest) returns (SetUserFavoriteCostumeIdResponse);
+ rpc GetUserProfile (GetUserProfileRequest) returns (GetUserProfileResponse);
+ rpc SetBirthYearMonth (SetBirthYearMonthRequest) returns (SetBirthYearMonthResponse);
+ rpc GetBirthYearMonth (google.protobuf.Empty) returns (GetBirthYearMonthResponse);
+ rpc GetChargeMoney (google.protobuf.Empty) returns (GetChargeMoneyResponse);
+ rpc SetUserSetting (SetUserSettingRequest) returns (SetUserSettingResponse);
+ rpc GetAndroidArgs (GetAndroidArgsRequest) returns (GetAndroidArgsResponse);
+ rpc GetBackupToken (GetBackupTokenRequest) returns (GetBackupTokenResponse);
+ rpc CheckTransferSetting (google.protobuf.Empty) returns (CheckTransferSettingResponse);
+ rpc SetFacebookAccount (SetFacebookAccountRequest) returns (SetFacebookAccountResponse);
+ rpc UnsetFacebookAccount (google.protobuf.Empty) returns (UnsetFacebookAccountResponse);
+ rpc SetAppleAccount (SetAppleAccountRequest) returns (SetAppleAccountResponse);
+ rpc TransferUserByFacebook (TransferUserByFacebookRequest) returns (TransferUserByFacebookResponse);
+ rpc TransferUserByApple (TransferUserByAppleRequest) returns (TransferUserByAppleResponse);
+ rpc GetUserGamePlayNote (GetUserGamePlayNoteRequest) returns (GetUserGamePlayNoteResponse);
+}
+
+message RegisterUserRequest {
+ string uuid = 1;
+ string terminalId = 2;
+ string registerSignature = 3;
+}
+
+message RegisterUserResponse {
+ int64 userId = 1;
+ string signature = 2;
+ map diffUserData = 99;
+}
+
+message TransferUserRequest {
+ string uuid = 1;
+}
+
+message TransferUserResponse {
+ int64 userId = 1;
+ string signature = 2;
+ map diffUserData = 99;
+}
+
+message AuthUserRequest {
+ string uuid = 1;
+ string signature = 2;
+ string advertisingId = 3;
+ bool isTrackingEnabled = 4;
+ UserDeviceInherent deviceInherent = 5;
+ string tr = 6;
+}
+
+message UserDeviceInherent {
+ string identifierForVendor = 1;
+ string deviceToken = 2;
+ string macAddress = 3;
+ string registrationId = 4;
+}
+
+message AuthUserResponse {
+ string sessionKey = 1;
+ google.protobuf.Timestamp expireDatetime = 2;
+ string signature = 3;
+ int64 userId = 4;
+ map diffUserData = 99;
+}
+
+message GameStartResponse {
+ map diffUserData = 99;
+}
+
+message SetUserNameRequest {
+ string name = 1;
+}
+
+message SetUserNameResponse {
+ map diffUserData = 99;
+}
+
+message SetUserMessageRequest {
+ string message = 1;
+}
+
+message SetUserMessageResponse {
+ map diffUserData = 99;
+}
+
+message SetUserFavoriteCostumeIdRequest {
+ int32 favoriteCostumeId = 1;
+}
+
+message SetUserFavoriteCostumeIdResponse {
+ map diffUserData = 99;
+}
+
+message GetUserProfileRequest {
+ int64 playerId = 1;
+}
+
+message GetUserProfileResponse {
+ int32 level = 1;
+ string name = 2;
+ int32 favoriteCostumeId = 3;
+ string message = 4;
+ bool isFriend = 5;
+ ProfileDeck latestUsedDeck = 6;
+ ProfilePvpInfo pvpInfo = 7;
+ GamePlayHistory gamePlayHistory = 8;
+ map diffUserData = 99;
+}
+
+message ProfileDeck {
+ int32 power = 1;
+ repeated ProfileDeckCharacter deckCharacter = 2;
+}
+
+message ProfileDeckCharacter {
+ int32 costumeId = 1;
+ int32 mainWeaponId = 2;
+ int32 mainWeaponLevel = 3;
+}
+
+message ProfilePvpInfo {
+ int32 currentRank = 1;
+ int32 currentGradeId = 2;
+ int32 maxSeasonRank = 3;
+}
+
+message GamePlayHistory {
+ repeated PlayHistoryItem historyItem = 1;
+ repeated PlayHistoryCategoryGraphItem historyCategoryGraphItem = 2;
+}
+
+message PlayHistoryItem {
+ int32 historyItemId = 1;
+ int64 count = 2;
+}
+
+message PlayHistoryCategoryGraphItem {
+ int32 categoryTypeId = 1;
+ int32 progressPermil = 2;
+}
+
+message SetBirthYearMonthRequest {
+ int32 birthYear = 1;
+ int32 birthMonth = 2;
+}
+
+message SetBirthYearMonthResponse {
+ map diffUserData = 99;
+}
+
+message GetBirthYearMonthResponse {
+ int32 birthYear = 1;
+ int32 birthMonth = 2;
+ map diffUserData = 99;
+}
+
+message GetChargeMoneyResponse {
+ int64 chargeMoneyThisMonth = 1;
+ map diffUserData = 99;
+}
+
+message SetUserSettingRequest {
+ bool isNotifyPurchaseAlert = 1;
+}
+
+message SetUserSettingResponse {
+ map diffUserData = 99;
+}
+
+message GetAndroidArgsRequest {
+ string uuid = 1;
+ string signature = 2;
+ UserDeviceInherent deviceInherent = 3;
+ string packageName = 4;
+}
+
+message GetAndroidArgsResponse {
+ string nonce = 1;
+ string apiKey = 2;
+ map diffUserData = 99;
+}
+
+message GetBackupTokenRequest {
+ string uuid = 1;
+}
+
+message GetBackupTokenResponse {
+ string backupToken = 1;
+ map diffUserData = 99;
+}
+
+message CheckTransferSettingResponse {
+ map diffUserData = 99;
+}
+
+message SetFacebookAccountRequest {
+ string token = 1;
+}
+
+message SetFacebookAccountResponse {
+ map diffUserData = 99;
+}
+
+message UnsetFacebookAccountResponse {
+ map diffUserData = 99;
+}
+
+message SetAppleAccountRequest {
+ string token = 1;
+}
+
+message SetAppleAccountResponse {
+ map diffUserData = 99;
+}
+
+message TransferUserByFacebookRequest {
+ string token = 1;
+ string uuid = 2;
+ string terminalId = 3;
+}
+
+message TransferUserByFacebookResponse {
+ int64 userId = 1;
+ string signature = 2;
+ map diffUserData = 99;
+}
+
+message TransferUserByAppleRequest {
+ string token = 1;
+ string uuid = 2;
+ string terminalId = 3;
+}
+
+message TransferUserByAppleResponse {
+ int64 userId = 1;
+ string signature = 2;
+ map diffUserData = 99;
+}
+
+message GetUserGamePlayNoteRequest {
+ int32 gamePlayHistoryTypeId = 1;
+}
+
+message GetUserGamePlayNoteResponse {
+ int32 progressValue = 1;
+ map diffUserData = 99;
+}
\ No newline at end of file
diff --git a/src/proto/weapon.proto b/src/proto/weapon.proto
new file mode 100644
index 0000000..0c0c60d
--- /dev/null
+++ b/src/proto/weapon.proto
@@ -0,0 +1,121 @@
+syntax = "proto3";
+
+option csharp_namespace = "Art.Framework.ApiNetwork.Grpc.Api.Weapon";
+
+import "proto/data.proto";
+
+package apb.api.weapon;
+
+service WeaponService {
+ rpc Sell (SellRequest) returns (SellResponse);
+ rpc Protect (ProtectRequest) returns (ProtectResponse);
+ rpc Unprotect (UnprotectRequest) returns (UnprotectResponse);
+ rpc EnhanceByWeapon (EnhanceByWeaponRequest) returns (EnhanceByWeaponResponse);
+ rpc EnhanceByMaterial (EnhanceByMaterialRequest) returns (EnhanceByMaterialResponse);
+ rpc EnhanceSkill (EnhanceSkillRequest) returns (EnhanceSkillResponse);
+ rpc EnhanceAbility (EnhanceAbilityRequest) returns (EnhanceAbilityResponse);
+ rpc LimitBreakByWeapon (LimitBreakByWeaponRequest) returns (LimitBreakByWeaponResponse);
+ rpc LimitBreakByMaterial (LimitBreakByMaterialRequest) returns (LimitBreakByMaterialResponse);
+ rpc Evolve (EvolveRequest) returns (EvolveResponse);
+ rpc Awaken (AwakenRequest) returns (AwakenResponse);
+}
+
+message SellRequest {
+ repeated string userWeaponUuid = 1;
+}
+
+message SellResponse {
+ map diffUserData = 99;
+}
+
+message ProtectRequest {
+ repeated string userWeaponUuid = 1;
+}
+
+message ProtectResponse {
+ map diffUserData = 99;
+}
+
+message UnprotectRequest {
+ repeated string userWeaponUuid = 1;
+}
+
+message UnprotectResponse {
+ map diffUserData = 99;
+}
+
+message EnhanceByWeaponRequest {
+ string userWeaponUuid = 1;
+ repeated string materialUserWeaponUuids = 2;
+}
+
+message EnhanceByWeaponResponse {
+ bool isGreatSuccess = 1;
+ repeated string surplusEnhanceWeapon = 2;
+ map diffUserData = 99;
+}
+
+message EnhanceByMaterialRequest {
+ string userWeaponUuid = 1;
+ map materials = 2;
+}
+
+message EnhanceByMaterialResponse {
+ bool isGreatSuccess = 1;
+ map surplusEnhanceMaterial = 2;
+ map diffUserData = 99;
+}
+
+message EnhanceSkillRequest {
+ string userWeaponUuid = 1;
+ int32 skillId = 2;
+ int32 addLevelCount = 3;
+}
+
+message EnhanceSkillResponse {
+ map diffUserData = 99;
+}
+
+message EnhanceAbilityRequest {
+ string userWeaponUuid = 1;
+ int32 abilityId = 2;
+ int32 addLevelCount = 3;
+}
+
+message EnhanceAbilityResponse {
+ map diffUserData = 99;
+}
+
+message LimitBreakByWeaponRequest {
+ string userWeaponUuid = 1;
+ repeated string materialUserWeaponUuids = 2;
+}
+
+message LimitBreakByWeaponResponse {
+ map diffUserData = 99;
+}
+
+message LimitBreakByMaterialRequest {
+ string userWeaponUuid = 1;
+ map materials = 2;
+}
+
+message LimitBreakByMaterialResponse {
+ map diffUserData = 99;
+}
+
+message EvolveRequest {
+ string userWeaponUuid = 1;
+}
+
+message EvolveResponse {
+ map diffUserData = 99;
+}
+
+message AwakenRequest {
+ string userWeaponUuid = 1;
+}
+
+message AwakenResponse {
+ map diffUserData = 99;
+}
\ No newline at end of file