syntax = 'proto3'; package Simple; message Book { string id = 1; uint64 read = 2; float rating = 3; string title = 4; string author = 5; string publisher = 6; // TODO: proto3 now supports optional, switch to that at some point oneof isbn { uint64 isbn_value = 7; } oneof pages { uint32 pages_value = 8; } } message Paging { uint32 total = 1; uint32 current_page = 2; } message Books { repeated Book books = 1; Paging paging = 2; }