syntax = "proto3"; package retrom; import 'models.proto'; import 'providers/igdb.proto'; service LibraryService { rpc UpdateLibrary(UpdateLibraryRequest) returns (UpdateLibraryResponse); rpc UpdateLibraryMetadata(UpdateLibraryMetadataRequest) returns (UpdateLibraryMetadataResponse); rpc DeleteLibrary(DeleteLibraryRequest) returns (DeleteLibraryResponse); } service PlatformService { rpc GetPlatforms(GetPlatformsRequest) returns (GetPlatformsResponse); } service GameService { rpc GetGames(GetGamesRequest) returns (GetGamesResponse); } service MetadataService { rpc GetGameMetadata(GetGameMetadataRequest) returns (GetGameMetadataResponse); rpc UpdateGameMetadata(UpdateGameMetadataRequest) returns (UpdateGameMetadataResponse); rpc GetPlatformMetadata(GetPlatformMetadataRequest) returns (GetPlatformMetadataResponse); rpc UpdatePlatformMetadata(UpdatePlatformMetadataRequest) returns (UpdatePlatformMetadataResponse); rpc GetIgdbSearch(GetIgdbSearchRequest) returns (GetIgdbSearchResponse); rpc GetIgdbGameSearchResults(GetIgdbGameSearchResultsRequest) returns (GetIgdbGameSearchResultsResponse); rpc GetIgdbPlatformSearchResults(GetIgdbPlatformSearchResultsRequest) returns (GetIgdbPlatformSearchResultsResponse); } message UpdateLibraryRequest {} message UpdateLibraryResponse { repeated Platform platforms_populated = 1; repeated Game games_populated = 2; repeated GameFile game_files_populated = 3; } message UpdateLibraryMetadataRequest { optional bool overwrite = 1; } message UpdateLibraryMetadataResponse { repeated GameMetadata game_metadata_populated = 1; repeated PlatformMetadata platform_metadata_populated = 2; } message GetPlatformsRequest { repeated int32 ids = 1; optional bool with_metadata = 2; } message GetPlatformsResponse { repeated Platform platforms = 1; repeated PlatformMetadata metadata = 2; } message GetGamesRequest { repeated int32 platform_ids = 1; repeated int32 ids = 2; optional bool with_metadata = 3; optional bool with_files = 4; } message GetGamesResponse { repeated Game games = 1; repeated GameMetadata metadata = 2; repeated GameFile game_files = 3; } message GetGameMetadataRequest { repeated int32 game_ids = 1; } message GetGameMetadataResponse { repeated GameMetadata metadata = 1; } message GetPlatformMetadataRequest { repeated int32 platform_ids = 1; } message GetPlatformMetadataResponse { repeated PlatformMetadata metadata = 1; } message GetIgdbGameSearchResultsRequest { IgdbGameSearchQuery query = 1; } message GetIgdbGameSearchResultsResponse { repeated NewGameMetadata metadata = 1; } message UpdateGameMetadataRequest { repeated UpdatedGameMetadata metadata = 1; } message UpdateGameMetadataResponse { repeated GameMetadata metadata_updated = 1; } message GetIgdbPlatformSearchResultsRequest { IgdbPlatformSearchQuery query = 1; } message GetIgdbPlatformSearchResultsResponse { repeated NewPlatformMetadata metadata = 1; } message UpdatePlatformMetadataRequest { repeated UpdatedPlatformMetadata metadata = 1; } message UpdatePlatformMetadataResponse { repeated PlatformMetadata metadata_updated = 1; } // Arbitrary search query for IGDB message GetIgdbSearchRequest { enum IgdbSearchType { GAME = 0; PLATFORM = 1; } IgdbSearchType search_type = 1; optional IgdbSearch search = 2; optional IgdbPagination pagination = 3; optional IgdbFilters filters = 4; optional IgdbFields fields = 5; } message IgdbSearchGameResponse { repeated NewGameMetadata games = 1; } message IgdbSearchPlatformResponse { repeated NewPlatformMetadata platforms = 1; } message GetIgdbSearchResponse { oneof search_results { IgdbSearchGameResponse game_matches = 1; IgdbSearchPlatformResponse platform_matches = 2; } } message DeleteLibraryRequest {} message DeleteLibraryResponse {}