syntax = "proto3"; option go_package = "git.itzana.me/strafesnet/go-grpc/maps_extended"; package maps_extended; service MapsService { rpc Get(MapId) returns (MapResponse); rpc GetList(MapIdList) returns (MapList); rpc Update(MapUpdate) returns (NullResponse); rpc Create(MapCreate) returns (MapId); rpc Delete(MapId) returns (NullResponse); rpc List(ListRequest) returns (MapList); rpc IncrementLoadCount(MapId) returns (NullResponse); } message MapIdList { repeated int64 ID = 1; } message MapId { int64 ID = 1; } message MapResponse { int64 ID = 1; string DisplayName = 2; string Creator = 3; uint32 GameID = 4; int64 Date = 5; int64 CreatedAt = 6; int64 UpdatedAt = 7; uint64 Submitter = 8; uint64 Thumbnail = 9; uint64 AssetVersion = 10; uint32 LoadCount = 11; uint32 Modes = 12; } message MapCreate { int64 ID = 1; string DisplayName = 2; string Creator = 3; uint32 GameID = 4; int64 Date = 5; // int64 CreatedAt = 6; // int64 UpdatedAt = 7; uint64 Submitter = 6; uint64 Thumbnail = 7; uint64 AssetVersion = 8; // uint32 LoadCount = 11; uint32 Modes = 9; } message MapUpdate { int64 ID = 1; optional string DisplayName = 2; optional string Creator = 3; optional uint32 GameID = 4; optional int64 Date = 5; optional uint64 Submitter = 6; optional uint64 Thumbnail = 7; optional uint64 AssetVersion = 8; optional uint32 Modes = 9; } message MapFilter { optional string DisplayName = 2; optional string Creator = 3; optional uint32 GameID = 4; optional uint64 Submitter = 5; } message MapList { repeated MapResponse Maps = 1; } message ListRequest { MapFilter Filter = 1; Pagination Page = 2; } message Pagination { uint32 Size = 1; uint32 Number = 2; } message NullResponse {}