gRPC API reference
May 13, 2026 · View on GitHub
Proto package: game.v1
Java package: com.nekgamebling.game.v1
The engine exposes 5 gRPC services. A pre-built client JAR is published on tag pushes — see Client JAR at the bottom.
Services
GameService— game catalogue and session launchProviderService— game provider managementCollectionService— game collections / categoriesAggregatorService— aggregator configurationFreespinService— freespin bonuses
GameService
service GameService {
rpc Save(SaveGameCommand) returns (Empty);
rpc Find(FindGameQuery) returns (FindGameQuery.Result);
rpc FindAll(FindAllGameQuery) returns (FindAllGameQuery.Result);
rpc Batch(BatchGameQuery) returns (BatchGameQuery.Result);
rpc UpdateImage(UpdateGameImageCommand) returns (Empty);
rpc Play(PlayGameCommand) returns (PlayGameCommand.Result);
rpc OpenDemo(OpenDemoQuery) returns (OpenDemoQuery.Result);
rpc AddFavourite(GameFavouriteCommand) returns (Empty);
rpc RemoveFavourite(GameFavouriteCommand) returns (Empty);
}
Play (open real-money session)
message PlayGameCommand {
string identity = 1; // Game identifier
string player_id = 2; // Your player ID
string locale = 3; // Locale (e.g., "en", "de")
PlatformDto platform = 4; // DESKTOP, MOBILE, DOWNLOAD
string currency = 5; // Currency code (e.g., "EUR")
optional int64 max_spin_place_amount = 6; // Max bet limit for player
message Result {
string launch_url = 1; // URL to launch the game
}
}
OpenDemo (demo game launch)
message OpenDemoQuery {
string identity = 1; // Game identifier
string currency = 2; // Currency code
string locale = 3; // Locale
PlatformDto platform = 4; // Platform type
string lobby_url = 5; // Return URL after game exit
message Result {
string launch_url = 1; // Demo game URL
}
}
FindAll (list with filter and pagination)
message GameFilter {
string query = 1;
optional bool active = 2;
optional string provider_identity = 3;
repeated string tags = 4;
optional bool bonus_bet_enable = 5;
optional bool bonus_wagering_enable = 6;
optional bool free_spin_enable = 7;
optional bool free_chip_enable = 8;
optional bool jackpot_enable = 9;
optional bool demo_enable = 10;
optional bool bonus_buy_enable = 11;
}
message FindAllGameQuery {
GameFilter filter = 1;
int32 page_num = 2;
int32 page_size = 3;
message Result {
repeated Item items = 1; // Games with provider info
repeated ProviderDto providers = 2;
repeated AggregatorDto aggregators = 3;
repeated CollectionDto collections = 4;
int32 total_items = 5;
}
}
UpdateImage
message UpdateGameImageCommand {
string identity = 1; // Game identifier
string key = 2; // Image key (e.g., "thumbnail", "banner")
bytes file = 3; // Image binary data
string extension = 4; // File extension (e.g., "png", "jpg")
}
ProviderService
service ProviderService {
rpc Save(ProviderDto) returns (Empty);
rpc Find(FindProviderQuery) returns (FindProviderQuery.Result);
rpc FindAll(FindAllProviderQuery) returns (FindAllProviderQuery.Result);
rpc UpdateImage(UpdateProviderImageCommand) returns (Empty);
}
message FindProviderQuery {
string identity = 1;
message Result {
ProviderDto item = 1;
AggregatorDto aggregator = 2;
int32 active_game_count = 3;
int32 deactivate_game_count = 4;
}
}
message FindAllProviderQuery {
string query = 1;
optional bool active = 2;
optional string aggregator_identity = 3;
int32 page_num = 4;
int32 page_size = 5;
}
CollectionService
service CollectionService {
rpc Save(CollectionDto) returns (Empty);
rpc Find(FindCollectionQuery) returns (FindCollectionQuery.Result);
rpc FindAll(FindAllCollectionQuery) returns (FindAllCollectionQuery.Result);
rpc UpdateGames(UpdateCollectionGamesCommand) returns (Empty);
rpc UpdateImage(UpdateCollectionImageCommand) returns (Empty);
}
message UpdateCollectionGamesCommand {
string identity = 1;
repeated string add_games = 2;
repeated string remove_games = 3;
}
message CollectionDto {
string identity = 1;
map<string, string> name = 2; // {"en": "Popular", "de": "Beliebt"}
map<string, string> images = 3;
bool active = 4;
int32 order = 5;
}
AggregatorService
service AggregatorService {
rpc Save(AggregatorDto) returns (Empty);
rpc Find(FindAggregatorQuery) returns (AggregatorDto);
rpc FindAll(FindAllAggregatorQuery) returns (FindAllAggregatorResult);
}
message AggregatorDto {
string identity = 1;
string integration = 2; // ONEGAMEHUB, PRAGMATIC, PATEPLAY
google.protobuf.Struct config = 3;
bool active = 4;
}
message FindAllAggregatorQuery {
string query = 1;
optional bool active = 2;
optional string integration = 3;
int32 page_num = 4;
int32 page_size = 5;
}
FreespinService
service FreespinService {
rpc GetPreset(GetFreespinPresetQuery) returns (GetFreespinPresetQuery.Result);
rpc Create(CreateFreespinCommand) returns (Empty);
rpc Cancel(CancelFreespinCommand) returns (Empty);
}
message CreateFreespinCommand {
string game_identity = 1;
string player_id = 2;
string reference_id = 3; // Your reference ID
string currency = 4;
string start_at = 5; // ISO datetime
string end_at = 6; // ISO datetime
google.protobuf.Struct preset_values = 7;
}
message GetFreespinPresetQuery {
string game_identity = 1;
message Result {
google.protobuf.Struct preset = 1;
}
}
Shared DTOs
GameDto
message GameDto {
string identity = 1;
string name = 2;
string provider_identity = 3;
repeated string collection_identities = 4;
bool bonus_bet_enable = 5;
bool bonus_wagering_enable = 6;
repeated string tags = 7;
bool active = 8;
map<string, string> images = 9;
int32 order = 10;
string symbol = 11; // Aggregator game symbol
string integration = 12;
bool free_spin_enable = 14;
bool free_chip_enable = 15;
bool jackpot_enable = 16;
bool demo_enable = 17;
bool bonus_buy_enable = 18;
repeated string locales = 19;
repeated PlatformDto platforms = 20;
int32 play_lines = 21;
}
ProviderDto
message ProviderDto {
string identity = 1;
string name = 2;
map<string, string> images = 3;
int32 order = 4;
bool active = 5;
string aggregator_identity = 6;
}
PlatformDto
enum PlatformDto {
PLATFORM_UNSPECIFIED = 0;
PLATFORM_DESKTOP = 1;
PLATFORM_MOBILE = 2;
PLATFORM_DOWNLOAD = 3;
}
Client JAR
A gRPC client JAR is published to GitHub Packages on tag pushes (v*):
./gradlew grpcClientJar grpcClientSourcesJar \
-PgrpcClientVersion=1.0.0
Maven coordinates:
com.nekgamebling:game-grpc-client:1.0.0
CI workflow: .github/workflows/publish-grpc-client.yml.