nakama_rust/nakama/
api.rs

1
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Account {
4    
5    #[prost(message, optional, tag = "1")]
6    pub user: ::core::option::Option<User>,
7    
8    #[prost(string, tag = "2")]
9    pub wallet: ::prost::alloc::string::String,
10    
11    #[prost(string, tag = "3")]
12    pub email: ::prost::alloc::string::String,
13    
14    #[prost(message, repeated, tag = "4")]
15    pub devices: ::prost::alloc::vec::Vec<AccountDevice>,
16    
17    #[prost(string, tag = "5")]
18    pub custom_id: ::prost::alloc::string::String,
19    
20    #[prost(message, optional, tag = "6")]
21    pub verify_time: ::core::option::Option<::prost_types::Timestamp>,
22    
23    #[prost(message, optional, tag = "7")]
24    pub disable_time: ::core::option::Option<::prost_types::Timestamp>,
25}
26
27#[derive(Clone, PartialEq, ::prost::Message)]
28pub struct AccountRefresh {
29    
30    #[prost(string, tag = "1")]
31    pub token: ::prost::alloc::string::String,
32    
33    #[prost(map = "string, string", tag = "2")]
34    pub vars:
35        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
36}
37
38#[derive(Clone, PartialEq, ::prost::Message)]
39pub struct AccountApple {
40    
41    #[prost(string, tag = "1")]
42    pub token: ::prost::alloc::string::String,
43    
44    #[prost(map = "string, string", tag = "2")]
45    pub vars:
46        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
47}
48
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct AccountCustom {
51    
52    #[prost(string, tag = "1")]
53    pub id: ::prost::alloc::string::String,
54    
55    #[prost(map = "string, string", tag = "2")]
56    pub vars:
57        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
58}
59
60#[derive(Clone, PartialEq, ::prost::Message)]
61pub struct AccountDevice {
62    
63    #[prost(string, tag = "1")]
64    pub id: ::prost::alloc::string::String,
65    
66    #[prost(map = "string, string", tag = "2")]
67    pub vars:
68        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
69}
70
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct AccountEmail {
73    
74    #[prost(string, tag = "1")]
75    pub email: ::prost::alloc::string::String,
76    
77    
78    
79    #[prost(string, tag = "2")]
80    pub password: ::prost::alloc::string::String,
81    
82    #[prost(map = "string, string", tag = "3")]
83    pub vars:
84        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
85}
86
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct AccountFacebook {
89    
90    #[prost(string, tag = "1")]
91    pub token: ::prost::alloc::string::String,
92    
93    #[prost(map = "string, string", tag = "2")]
94    pub vars:
95        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
96}
97
98#[derive(Clone, PartialEq, ::prost::Message)]
99pub struct AccountFacebookInstantGame {
100    
101    #[prost(string, tag = "1")]
102    pub signed_player_info: ::prost::alloc::string::String,
103    
104    #[prost(map = "string, string", tag = "2")]
105    pub vars:
106        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
107}
108
109
110
111#[derive(Clone, PartialEq, ::prost::Message)]
112pub struct AccountGameCenter {
113    
114    #[prost(string, tag = "1")]
115    pub player_id: ::prost::alloc::string::String,
116    
117    #[prost(string, tag = "2")]
118    pub bundle_id: ::prost::alloc::string::String,
119    
120    #[prost(int64, tag = "3")]
121    pub timestamp_seconds: i64,
122    
123    #[prost(string, tag = "4")]
124    pub salt: ::prost::alloc::string::String,
125    
126    #[prost(string, tag = "5")]
127    pub signature: ::prost::alloc::string::String,
128    
129    #[prost(string, tag = "6")]
130    pub public_key_url: ::prost::alloc::string::String,
131    
132    #[prost(map = "string, string", tag = "7")]
133    pub vars:
134        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
135}
136
137#[derive(Clone, PartialEq, ::prost::Message)]
138pub struct AccountGoogle {
139    
140    #[prost(string, tag = "1")]
141    pub token: ::prost::alloc::string::String,
142    
143    #[prost(map = "string, string", tag = "2")]
144    pub vars:
145        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
146}
147
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct AccountSteam {
150    
151    #[prost(string, tag = "1")]
152    pub token: ::prost::alloc::string::String,
153    
154    #[prost(map = "string, string", tag = "2")]
155    pub vars:
156        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
157}
158
159#[derive(Clone, PartialEq, ::prost::Message)]
160pub struct AddFriendsRequest {
161    
162    #[prost(string, repeated, tag = "1")]
163    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
164    
165    #[prost(string, repeated, tag = "2")]
166    pub usernames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
167}
168
169#[derive(Clone, PartialEq, ::prost::Message)]
170pub struct AddGroupUsersRequest {
171    
172    #[prost(string, tag = "1")]
173    pub group_id: ::prost::alloc::string::String,
174    
175    #[prost(string, repeated, tag = "2")]
176    pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
177}
178
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct SessionRefreshRequest {
181    
182    #[prost(string, tag = "1")]
183    pub token: ::prost::alloc::string::String,
184    
185    #[prost(map = "string, string", tag = "2")]
186    pub vars:
187        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
188}
189
190#[derive(Clone, PartialEq, ::prost::Message)]
191pub struct AuthenticateAppleRequest {
192    
193    #[prost(message, optional, tag = "1")]
194    pub account: ::core::option::Option<AccountApple>,
195    
196    #[prost(message, optional, tag = "2")]
197    pub create: ::core::option::Option<bool>,
198    
199    #[prost(string, tag = "3")]
200    pub username: ::prost::alloc::string::String,
201}
202
203#[derive(Clone, PartialEq, ::prost::Message)]
204pub struct AuthenticateCustomRequest {
205    
206    #[prost(message, optional, tag = "1")]
207    pub account: ::core::option::Option<AccountCustom>,
208    
209    #[prost(message, optional, tag = "2")]
210    pub create: ::core::option::Option<bool>,
211    
212    #[prost(string, tag = "3")]
213    pub username: ::prost::alloc::string::String,
214}
215
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct AuthenticateDeviceRequest {
218    
219    #[prost(message, optional, tag = "1")]
220    pub account: ::core::option::Option<AccountDevice>,
221    
222    #[prost(message, optional, tag = "2")]
223    pub create: ::core::option::Option<bool>,
224    
225    #[prost(string, tag = "3")]
226    pub username: ::prost::alloc::string::String,
227}
228
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct AuthenticateEmailRequest {
231    
232    #[prost(message, optional, tag = "1")]
233    pub account: ::core::option::Option<AccountEmail>,
234    
235    #[prost(message, optional, tag = "2")]
236    pub create: ::core::option::Option<bool>,
237    
238    #[prost(string, tag = "3")]
239    pub username: ::prost::alloc::string::String,
240}
241
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct AuthenticateFacebookRequest {
244    
245    #[prost(message, optional, tag = "1")]
246    pub account: ::core::option::Option<AccountFacebook>,
247    
248    #[prost(message, optional, tag = "2")]
249    pub create: ::core::option::Option<bool>,
250    
251    #[prost(string, tag = "3")]
252    pub username: ::prost::alloc::string::String,
253    
254    #[prost(message, optional, tag = "4")]
255    pub sync: ::core::option::Option<bool>,
256}
257
258#[derive(Clone, PartialEq, ::prost::Message)]
259pub struct AuthenticateFacebookInstantGameRequest {
260    
261    #[prost(message, optional, tag = "1")]
262    pub account: ::core::option::Option<AccountFacebookInstantGame>,
263    
264    #[prost(message, optional, tag = "2")]
265    pub create: ::core::option::Option<bool>,
266    
267    #[prost(string, tag = "3")]
268    pub username: ::prost::alloc::string::String,
269}
270
271#[derive(Clone, PartialEq, ::prost::Message)]
272pub struct AuthenticateGameCenterRequest {
273    
274    #[prost(message, optional, tag = "1")]
275    pub account: ::core::option::Option<AccountGameCenter>,
276    
277    #[prost(message, optional, tag = "2")]
278    pub create: ::core::option::Option<bool>,
279    
280    #[prost(string, tag = "3")]
281    pub username: ::prost::alloc::string::String,
282}
283
284#[derive(Clone, PartialEq, ::prost::Message)]
285pub struct AuthenticateGoogleRequest {
286    
287    #[prost(message, optional, tag = "1")]
288    pub account: ::core::option::Option<AccountGoogle>,
289    
290    #[prost(message, optional, tag = "2")]
291    pub create: ::core::option::Option<bool>,
292    
293    #[prost(string, tag = "3")]
294    pub username: ::prost::alloc::string::String,
295}
296
297#[derive(Clone, PartialEq, ::prost::Message)]
298pub struct AuthenticateSteamRequest {
299    
300    #[prost(message, optional, tag = "1")]
301    pub account: ::core::option::Option<AccountSteam>,
302    
303    #[prost(message, optional, tag = "2")]
304    pub create: ::core::option::Option<bool>,
305    
306    #[prost(string, tag = "3")]
307    pub username: ::prost::alloc::string::String,
308}
309
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct BanGroupUsersRequest {
312    
313    #[prost(string, tag = "1")]
314    pub group_id: ::prost::alloc::string::String,
315    
316    #[prost(string, repeated, tag = "2")]
317    pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
318}
319
320#[derive(Clone, PartialEq, ::prost::Message)]
321pub struct BlockFriendsRequest {
322    
323    #[prost(string, repeated, tag = "1")]
324    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
325    
326    #[prost(string, repeated, tag = "2")]
327    pub usernames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
328}
329
330#[derive(Clone, PartialEq, ::prost::Message)]
331pub struct ChannelMessage {
332    
333    #[prost(string, tag = "1")]
334    pub channel_id: ::prost::alloc::string::String,
335    
336    #[prost(string, tag = "2")]
337    pub message_id: ::prost::alloc::string::String,
338    
339    #[prost(message, optional, tag = "3")]
340    pub code: ::core::option::Option<i32>,
341    
342    #[prost(string, tag = "4")]
343    pub sender_id: ::prost::alloc::string::String,
344    
345    #[prost(string, tag = "5")]
346    pub username: ::prost::alloc::string::String,
347    
348    #[prost(string, tag = "6")]
349    pub content: ::prost::alloc::string::String,
350    
351    #[prost(message, optional, tag = "7")]
352    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
353    
354    #[prost(message, optional, tag = "8")]
355    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
356    
357    #[prost(message, optional, tag = "9")]
358    pub persistent: ::core::option::Option<bool>,
359    
360    #[prost(string, tag = "10")]
361    pub room_name: ::prost::alloc::string::String,
362    
363    #[prost(string, tag = "11")]
364    pub group_id: ::prost::alloc::string::String,
365    
366    #[prost(string, tag = "12")]
367    pub user_id_one: ::prost::alloc::string::String,
368    
369    #[prost(string, tag = "13")]
370    pub user_id_two: ::prost::alloc::string::String,
371}
372
373#[derive(Clone, PartialEq, ::prost::Message)]
374pub struct ChannelMessageList {
375    
376    #[prost(message, repeated, tag = "1")]
377    pub messages: ::prost::alloc::vec::Vec<ChannelMessage>,
378    
379    #[prost(string, tag = "2")]
380    pub next_cursor: ::prost::alloc::string::String,
381    
382    #[prost(string, tag = "3")]
383    pub prev_cursor: ::prost::alloc::string::String,
384    
385    #[prost(string, tag = "4")]
386    pub cacheable_cursor: ::prost::alloc::string::String,
387}
388
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct CreateGroupRequest {
391    
392    #[prost(string, tag = "1")]
393    pub name: ::prost::alloc::string::String,
394    
395    #[prost(string, tag = "2")]
396    pub description: ::prost::alloc::string::String,
397    
398    #[prost(string, tag = "3")]
399    pub lang_tag: ::prost::alloc::string::String,
400    
401    #[prost(string, tag = "4")]
402    pub avatar_url: ::prost::alloc::string::String,
403    
404    #[prost(bool, tag = "5")]
405    pub open: bool,
406    
407    #[prost(int32, tag = "6")]
408    pub max_count: i32,
409}
410
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct DeleteFriendsRequest {
413    
414    #[prost(string, repeated, tag = "1")]
415    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
416    
417    #[prost(string, repeated, tag = "2")]
418    pub usernames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
419}
420
421#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct DeleteGroupRequest {
423    
424    #[prost(string, tag = "1")]
425    pub group_id: ::prost::alloc::string::String,
426}
427
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct DeleteLeaderboardRecordRequest {
430    
431    #[prost(string, tag = "1")]
432    pub leaderboard_id: ::prost::alloc::string::String,
433}
434
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct DeleteNotificationsRequest {
437    
438    #[prost(string, repeated, tag = "1")]
439    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
440}
441
442#[derive(Clone, PartialEq, ::prost::Message)]
443pub struct DeleteStorageObjectId {
444    
445    #[prost(string, tag = "1")]
446    pub collection: ::prost::alloc::string::String,
447    
448    #[prost(string, tag = "2")]
449    pub key: ::prost::alloc::string::String,
450    
451    #[prost(string, tag = "3")]
452    pub version: ::prost::alloc::string::String,
453}
454
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct DeleteStorageObjectsRequest {
457    
458    #[prost(message, repeated, tag = "1")]
459    pub object_ids: ::prost::alloc::vec::Vec<DeleteStorageObjectId>,
460}
461
462#[derive(Clone, PartialEq, ::prost::Message)]
463pub struct Event {
464    
465    #[prost(string, tag = "1")]
466    pub name: ::prost::alloc::string::String,
467    
468    #[prost(map = "string, string", tag = "2")]
469    pub properties:
470        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
471    
472    #[prost(message, optional, tag = "3")]
473    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
474    
475    #[prost(bool, tag = "4")]
476    pub external: bool,
477}
478
479#[derive(Clone, PartialEq, ::prost::Message)]
480pub struct Friend {
481    
482    #[prost(message, optional, tag = "1")]
483    pub user: ::core::option::Option<User>,
484    
485    
486    
487    #[prost(message, optional, tag = "2")]
488    pub state: ::core::option::Option<i32>,
489    
490    #[prost(message, optional, tag = "3")]
491    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
492}
493
494pub mod friend {
495    
496    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
497    #[repr(i32)]
498    pub enum State {
499        
500        Friend = 0,
501        
502        InviteSent = 1,
503        
504        InviteReceived = 2,
505        
506        Blocked = 3,
507    }
508}
509
510#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct FriendList {
512    
513    #[prost(message, repeated, tag = "1")]
514    pub friends: ::prost::alloc::vec::Vec<Friend>,
515    
516    #[prost(string, tag = "2")]
517    pub cursor: ::prost::alloc::string::String,
518}
519
520#[derive(Clone, PartialEq, ::prost::Message)]
521pub struct GetUsersRequest {
522    
523    #[prost(string, repeated, tag = "1")]
524    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
525    
526    #[prost(string, repeated, tag = "2")]
527    pub usernames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
528    
529    #[prost(string, repeated, tag = "3")]
530    pub facebook_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
531}
532
533#[derive(Clone, PartialEq, ::prost::Message)]
534pub struct Group {
535    
536    #[prost(string, tag = "1")]
537    pub id: ::prost::alloc::string::String,
538    
539    #[prost(string, tag = "2")]
540    pub creator_id: ::prost::alloc::string::String,
541    
542    #[prost(string, tag = "3")]
543    pub name: ::prost::alloc::string::String,
544    
545    #[prost(string, tag = "4")]
546    pub description: ::prost::alloc::string::String,
547    
548    #[prost(string, tag = "5")]
549    pub lang_tag: ::prost::alloc::string::String,
550    
551    #[prost(string, tag = "6")]
552    pub metadata: ::prost::alloc::string::String,
553    
554    #[prost(string, tag = "7")]
555    pub avatar_url: ::prost::alloc::string::String,
556    
557    #[prost(message, optional, tag = "8")]
558    pub open: ::core::option::Option<bool>,
559    
560    #[prost(int32, tag = "9")]
561    pub edge_count: i32,
562    
563    #[prost(int32, tag = "10")]
564    pub max_count: i32,
565    
566    #[prost(message, optional, tag = "11")]
567    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
568    
569    #[prost(message, optional, tag = "12")]
570    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
571}
572
573#[derive(Clone, PartialEq, ::prost::Message)]
574pub struct GroupList {
575    
576    #[prost(message, repeated, tag = "1")]
577    pub groups: ::prost::alloc::vec::Vec<Group>,
578    
579    #[prost(string, tag = "2")]
580    pub cursor: ::prost::alloc::string::String,
581}
582
583#[derive(Clone, PartialEq, ::prost::Message)]
584pub struct GroupUserList {
585    
586    #[prost(message, repeated, tag = "1")]
587    pub group_users: ::prost::alloc::vec::Vec<group_user_list::GroupUser>,
588    
589    #[prost(string, tag = "2")]
590    pub cursor: ::prost::alloc::string::String,
591}
592
593pub mod group_user_list {
594    
595    #[derive(Clone, PartialEq, ::prost::Message)]
596    pub struct GroupUser {
597        
598        #[prost(message, optional, tag = "1")]
599        pub user: ::core::option::Option<super::User>,
600        
601        #[prost(message, optional, tag = "2")]
602        pub state: ::core::option::Option<i32>,
603    }
604    
605    pub mod group_user {
606        
607        #[derive(
608            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
609        )]
610        #[repr(i32)]
611        pub enum State {
612            
613            Superadmin = 0,
614            
615            Admin = 1,
616            
617            Member = 2,
618            
619            JoinRequest = 3,
620        }
621    }
622}
623
624#[derive(Clone, PartialEq, ::prost::Message)]
625pub struct ImportFacebookFriendsRequest {
626    
627    #[prost(message, optional, tag = "1")]
628    pub account: ::core::option::Option<AccountFacebook>,
629    
630    #[prost(message, optional, tag = "2")]
631    pub reset: ::core::option::Option<bool>,
632}
633
634#[derive(Clone, PartialEq, ::prost::Message)]
635pub struct JoinGroupRequest {
636    
637    #[prost(string, tag = "1")]
638    pub group_id: ::prost::alloc::string::String,
639}
640
641#[derive(Clone, PartialEq, ::prost::Message)]
642pub struct JoinTournamentRequest {
643    
644    #[prost(string, tag = "1")]
645    pub tournament_id: ::prost::alloc::string::String,
646}
647
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct KickGroupUsersRequest {
650    
651    #[prost(string, tag = "1")]
652    pub group_id: ::prost::alloc::string::String,
653    
654    #[prost(string, repeated, tag = "2")]
655    pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
656}
657
658#[derive(Clone, PartialEq, ::prost::Message)]
659pub struct LeaderboardRecord {
660    
661    #[prost(string, tag = "1")]
662    pub leaderboard_id: ::prost::alloc::string::String,
663    
664    #[prost(string, tag = "2")]
665    pub owner_id: ::prost::alloc::string::String,
666    
667    #[prost(message, optional, tag = "3")]
668    pub username: ::core::option::Option<::prost::alloc::string::String>,
669    
670    #[prost(int64, tag = "4")]
671    pub score: i64,
672    
673    #[prost(int64, tag = "5")]
674    pub subscore: i64,
675    
676    #[prost(int32, tag = "6")]
677    pub num_score: i32,
678    
679    #[prost(string, tag = "7")]
680    pub metadata: ::prost::alloc::string::String,
681    
682    #[prost(message, optional, tag = "8")]
683    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
684    
685    #[prost(message, optional, tag = "9")]
686    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
687    
688    #[prost(message, optional, tag = "10")]
689    pub expiry_time: ::core::option::Option<::prost_types::Timestamp>,
690    
691    #[prost(int64, tag = "11")]
692    pub rank: i64,
693    
694    #[prost(uint32, tag = "12")]
695    pub max_num_score: u32,
696}
697
698#[derive(Clone, PartialEq, ::prost::Message)]
699pub struct LeaderboardRecordList {
700    
701    #[prost(message, repeated, tag = "1")]
702    pub records: ::prost::alloc::vec::Vec<LeaderboardRecord>,
703    
704    #[prost(message, repeated, tag = "2")]
705    pub owner_records: ::prost::alloc::vec::Vec<LeaderboardRecord>,
706    
707    #[prost(string, tag = "3")]
708    pub next_cursor: ::prost::alloc::string::String,
709    
710    #[prost(string, tag = "4")]
711    pub prev_cursor: ::prost::alloc::string::String,
712}
713
714#[derive(Clone, PartialEq, ::prost::Message)]
715pub struct LeaveGroupRequest {
716    
717    #[prost(string, tag = "1")]
718    pub group_id: ::prost::alloc::string::String,
719}
720
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct LinkFacebookRequest {
723    
724    #[prost(message, optional, tag = "1")]
725    pub account: ::core::option::Option<AccountFacebook>,
726    
727    #[prost(message, optional, tag = "4")]
728    pub sync: ::core::option::Option<bool>,
729}
730
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct ListChannelMessagesRequest {
733    
734    #[prost(string, tag = "1")]
735    pub channel_id: ::prost::alloc::string::String,
736    
737    #[prost(message, optional, tag = "2")]
738    pub limit: ::core::option::Option<i32>,
739    
740    #[prost(message, optional, tag = "3")]
741    pub forward: ::core::option::Option<bool>,
742    
743    #[prost(string, tag = "4")]
744    pub cursor: ::prost::alloc::string::String,
745}
746
747#[derive(Clone, PartialEq, ::prost::Message)]
748pub struct ListFriendsRequest {
749    
750    #[prost(message, optional, tag = "1")]
751    pub limit: ::core::option::Option<i32>,
752    
753    #[prost(message, optional, tag = "2")]
754    pub state: ::core::option::Option<i32>,
755    
756    #[prost(string, tag = "3")]
757    pub cursor: ::prost::alloc::string::String,
758}
759
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct ListGroupsRequest {
762    
763    #[prost(string, tag = "1")]
764    pub name: ::prost::alloc::string::String,
765    
766    #[prost(string, tag = "2")]
767    pub cursor: ::prost::alloc::string::String,
768    
769    #[prost(message, optional, tag = "3")]
770    pub limit: ::core::option::Option<i32>,
771}
772
773#[derive(Clone, PartialEq, ::prost::Message)]
774pub struct ListGroupUsersRequest {
775    
776    #[prost(string, tag = "1")]
777    pub group_id: ::prost::alloc::string::String,
778    
779    #[prost(message, optional, tag = "2")]
780    pub limit: ::core::option::Option<i32>,
781    
782    #[prost(message, optional, tag = "3")]
783    pub state: ::core::option::Option<i32>,
784    
785    #[prost(string, tag = "4")]
786    pub cursor: ::prost::alloc::string::String,
787}
788
789#[derive(Clone, PartialEq, ::prost::Message)]
790pub struct ListLeaderboardRecordsAroundOwnerRequest {
791    
792    #[prost(string, tag = "1")]
793    pub leaderboard_id: ::prost::alloc::string::String,
794    
795    #[prost(message, optional, tag = "2")]
796    pub limit: ::core::option::Option<u32>,
797    
798    #[prost(string, tag = "3")]
799    pub owner_id: ::prost::alloc::string::String,
800    
801    #[prost(message, optional, tag = "4")]
802    pub expiry: ::core::option::Option<i64>,
803}
804
805#[derive(Clone, PartialEq, ::prost::Message)]
806pub struct ListLeaderboardRecordsRequest {
807    
808    #[prost(string, tag = "1")]
809    pub leaderboard_id: ::prost::alloc::string::String,
810    
811    #[prost(string, repeated, tag = "2")]
812    pub owner_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
813    
814    #[prost(message, optional, tag = "3")]
815    pub limit: ::core::option::Option<i32>,
816    
817    #[prost(string, tag = "4")]
818    pub cursor: ::prost::alloc::string::String,
819    
820    #[prost(message, optional, tag = "5")]
821    pub expiry: ::core::option::Option<i64>,
822}
823
824#[derive(Clone, PartialEq, ::prost::Message)]
825pub struct ListMatchesRequest {
826    
827    #[prost(message, optional, tag = "1")]
828    pub limit: ::core::option::Option<i32>,
829    
830    #[prost(message, optional, tag = "2")]
831    pub authoritative: ::core::option::Option<bool>,
832    
833    #[prost(message, optional, tag = "3")]
834    pub label: ::core::option::Option<::prost::alloc::string::String>,
835    
836    #[prost(message, optional, tag = "4")]
837    pub min_size: ::core::option::Option<i32>,
838    
839    #[prost(message, optional, tag = "5")]
840    pub max_size: ::core::option::Option<i32>,
841    
842    #[prost(message, optional, tag = "6")]
843    pub query: ::core::option::Option<::prost::alloc::string::String>,
844}
845
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct ListNotificationsRequest {
848    
849    #[prost(message, optional, tag = "1")]
850    pub limit: ::core::option::Option<i32>,
851    
852    
853    
854    #[prost(string, tag = "2")]
855    pub cacheable_cursor: ::prost::alloc::string::String,
856}
857
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct ListStorageObjectsRequest {
860    
861    #[prost(string, tag = "1")]
862    pub user_id: ::prost::alloc::string::String,
863    
864    #[prost(string, tag = "2")]
865    pub collection: ::prost::alloc::string::String,
866    
867    #[prost(message, optional, tag = "3")]
868    pub limit: ::core::option::Option<i32>,
869    
870    
871    
872    #[prost(string, tag = "4")]
873    pub cursor: ::prost::alloc::string::String,
874}
875
876#[derive(Clone, PartialEq, ::prost::Message)]
877pub struct ListTournamentRecordsAroundOwnerRequest {
878    
879    #[prost(string, tag = "1")]
880    pub tournament_id: ::prost::alloc::string::String,
881    
882    #[prost(message, optional, tag = "2")]
883    pub limit: ::core::option::Option<u32>,
884    
885    #[prost(string, tag = "3")]
886    pub owner_id: ::prost::alloc::string::String,
887    
888    #[prost(message, optional, tag = "4")]
889    pub expiry: ::core::option::Option<i64>,
890}
891
892#[derive(Clone, PartialEq, ::prost::Message)]
893pub struct ListTournamentRecordsRequest {
894    
895    #[prost(string, tag = "1")]
896    pub tournament_id: ::prost::alloc::string::String,
897    
898    #[prost(string, repeated, tag = "2")]
899    pub owner_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
900    
901    #[prost(message, optional, tag = "3")]
902    pub limit: ::core::option::Option<i32>,
903    
904    #[prost(string, tag = "4")]
905    pub cursor: ::prost::alloc::string::String,
906    
907    #[prost(message, optional, tag = "5")]
908    pub expiry: ::core::option::Option<i64>,
909}
910
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct ListTournamentsRequest {
913    
914    #[prost(message, optional, tag = "1")]
915    pub category_start: ::core::option::Option<u32>,
916    
917    #[prost(message, optional, tag = "2")]
918    pub category_end: ::core::option::Option<u32>,
919    
920    #[prost(message, optional, tag = "3")]
921    pub start_time: ::core::option::Option<u32>,
922    
923    #[prost(message, optional, tag = "4")]
924    pub end_time: ::core::option::Option<u32>,
925    
926    #[prost(message, optional, tag = "6")]
927    pub limit: ::core::option::Option<i32>,
928    
929    #[prost(string, tag = "8")]
930    pub cursor: ::prost::alloc::string::String,
931}
932
933#[derive(Clone, PartialEq, ::prost::Message)]
934pub struct ListUserGroupsRequest {
935    
936    #[prost(string, tag = "1")]
937    pub user_id: ::prost::alloc::string::String,
938    
939    #[prost(message, optional, tag = "2")]
940    pub limit: ::core::option::Option<i32>,
941    
942    #[prost(message, optional, tag = "3")]
943    pub state: ::core::option::Option<i32>,
944    
945    #[prost(string, tag = "4")]
946    pub cursor: ::prost::alloc::string::String,
947}
948
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct Match {
951    
952    #[prost(string, tag = "1")]
953    pub match_id: ::prost::alloc::string::String,
954    
955    #[prost(bool, tag = "2")]
956    pub authoritative: bool,
957    
958    #[prost(message, optional, tag = "3")]
959    pub label: ::core::option::Option<::prost::alloc::string::String>,
960    
961    #[prost(int32, tag = "4")]
962    pub size: i32,
963    
964    #[prost(int32, tag = "5")]
965    pub tick_rate: i32,
966    
967    #[prost(string, tag = "6")]
968    pub handler_name: ::prost::alloc::string::String,
969}
970
971#[derive(Clone, PartialEq, ::prost::Message)]
972pub struct MatchList {
973    
974    #[prost(message, repeated, tag = "1")]
975    pub matches: ::prost::alloc::vec::Vec<Match>,
976}
977
978#[derive(Clone, PartialEq, ::prost::Message)]
979pub struct Notification {
980    
981    #[prost(string, tag = "1")]
982    pub id: ::prost::alloc::string::String,
983    
984    #[prost(string, tag = "2")]
985    pub subject: ::prost::alloc::string::String,
986    
987    #[prost(string, tag = "3")]
988    pub content: ::prost::alloc::string::String,
989    
990    #[prost(int32, tag = "4")]
991    pub code: i32,
992    
993    #[prost(string, tag = "5")]
994    pub sender_id: ::prost::alloc::string::String,
995    
996    #[prost(message, optional, tag = "6")]
997    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
998    
999    #[prost(bool, tag = "7")]
1000    pub persistent: bool,
1001}
1002
1003#[derive(Clone, PartialEq, ::prost::Message)]
1004pub struct NotificationList {
1005    
1006    #[prost(message, repeated, tag = "1")]
1007    pub notifications: ::prost::alloc::vec::Vec<Notification>,
1008    
1009    #[prost(string, tag = "2")]
1010    pub cacheable_cursor: ::prost::alloc::string::String,
1011}
1012
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct PromoteGroupUsersRequest {
1015    
1016    #[prost(string, tag = "1")]
1017    pub group_id: ::prost::alloc::string::String,
1018    
1019    #[prost(string, repeated, tag = "2")]
1020    pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1021}
1022
1023#[derive(Clone, PartialEq, ::prost::Message)]
1024pub struct DemoteGroupUsersRequest {
1025    
1026    #[prost(string, tag = "1")]
1027    pub group_id: ::prost::alloc::string::String,
1028    
1029    #[prost(string, repeated, tag = "2")]
1030    pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1031}
1032
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct ReadStorageObjectId {
1035    
1036    #[prost(string, tag = "1")]
1037    pub collection: ::prost::alloc::string::String,
1038    
1039    #[prost(string, tag = "2")]
1040    pub key: ::prost::alloc::string::String,
1041    
1042    #[prost(string, tag = "3")]
1043    pub user_id: ::prost::alloc::string::String,
1044}
1045
1046#[derive(Clone, PartialEq, ::prost::Message)]
1047pub struct ReadStorageObjectsRequest {
1048    
1049    #[prost(message, repeated, tag = "1")]
1050    pub object_ids: ::prost::alloc::vec::Vec<ReadStorageObjectId>,
1051}
1052
1053#[derive(Clone, PartialEq, ::prost::Message)]
1054pub struct Rpc {
1055    
1056    #[prost(string, tag = "1")]
1057    pub id: ::prost::alloc::string::String,
1058    
1059    #[prost(string, tag = "2")]
1060    pub payload: ::prost::alloc::string::String,
1061    
1062    #[prost(string, tag = "3")]
1063    pub http_key: ::prost::alloc::string::String,
1064}
1065
1066#[derive(Clone, PartialEq, ::prost::Message)]
1067pub struct Session {
1068    
1069    #[prost(bool, tag = "1")]
1070    pub created: bool,
1071    
1072    #[prost(string, tag = "2")]
1073    pub token: ::prost::alloc::string::String,
1074    
1075    #[prost(string, tag = "3")]
1076    pub refresh_token: ::prost::alloc::string::String,
1077}
1078
1079#[derive(Clone, PartialEq, ::prost::Message)]
1080pub struct StorageObject {
1081    
1082    #[prost(string, tag = "1")]
1083    pub collection: ::prost::alloc::string::String,
1084    
1085    #[prost(string, tag = "2")]
1086    pub key: ::prost::alloc::string::String,
1087    
1088    #[prost(string, tag = "3")]
1089    pub user_id: ::prost::alloc::string::String,
1090    
1091    #[prost(string, tag = "4")]
1092    pub value: ::prost::alloc::string::String,
1093    
1094    #[prost(string, tag = "5")]
1095    pub version: ::prost::alloc::string::String,
1096    
1097    #[prost(int32, tag = "6")]
1098    pub permission_read: i32,
1099    
1100    #[prost(int32, tag = "7")]
1101    pub permission_write: i32,
1102    
1103    #[prost(message, optional, tag = "8")]
1104    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1105    
1106    #[prost(message, optional, tag = "9")]
1107    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1108}
1109
1110#[derive(Clone, PartialEq, ::prost::Message)]
1111pub struct StorageObjectAck {
1112    
1113    #[prost(string, tag = "1")]
1114    pub collection: ::prost::alloc::string::String,
1115    
1116    #[prost(string, tag = "2")]
1117    pub key: ::prost::alloc::string::String,
1118    
1119    #[prost(string, tag = "3")]
1120    pub version: ::prost::alloc::string::String,
1121    
1122    #[prost(string, tag = "4")]
1123    pub user_id: ::prost::alloc::string::String,
1124}
1125
1126#[derive(Clone, PartialEq, ::prost::Message)]
1127pub struct StorageObjectAcks {
1128    
1129    #[prost(message, repeated, tag = "1")]
1130    pub acks: ::prost::alloc::vec::Vec<StorageObjectAck>,
1131}
1132
1133#[derive(Clone, PartialEq, ::prost::Message)]
1134pub struct StorageObjects {
1135    
1136    #[prost(message, repeated, tag = "1")]
1137    pub objects: ::prost::alloc::vec::Vec<StorageObject>,
1138}
1139
1140#[derive(Clone, PartialEq, ::prost::Message)]
1141pub struct StorageObjectList {
1142    
1143    #[prost(message, repeated, tag = "1")]
1144    pub objects: ::prost::alloc::vec::Vec<StorageObject>,
1145    
1146    #[prost(string, tag = "2")]
1147    pub cursor: ::prost::alloc::string::String,
1148}
1149
1150#[derive(Clone, PartialEq, ::prost::Message)]
1151pub struct Tournament {
1152    
1153    #[prost(string, tag = "1")]
1154    pub id: ::prost::alloc::string::String,
1155    
1156    #[prost(string, tag = "2")]
1157    pub title: ::prost::alloc::string::String,
1158    
1159    #[prost(string, tag = "3")]
1160    pub description: ::prost::alloc::string::String,
1161    
1162    #[prost(uint32, tag = "4")]
1163    pub category: u32,
1164    
1165    #[prost(uint32, tag = "5")]
1166    pub sort_order: u32,
1167    
1168    #[prost(uint32, tag = "6")]
1169    pub size: u32,
1170    
1171    #[prost(uint32, tag = "7")]
1172    pub max_size: u32,
1173    
1174    #[prost(uint32, tag = "8")]
1175    pub max_num_score: u32,
1176    
1177    #[prost(bool, tag = "9")]
1178    pub can_enter: bool,
1179    
1180    #[prost(uint32, tag = "10")]
1181    pub end_active: u32,
1182    
1183    #[prost(uint32, tag = "11")]
1184    pub next_reset: u32,
1185    
1186    #[prost(string, tag = "12")]
1187    pub metadata: ::prost::alloc::string::String,
1188    
1189    #[prost(message, optional, tag = "13")]
1190    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1191    
1192    #[prost(message, optional, tag = "14")]
1193    pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1194    
1195    #[prost(message, optional, tag = "15")]
1196    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1197    
1198    #[prost(uint32, tag = "16")]
1199    pub duration: u32,
1200    
1201    #[prost(uint32, tag = "17")]
1202    pub start_active: u32,
1203}
1204
1205#[derive(Clone, PartialEq, ::prost::Message)]
1206pub struct TournamentList {
1207    
1208    #[prost(message, repeated, tag = "1")]
1209    pub tournaments: ::prost::alloc::vec::Vec<Tournament>,
1210    
1211    #[prost(string, tag = "2")]
1212    pub cursor: ::prost::alloc::string::String,
1213}
1214
1215#[derive(Clone, PartialEq, ::prost::Message)]
1216pub struct TournamentRecordList {
1217    
1218    #[prost(message, repeated, tag = "1")]
1219    pub records: ::prost::alloc::vec::Vec<LeaderboardRecord>,
1220    
1221    #[prost(message, repeated, tag = "2")]
1222    pub owner_records: ::prost::alloc::vec::Vec<LeaderboardRecord>,
1223    
1224    #[prost(string, tag = "3")]
1225    pub next_cursor: ::prost::alloc::string::String,
1226    
1227    #[prost(string, tag = "4")]
1228    pub prev_cursor: ::prost::alloc::string::String,
1229}
1230
1231#[derive(Clone, PartialEq, ::prost::Message)]
1232pub struct UpdateAccountRequest {
1233    
1234    #[prost(message, optional, tag = "1")]
1235    pub username: ::core::option::Option<::prost::alloc::string::String>,
1236    
1237    #[prost(message, optional, tag = "2")]
1238    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
1239    
1240    #[prost(message, optional, tag = "3")]
1241    pub avatar_url: ::core::option::Option<::prost::alloc::string::String>,
1242    
1243    #[prost(message, optional, tag = "4")]
1244    pub lang_tag: ::core::option::Option<::prost::alloc::string::String>,
1245    
1246    #[prost(message, optional, tag = "5")]
1247    pub location: ::core::option::Option<::prost::alloc::string::String>,
1248    
1249    #[prost(message, optional, tag = "6")]
1250    pub timezone: ::core::option::Option<::prost::alloc::string::String>,
1251}
1252
1253#[derive(Clone, PartialEq, ::prost::Message)]
1254pub struct UpdateGroupRequest {
1255    
1256    #[prost(string, tag = "1")]
1257    pub group_id: ::prost::alloc::string::String,
1258    
1259    #[prost(message, optional, tag = "2")]
1260    pub name: ::core::option::Option<::prost::alloc::string::String>,
1261    
1262    #[prost(message, optional, tag = "3")]
1263    pub description: ::core::option::Option<::prost::alloc::string::String>,
1264    
1265    #[prost(message, optional, tag = "4")]
1266    pub lang_tag: ::core::option::Option<::prost::alloc::string::String>,
1267    
1268    #[prost(message, optional, tag = "5")]
1269    pub avatar_url: ::core::option::Option<::prost::alloc::string::String>,
1270    
1271    #[prost(message, optional, tag = "6")]
1272    pub open: ::core::option::Option<bool>,
1273}
1274
1275#[derive(Clone, PartialEq, ::prost::Message)]
1276pub struct User {
1277    
1278    #[prost(string, tag = "1")]
1279    pub id: ::prost::alloc::string::String,
1280    
1281    #[prost(string, tag = "2")]
1282    pub username: ::prost::alloc::string::String,
1283    
1284    #[prost(string, tag = "3")]
1285    pub display_name: ::prost::alloc::string::String,
1286    
1287    #[prost(string, tag = "4")]
1288    pub avatar_url: ::prost::alloc::string::String,
1289    
1290    #[prost(string, tag = "5")]
1291    pub lang_tag: ::prost::alloc::string::String,
1292    
1293    #[prost(string, tag = "6")]
1294    pub location: ::prost::alloc::string::String,
1295    
1296    #[prost(string, tag = "7")]
1297    pub timezone: ::prost::alloc::string::String,
1298    
1299    #[prost(string, tag = "8")]
1300    pub metadata: ::prost::alloc::string::String,
1301    
1302    #[prost(string, tag = "9")]
1303    pub facebook_id: ::prost::alloc::string::String,
1304    
1305    #[prost(string, tag = "10")]
1306    pub google_id: ::prost::alloc::string::String,
1307    
1308    #[prost(string, tag = "11")]
1309    pub gamecenter_id: ::prost::alloc::string::String,
1310    
1311    #[prost(string, tag = "12")]
1312    pub steam_id: ::prost::alloc::string::String,
1313    
1314    #[prost(bool, tag = "13")]
1315    pub online: bool,
1316    
1317    #[prost(int32, tag = "14")]
1318    pub edge_count: i32,
1319    
1320    #[prost(message, optional, tag = "15")]
1321    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1322    
1323    #[prost(message, optional, tag = "16")]
1324    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1325    
1326    #[prost(string, tag = "17")]
1327    pub facebook_instant_game_id: ::prost::alloc::string::String,
1328    
1329    #[prost(string, tag = "18")]
1330    pub apple_id: ::prost::alloc::string::String,
1331}
1332
1333#[derive(Clone, PartialEq, ::prost::Message)]
1334pub struct UserGroupList {
1335    
1336    #[prost(message, repeated, tag = "1")]
1337    pub user_groups: ::prost::alloc::vec::Vec<user_group_list::UserGroup>,
1338    
1339    #[prost(string, tag = "2")]
1340    pub cursor: ::prost::alloc::string::String,
1341}
1342
1343pub mod user_group_list {
1344    
1345    #[derive(Clone, PartialEq, ::prost::Message)]
1346    pub struct UserGroup {
1347        
1348        #[prost(message, optional, tag = "1")]
1349        pub group: ::core::option::Option<super::Group>,
1350        
1351        #[prost(message, optional, tag = "2")]
1352        pub state: ::core::option::Option<i32>,
1353    }
1354    
1355    pub mod user_group {
1356        
1357        #[derive(
1358            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
1359        )]
1360        #[repr(i32)]
1361        pub enum State {
1362            
1363            Superadmin = 0,
1364            
1365            Admin = 1,
1366            
1367            Member = 2,
1368            
1369            JoinRequest = 3,
1370        }
1371    }
1372}
1373
1374#[derive(Clone, PartialEq, ::prost::Message)]
1375pub struct Users {
1376    
1377    #[prost(message, repeated, tag = "1")]
1378    pub users: ::prost::alloc::vec::Vec<User>,
1379}
1380
1381#[derive(Clone, PartialEq, ::prost::Message)]
1382pub struct WriteLeaderboardRecordRequest {
1383    
1384    #[prost(string, tag = "1")]
1385    pub leaderboard_id: ::prost::alloc::string::String,
1386    
1387    #[prost(message, optional, tag = "2")]
1388    pub record: ::core::option::Option<write_leaderboard_record_request::LeaderboardRecordWrite>,
1389}
1390
1391pub mod write_leaderboard_record_request {
1392    
1393    #[derive(Clone, PartialEq, ::prost::Message)]
1394    pub struct LeaderboardRecordWrite {
1395        
1396        #[prost(int64, tag = "1")]
1397        pub score: i64,
1398        
1399        #[prost(int64, tag = "2")]
1400        pub subscore: i64,
1401        
1402        #[prost(string, tag = "3")]
1403        pub metadata: ::prost::alloc::string::String,
1404    }
1405}
1406
1407#[derive(Clone, PartialEq, ::prost::Message)]
1408pub struct WriteStorageObject {
1409    
1410    #[prost(string, tag = "1")]
1411    pub collection: ::prost::alloc::string::String,
1412    
1413    #[prost(string, tag = "2")]
1414    pub key: ::prost::alloc::string::String,
1415    
1416    #[prost(string, tag = "3")]
1417    pub value: ::prost::alloc::string::String,
1418    
1419    
1420    
1421    #[prost(string, tag = "4")]
1422    pub version: ::prost::alloc::string::String,
1423    
1424    #[prost(message, optional, tag = "5")]
1425    pub permission_read: ::core::option::Option<i32>,
1426    
1427    #[prost(message, optional, tag = "6")]
1428    pub permission_write: ::core::option::Option<i32>,
1429}
1430
1431#[derive(Clone, PartialEq, ::prost::Message)]
1432pub struct WriteStorageObjectsRequest {
1433    
1434    #[prost(message, repeated, tag = "1")]
1435    pub objects: ::prost::alloc::vec::Vec<WriteStorageObject>,
1436}
1437
1438#[derive(Clone, PartialEq, ::prost::Message)]
1439pub struct WriteTournamentRecordRequest {
1440    
1441    #[prost(string, tag = "1")]
1442    pub tournament_id: ::prost::alloc::string::String,
1443    
1444    #[prost(message, optional, tag = "2")]
1445    pub record: ::core::option::Option<write_tournament_record_request::TournamentRecordWrite>,
1446}
1447
1448pub mod write_tournament_record_request {
1449    
1450    #[derive(Clone, PartialEq, ::prost::Message)]
1451    pub struct TournamentRecordWrite {
1452        
1453        #[prost(int64, tag = "1")]
1454        pub score: i64,
1455        
1456        #[prost(int64, tag = "2")]
1457        pub subscore: i64,
1458        
1459        #[prost(string, tag = "3")]
1460        pub metadata: ::prost::alloc::string::String,
1461    }
1462}
1463#[doc = r" Generated client implementations."]
1464pub mod nakama_client {
1465    #![allow(unused_variables, dead_code, missing_docs)]
1466    use tonic::codegen::*;
1467    #[doc = "*"]
1468    #[doc = " The Nakama RPC protocol service built with GRPC."]
1469    pub struct NakamaClient<T> {
1470        inner: tonic::client::Grpc<T>,
1471    }
1472    impl NakamaClient<tonic::transport::Channel> {
1473        #[doc = r" Attempt to create a new client by connecting to a given endpoint."]
1474        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1475        where
1476            D: std::convert::TryInto<tonic::transport::Endpoint>,
1477            D::Error: Into<StdError>,
1478        {
1479            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1480            Ok(Self::new(conn))
1481        }
1482    }
1483    impl<T> NakamaClient<T>
1484    where
1485        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1486        T::ResponseBody: Body + HttpBody + Send + 'static,
1487        T::Error: Into<StdError>,
1488        <T::ResponseBody as HttpBody>::Error: Into<StdError> + Send,
1489    {
1490        pub fn new(inner: T) -> Self {
1491            let inner = tonic::client::Grpc::new(inner);
1492            Self { inner }
1493        }
1494        pub fn with_interceptor(inner: T, interceptor: impl Into<tonic::Interceptor>) -> Self {
1495            let inner = tonic::client::Grpc::with_interceptor(inner, interceptor);
1496            Self { inner }
1497        }
1498        #[doc = " Add friends by ID or username to a user's account."]
1499        pub async fn add_friends(
1500            &mut self,
1501            request: impl tonic::IntoRequest<super::AddFriendsRequest>,
1502        ) -> Result<tonic::Response<()>, tonic::Status> {
1503            self.inner.ready().await.map_err(|e| {
1504                tonic::Status::new(
1505                    tonic::Code::Unknown,
1506                    format!("Service was not ready: {}", e.into()),
1507                )
1508            })?;
1509            let codec = tonic::codec::ProstCodec::default();
1510            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AddFriends");
1511            self.inner.unary(request.into_request(), path, codec).await
1512        }
1513        #[doc = " Add users to a group."]
1514        pub async fn add_group_users(
1515            &mut self,
1516            request: impl tonic::IntoRequest<super::AddGroupUsersRequest>,
1517        ) -> Result<tonic::Response<()>, tonic::Status> {
1518            self.inner.ready().await.map_err(|e| {
1519                tonic::Status::new(
1520                    tonic::Code::Unknown,
1521                    format!("Service was not ready: {}", e.into()),
1522                )
1523            })?;
1524            let codec = tonic::codec::ProstCodec::default();
1525            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AddGroupUsers");
1526            self.inner.unary(request.into_request(), path, codec).await
1527        }
1528        #[doc = " Refresh a user's session using a refresh token retrieved from a previous authentication request."]
1529        pub async fn session_refresh(
1530            &mut self,
1531            request: impl tonic::IntoRequest<super::SessionRefreshRequest>,
1532        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1533            self.inner.ready().await.map_err(|e| {
1534                tonic::Status::new(
1535                    tonic::Code::Unknown,
1536                    format!("Service was not ready: {}", e.into()),
1537                )
1538            })?;
1539            let codec = tonic::codec::ProstCodec::default();
1540            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/SessionRefresh");
1541            self.inner.unary(request.into_request(), path, codec).await
1542        }
1543        #[doc = " Authenticate a user with an Apple ID against the server."]
1544        pub async fn authenticate_apple(
1545            &mut self,
1546            request: impl tonic::IntoRequest<super::AuthenticateAppleRequest>,
1547        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1548            self.inner.ready().await.map_err(|e| {
1549                tonic::Status::new(
1550                    tonic::Code::Unknown,
1551                    format!("Service was not ready: {}", e.into()),
1552                )
1553            })?;
1554            let codec = tonic::codec::ProstCodec::default();
1555            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateApple");
1556            self.inner.unary(request.into_request(), path, codec).await
1557        }
1558        #[doc = " Authenticate a user with a custom id against the server."]
1559        pub async fn authenticate_custom(
1560            &mut self,
1561            request: impl tonic::IntoRequest<super::AuthenticateCustomRequest>,
1562        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1563            self.inner.ready().await.map_err(|e| {
1564                tonic::Status::new(
1565                    tonic::Code::Unknown,
1566                    format!("Service was not ready: {}", e.into()),
1567                )
1568            })?;
1569            let codec = tonic::codec::ProstCodec::default();
1570            let path =
1571                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateCustom");
1572            self.inner.unary(request.into_request(), path, codec).await
1573        }
1574        #[doc = " Authenticate a user with a device id against the server."]
1575        pub async fn authenticate_device(
1576            &mut self,
1577            request: impl tonic::IntoRequest<super::AuthenticateDeviceRequest>,
1578        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1579            self.inner.ready().await.map_err(|e| {
1580                tonic::Status::new(
1581                    tonic::Code::Unknown,
1582                    format!("Service was not ready: {}", e.into()),
1583                )
1584            })?;
1585            let codec = tonic::codec::ProstCodec::default();
1586            let path =
1587                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateDevice");
1588            self.inner.unary(request.into_request(), path, codec).await
1589        }
1590        #[doc = " Authenticate a user with an email+password against the server."]
1591        pub async fn authenticate_email(
1592            &mut self,
1593            request: impl tonic::IntoRequest<super::AuthenticateEmailRequest>,
1594        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1595            self.inner.ready().await.map_err(|e| {
1596                tonic::Status::new(
1597                    tonic::Code::Unknown,
1598                    format!("Service was not ready: {}", e.into()),
1599                )
1600            })?;
1601            let codec = tonic::codec::ProstCodec::default();
1602            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateEmail");
1603            self.inner.unary(request.into_request(), path, codec).await
1604        }
1605        #[doc = " Authenticate a user with a Facebook OAuth token against the server."]
1606        pub async fn authenticate_facebook(
1607            &mut self,
1608            request: impl tonic::IntoRequest<super::AuthenticateFacebookRequest>,
1609        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1610            self.inner.ready().await.map_err(|e| {
1611                tonic::Status::new(
1612                    tonic::Code::Unknown,
1613                    format!("Service was not ready: {}", e.into()),
1614                )
1615            })?;
1616            let codec = tonic::codec::ProstCodec::default();
1617            let path =
1618                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateFacebook");
1619            self.inner.unary(request.into_request(), path, codec).await
1620        }
1621        #[doc = " Authenticate a user with a Facebook Instant Game token against the server."]
1622        pub async fn authenticate_facebook_instant_game(
1623            &mut self,
1624            request: impl tonic::IntoRequest<super::AuthenticateFacebookInstantGameRequest>,
1625        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1626            self.inner.ready().await.map_err(|e| {
1627                tonic::Status::new(
1628                    tonic::Code::Unknown,
1629                    format!("Service was not ready: {}", e.into()),
1630                )
1631            })?;
1632            let codec = tonic::codec::ProstCodec::default();
1633            let path = http::uri::PathAndQuery::from_static(
1634                "/nakama.api.Nakama/AuthenticateFacebookInstantGame",
1635            );
1636            self.inner.unary(request.into_request(), path, codec).await
1637        }
1638        #[doc = " Authenticate a user with Apple's GameCenter against the server."]
1639        pub async fn authenticate_game_center(
1640            &mut self,
1641            request: impl tonic::IntoRequest<super::AuthenticateGameCenterRequest>,
1642        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1643            self.inner.ready().await.map_err(|e| {
1644                tonic::Status::new(
1645                    tonic::Code::Unknown,
1646                    format!("Service was not ready: {}", e.into()),
1647                )
1648            })?;
1649            let codec = tonic::codec::ProstCodec::default();
1650            let path =
1651                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateGameCenter");
1652            self.inner.unary(request.into_request(), path, codec).await
1653        }
1654        #[doc = " Authenticate a user with Google against the server."]
1655        pub async fn authenticate_google(
1656            &mut self,
1657            request: impl tonic::IntoRequest<super::AuthenticateGoogleRequest>,
1658        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1659            self.inner.ready().await.map_err(|e| {
1660                tonic::Status::new(
1661                    tonic::Code::Unknown,
1662                    format!("Service was not ready: {}", e.into()),
1663                )
1664            })?;
1665            let codec = tonic::codec::ProstCodec::default();
1666            let path =
1667                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateGoogle");
1668            self.inner.unary(request.into_request(), path, codec).await
1669        }
1670        #[doc = " Authenticate a user with Steam against the server."]
1671        pub async fn authenticate_steam(
1672            &mut self,
1673            request: impl tonic::IntoRequest<super::AuthenticateSteamRequest>,
1674        ) -> Result<tonic::Response<super::Session>, tonic::Status> {
1675            self.inner.ready().await.map_err(|e| {
1676                tonic::Status::new(
1677                    tonic::Code::Unknown,
1678                    format!("Service was not ready: {}", e.into()),
1679                )
1680            })?;
1681            let codec = tonic::codec::ProstCodec::default();
1682            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/AuthenticateSteam");
1683            self.inner.unary(request.into_request(), path, codec).await
1684        }
1685        #[doc = " Ban a set of users from a group."]
1686        pub async fn ban_group_users(
1687            &mut self,
1688            request: impl tonic::IntoRequest<super::BanGroupUsersRequest>,
1689        ) -> Result<tonic::Response<()>, tonic::Status> {
1690            self.inner.ready().await.map_err(|e| {
1691                tonic::Status::new(
1692                    tonic::Code::Unknown,
1693                    format!("Service was not ready: {}", e.into()),
1694                )
1695            })?;
1696            let codec = tonic::codec::ProstCodec::default();
1697            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/BanGroupUsers");
1698            self.inner.unary(request.into_request(), path, codec).await
1699        }
1700        #[doc = " Block one or more users by ID or username."]
1701        pub async fn block_friends(
1702            &mut self,
1703            request: impl tonic::IntoRequest<super::BlockFriendsRequest>,
1704        ) -> Result<tonic::Response<()>, tonic::Status> {
1705            self.inner.ready().await.map_err(|e| {
1706                tonic::Status::new(
1707                    tonic::Code::Unknown,
1708                    format!("Service was not ready: {}", e.into()),
1709                )
1710            })?;
1711            let codec = tonic::codec::ProstCodec::default();
1712            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/BlockFriends");
1713            self.inner.unary(request.into_request(), path, codec).await
1714        }
1715        #[doc = " Create a new group with the current user as the owner."]
1716        pub async fn create_group(
1717            &mut self,
1718            request: impl tonic::IntoRequest<super::CreateGroupRequest>,
1719        ) -> Result<tonic::Response<super::Group>, tonic::Status> {
1720            self.inner.ready().await.map_err(|e| {
1721                tonic::Status::new(
1722                    tonic::Code::Unknown,
1723                    format!("Service was not ready: {}", e.into()),
1724                )
1725            })?;
1726            let codec = tonic::codec::ProstCodec::default();
1727            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/CreateGroup");
1728            self.inner.unary(request.into_request(), path, codec).await
1729        }
1730        #[doc = " Delete one or more users by ID or username."]
1731        pub async fn delete_friends(
1732            &mut self,
1733            request: impl tonic::IntoRequest<super::DeleteFriendsRequest>,
1734        ) -> Result<tonic::Response<()>, tonic::Status> {
1735            self.inner.ready().await.map_err(|e| {
1736                tonic::Status::new(
1737                    tonic::Code::Unknown,
1738                    format!("Service was not ready: {}", e.into()),
1739                )
1740            })?;
1741            let codec = tonic::codec::ProstCodec::default();
1742            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DeleteFriends");
1743            self.inner.unary(request.into_request(), path, codec).await
1744        }
1745        #[doc = " Delete a group by ID."]
1746        pub async fn delete_group(
1747            &mut self,
1748            request: impl tonic::IntoRequest<super::DeleteGroupRequest>,
1749        ) -> Result<tonic::Response<()>, tonic::Status> {
1750            self.inner.ready().await.map_err(|e| {
1751                tonic::Status::new(
1752                    tonic::Code::Unknown,
1753                    format!("Service was not ready: {}", e.into()),
1754                )
1755            })?;
1756            let codec = tonic::codec::ProstCodec::default();
1757            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DeleteGroup");
1758            self.inner.unary(request.into_request(), path, codec).await
1759        }
1760        #[doc = " Delete a leaderboard record."]
1761        pub async fn delete_leaderboard_record(
1762            &mut self,
1763            request: impl tonic::IntoRequest<super::DeleteLeaderboardRecordRequest>,
1764        ) -> Result<tonic::Response<()>, tonic::Status> {
1765            self.inner.ready().await.map_err(|e| {
1766                tonic::Status::new(
1767                    tonic::Code::Unknown,
1768                    format!("Service was not ready: {}", e.into()),
1769                )
1770            })?;
1771            let codec = tonic::codec::ProstCodec::default();
1772            let path =
1773                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DeleteLeaderboardRecord");
1774            self.inner.unary(request.into_request(), path, codec).await
1775        }
1776        #[doc = " Delete one or more notifications for the current user."]
1777        pub async fn delete_notifications(
1778            &mut self,
1779            request: impl tonic::IntoRequest<super::DeleteNotificationsRequest>,
1780        ) -> Result<tonic::Response<()>, tonic::Status> {
1781            self.inner.ready().await.map_err(|e| {
1782                tonic::Status::new(
1783                    tonic::Code::Unknown,
1784                    format!("Service was not ready: {}", e.into()),
1785                )
1786            })?;
1787            let codec = tonic::codec::ProstCodec::default();
1788            let path =
1789                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DeleteNotifications");
1790            self.inner.unary(request.into_request(), path, codec).await
1791        }
1792        #[doc = " Delete one or more objects by ID or username."]
1793        pub async fn delete_storage_objects(
1794            &mut self,
1795            request: impl tonic::IntoRequest<super::DeleteStorageObjectsRequest>,
1796        ) -> Result<tonic::Response<()>, tonic::Status> {
1797            self.inner.ready().await.map_err(|e| {
1798                tonic::Status::new(
1799                    tonic::Code::Unknown,
1800                    format!("Service was not ready: {}", e.into()),
1801                )
1802            })?;
1803            let codec = tonic::codec::ProstCodec::default();
1804            let path =
1805                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DeleteStorageObjects");
1806            self.inner.unary(request.into_request(), path, codec).await
1807        }
1808        #[doc = " Submit an event for processing in the server's registered runtime custom events handler."]
1809        pub async fn event(
1810            &mut self,
1811            request: impl tonic::IntoRequest<super::Event>,
1812        ) -> Result<tonic::Response<()>, tonic::Status> {
1813            self.inner.ready().await.map_err(|e| {
1814                tonic::Status::new(
1815                    tonic::Code::Unknown,
1816                    format!("Service was not ready: {}", e.into()),
1817                )
1818            })?;
1819            let codec = tonic::codec::ProstCodec::default();
1820            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/Event");
1821            self.inner.unary(request.into_request(), path, codec).await
1822        }
1823        #[doc = " Fetch the current user's account."]
1824        pub async fn get_account(
1825            &mut self,
1826            request: impl tonic::IntoRequest<()>,
1827        ) -> Result<tonic::Response<super::Account>, tonic::Status> {
1828            self.inner.ready().await.map_err(|e| {
1829                tonic::Status::new(
1830                    tonic::Code::Unknown,
1831                    format!("Service was not ready: {}", e.into()),
1832                )
1833            })?;
1834            let codec = tonic::codec::ProstCodec::default();
1835            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/GetAccount");
1836            self.inner.unary(request.into_request(), path, codec).await
1837        }
1838        #[doc = " Fetch zero or more users by ID and/or username."]
1839        pub async fn get_users(
1840            &mut self,
1841            request: impl tonic::IntoRequest<super::GetUsersRequest>,
1842        ) -> Result<tonic::Response<super::Users>, tonic::Status> {
1843            self.inner.ready().await.map_err(|e| {
1844                tonic::Status::new(
1845                    tonic::Code::Unknown,
1846                    format!("Service was not ready: {}", e.into()),
1847                )
1848            })?;
1849            let codec = tonic::codec::ProstCodec::default();
1850            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/GetUsers");
1851            self.inner.unary(request.into_request(), path, codec).await
1852        }
1853        #[doc = " A healthcheck which load balancers can use to check the service."]
1854        pub async fn healthcheck(
1855            &mut self,
1856            request: impl tonic::IntoRequest<()>,
1857        ) -> Result<tonic::Response<()>, tonic::Status> {
1858            self.inner.ready().await.map_err(|e| {
1859                tonic::Status::new(
1860                    tonic::Code::Unknown,
1861                    format!("Service was not ready: {}", e.into()),
1862                )
1863            })?;
1864            let codec = tonic::codec::ProstCodec::default();
1865            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/Healthcheck");
1866            self.inner.unary(request.into_request(), path, codec).await
1867        }
1868        #[doc = " Import Facebook friends and add them to a user's account."]
1869        pub async fn import_facebook_friends(
1870            &mut self,
1871            request: impl tonic::IntoRequest<super::ImportFacebookFriendsRequest>,
1872        ) -> Result<tonic::Response<()>, tonic::Status> {
1873            self.inner.ready().await.map_err(|e| {
1874                tonic::Status::new(
1875                    tonic::Code::Unknown,
1876                    format!("Service was not ready: {}", e.into()),
1877                )
1878            })?;
1879            let codec = tonic::codec::ProstCodec::default();
1880            let path =
1881                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ImportFacebookFriends");
1882            self.inner.unary(request.into_request(), path, codec).await
1883        }
1884        #[doc = " Immediately join an open group, or request to join a closed one."]
1885        pub async fn join_group(
1886            &mut self,
1887            request: impl tonic::IntoRequest<super::JoinGroupRequest>,
1888        ) -> Result<tonic::Response<()>, tonic::Status> {
1889            self.inner.ready().await.map_err(|e| {
1890                tonic::Status::new(
1891                    tonic::Code::Unknown,
1892                    format!("Service was not ready: {}", e.into()),
1893                )
1894            })?;
1895            let codec = tonic::codec::ProstCodec::default();
1896            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/JoinGroup");
1897            self.inner.unary(request.into_request(), path, codec).await
1898        }
1899        #[doc = " Attempt to join an open and running tournament."]
1900        pub async fn join_tournament(
1901            &mut self,
1902            request: impl tonic::IntoRequest<super::JoinTournamentRequest>,
1903        ) -> Result<tonic::Response<()>, tonic::Status> {
1904            self.inner.ready().await.map_err(|e| {
1905                tonic::Status::new(
1906                    tonic::Code::Unknown,
1907                    format!("Service was not ready: {}", e.into()),
1908                )
1909            })?;
1910            let codec = tonic::codec::ProstCodec::default();
1911            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/JoinTournament");
1912            self.inner.unary(request.into_request(), path, codec).await
1913        }
1914        #[doc = " Kick a set of users from a group."]
1915        pub async fn kick_group_users(
1916            &mut self,
1917            request: impl tonic::IntoRequest<super::KickGroupUsersRequest>,
1918        ) -> Result<tonic::Response<()>, tonic::Status> {
1919            self.inner.ready().await.map_err(|e| {
1920                tonic::Status::new(
1921                    tonic::Code::Unknown,
1922                    format!("Service was not ready: {}", e.into()),
1923                )
1924            })?;
1925            let codec = tonic::codec::ProstCodec::default();
1926            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/KickGroupUsers");
1927            self.inner.unary(request.into_request(), path, codec).await
1928        }
1929        #[doc = " Leave a group the user is a member of."]
1930        pub async fn leave_group(
1931            &mut self,
1932            request: impl tonic::IntoRequest<super::LeaveGroupRequest>,
1933        ) -> Result<tonic::Response<()>, tonic::Status> {
1934            self.inner.ready().await.map_err(|e| {
1935                tonic::Status::new(
1936                    tonic::Code::Unknown,
1937                    format!("Service was not ready: {}", e.into()),
1938                )
1939            })?;
1940            let codec = tonic::codec::ProstCodec::default();
1941            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LeaveGroup");
1942            self.inner.unary(request.into_request(), path, codec).await
1943        }
1944        #[doc = " Add an Apple ID to the social profiles on the current user's account."]
1945        pub async fn link_apple(
1946            &mut self,
1947            request: impl tonic::IntoRequest<super::AccountApple>,
1948        ) -> Result<tonic::Response<()>, tonic::Status> {
1949            self.inner.ready().await.map_err(|e| {
1950                tonic::Status::new(
1951                    tonic::Code::Unknown,
1952                    format!("Service was not ready: {}", e.into()),
1953                )
1954            })?;
1955            let codec = tonic::codec::ProstCodec::default();
1956            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkApple");
1957            self.inner.unary(request.into_request(), path, codec).await
1958        }
1959        #[doc = " Add a custom ID to the social profiles on the current user's account."]
1960        pub async fn link_custom(
1961            &mut self,
1962            request: impl tonic::IntoRequest<super::AccountCustom>,
1963        ) -> Result<tonic::Response<()>, tonic::Status> {
1964            self.inner.ready().await.map_err(|e| {
1965                tonic::Status::new(
1966                    tonic::Code::Unknown,
1967                    format!("Service was not ready: {}", e.into()),
1968                )
1969            })?;
1970            let codec = tonic::codec::ProstCodec::default();
1971            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkCustom");
1972            self.inner.unary(request.into_request(), path, codec).await
1973        }
1974        #[doc = " Add a device ID to the social profiles on the current user's account."]
1975        pub async fn link_device(
1976            &mut self,
1977            request: impl tonic::IntoRequest<super::AccountDevice>,
1978        ) -> Result<tonic::Response<()>, tonic::Status> {
1979            self.inner.ready().await.map_err(|e| {
1980                tonic::Status::new(
1981                    tonic::Code::Unknown,
1982                    format!("Service was not ready: {}", e.into()),
1983                )
1984            })?;
1985            let codec = tonic::codec::ProstCodec::default();
1986            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkDevice");
1987            self.inner.unary(request.into_request(), path, codec).await
1988        }
1989        #[doc = " Add an email+password to the social profiles on the current user's account."]
1990        pub async fn link_email(
1991            &mut self,
1992            request: impl tonic::IntoRequest<super::AccountEmail>,
1993        ) -> Result<tonic::Response<()>, tonic::Status> {
1994            self.inner.ready().await.map_err(|e| {
1995                tonic::Status::new(
1996                    tonic::Code::Unknown,
1997                    format!("Service was not ready: {}", e.into()),
1998                )
1999            })?;
2000            let codec = tonic::codec::ProstCodec::default();
2001            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkEmail");
2002            self.inner.unary(request.into_request(), path, codec).await
2003        }
2004        #[doc = " Add Facebook to the social profiles on the current user's account."]
2005        pub async fn link_facebook(
2006            &mut self,
2007            request: impl tonic::IntoRequest<super::LinkFacebookRequest>,
2008        ) -> Result<tonic::Response<()>, tonic::Status> {
2009            self.inner.ready().await.map_err(|e| {
2010                tonic::Status::new(
2011                    tonic::Code::Unknown,
2012                    format!("Service was not ready: {}", e.into()),
2013                )
2014            })?;
2015            let codec = tonic::codec::ProstCodec::default();
2016            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkFacebook");
2017            self.inner.unary(request.into_request(), path, codec).await
2018        }
2019        #[doc = " Add Facebook Instant Game to the social profiles on the current user's account."]
2020        pub async fn link_facebook_instant_game(
2021            &mut self,
2022            request: impl tonic::IntoRequest<super::AccountFacebookInstantGame>,
2023        ) -> Result<tonic::Response<()>, tonic::Status> {
2024            self.inner.ready().await.map_err(|e| {
2025                tonic::Status::new(
2026                    tonic::Code::Unknown,
2027                    format!("Service was not ready: {}", e.into()),
2028                )
2029            })?;
2030            let codec = tonic::codec::ProstCodec::default();
2031            let path =
2032                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkFacebookInstantGame");
2033            self.inner.unary(request.into_request(), path, codec).await
2034        }
2035        #[doc = " Add Apple's GameCenter to the social profiles on the current user's account."]
2036        pub async fn link_game_center(
2037            &mut self,
2038            request: impl tonic::IntoRequest<super::AccountGameCenter>,
2039        ) -> Result<tonic::Response<()>, tonic::Status> {
2040            self.inner.ready().await.map_err(|e| {
2041                tonic::Status::new(
2042                    tonic::Code::Unknown,
2043                    format!("Service was not ready: {}", e.into()),
2044                )
2045            })?;
2046            let codec = tonic::codec::ProstCodec::default();
2047            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkGameCenter");
2048            self.inner.unary(request.into_request(), path, codec).await
2049        }
2050        #[doc = " Add Google to the social profiles on the current user's account."]
2051        pub async fn link_google(
2052            &mut self,
2053            request: impl tonic::IntoRequest<super::AccountGoogle>,
2054        ) -> Result<tonic::Response<()>, tonic::Status> {
2055            self.inner.ready().await.map_err(|e| {
2056                tonic::Status::new(
2057                    tonic::Code::Unknown,
2058                    format!("Service was not ready: {}", e.into()),
2059                )
2060            })?;
2061            let codec = tonic::codec::ProstCodec::default();
2062            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkGoogle");
2063            self.inner.unary(request.into_request(), path, codec).await
2064        }
2065        #[doc = " Add Steam to the social profiles on the current user's account."]
2066        pub async fn link_steam(
2067            &mut self,
2068            request: impl tonic::IntoRequest<super::AccountSteam>,
2069        ) -> Result<tonic::Response<()>, tonic::Status> {
2070            self.inner.ready().await.map_err(|e| {
2071                tonic::Status::new(
2072                    tonic::Code::Unknown,
2073                    format!("Service was not ready: {}", e.into()),
2074                )
2075            })?;
2076            let codec = tonic::codec::ProstCodec::default();
2077            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/LinkSteam");
2078            self.inner.unary(request.into_request(), path, codec).await
2079        }
2080        #[doc = " List a channel's message history."]
2081        pub async fn list_channel_messages(
2082            &mut self,
2083            request: impl tonic::IntoRequest<super::ListChannelMessagesRequest>,
2084        ) -> Result<tonic::Response<super::ChannelMessageList>, tonic::Status> {
2085            self.inner.ready().await.map_err(|e| {
2086                tonic::Status::new(
2087                    tonic::Code::Unknown,
2088                    format!("Service was not ready: {}", e.into()),
2089                )
2090            })?;
2091            let codec = tonic::codec::ProstCodec::default();
2092            let path =
2093                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListChannelMessages");
2094            self.inner.unary(request.into_request(), path, codec).await
2095        }
2096        #[doc = " List all friends for the current user."]
2097        pub async fn list_friends(
2098            &mut self,
2099            request: impl tonic::IntoRequest<super::ListFriendsRequest>,
2100        ) -> Result<tonic::Response<super::FriendList>, tonic::Status> {
2101            self.inner.ready().await.map_err(|e| {
2102                tonic::Status::new(
2103                    tonic::Code::Unknown,
2104                    format!("Service was not ready: {}", e.into()),
2105                )
2106            })?;
2107            let codec = tonic::codec::ProstCodec::default();
2108            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListFriends");
2109            self.inner.unary(request.into_request(), path, codec).await
2110        }
2111        #[doc = " List groups based on given filters."]
2112        pub async fn list_groups(
2113            &mut self,
2114            request: impl tonic::IntoRequest<super::ListGroupsRequest>,
2115        ) -> Result<tonic::Response<super::GroupList>, tonic::Status> {
2116            self.inner.ready().await.map_err(|e| {
2117                tonic::Status::new(
2118                    tonic::Code::Unknown,
2119                    format!("Service was not ready: {}", e.into()),
2120                )
2121            })?;
2122            let codec = tonic::codec::ProstCodec::default();
2123            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListGroups");
2124            self.inner.unary(request.into_request(), path, codec).await
2125        }
2126        #[doc = " List all users that are part of a group."]
2127        pub async fn list_group_users(
2128            &mut self,
2129            request: impl tonic::IntoRequest<super::ListGroupUsersRequest>,
2130        ) -> Result<tonic::Response<super::GroupUserList>, tonic::Status> {
2131            self.inner.ready().await.map_err(|e| {
2132                tonic::Status::new(
2133                    tonic::Code::Unknown,
2134                    format!("Service was not ready: {}", e.into()),
2135                )
2136            })?;
2137            let codec = tonic::codec::ProstCodec::default();
2138            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListGroupUsers");
2139            self.inner.unary(request.into_request(), path, codec).await
2140        }
2141        #[doc = " List leaderboard records."]
2142        pub async fn list_leaderboard_records(
2143            &mut self,
2144            request: impl tonic::IntoRequest<super::ListLeaderboardRecordsRequest>,
2145        ) -> Result<tonic::Response<super::LeaderboardRecordList>, tonic::Status> {
2146            self.inner.ready().await.map_err(|e| {
2147                tonic::Status::new(
2148                    tonic::Code::Unknown,
2149                    format!("Service was not ready: {}", e.into()),
2150                )
2151            })?;
2152            let codec = tonic::codec::ProstCodec::default();
2153            let path =
2154                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListLeaderboardRecords");
2155            self.inner.unary(request.into_request(), path, codec).await
2156        }
2157        #[doc = " List leaderboard records that belong to a user."]
2158        pub async fn list_leaderboard_records_around_owner(
2159            &mut self,
2160            request: impl tonic::IntoRequest<super::ListLeaderboardRecordsAroundOwnerRequest>,
2161        ) -> Result<tonic::Response<super::LeaderboardRecordList>, tonic::Status> {
2162            self.inner.ready().await.map_err(|e| {
2163                tonic::Status::new(
2164                    tonic::Code::Unknown,
2165                    format!("Service was not ready: {}", e.into()),
2166                )
2167            })?;
2168            let codec = tonic::codec::ProstCodec::default();
2169            let path = http::uri::PathAndQuery::from_static(
2170                "/nakama.api.Nakama/ListLeaderboardRecordsAroundOwner",
2171            );
2172            self.inner.unary(request.into_request(), path, codec).await
2173        }
2174        #[doc = " Fetch list of running matches."]
2175        pub async fn list_matches(
2176            &mut self,
2177            request: impl tonic::IntoRequest<super::ListMatchesRequest>,
2178        ) -> Result<tonic::Response<super::MatchList>, tonic::Status> {
2179            self.inner.ready().await.map_err(|e| {
2180                tonic::Status::new(
2181                    tonic::Code::Unknown,
2182                    format!("Service was not ready: {}", e.into()),
2183                )
2184            })?;
2185            let codec = tonic::codec::ProstCodec::default();
2186            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListMatches");
2187            self.inner.unary(request.into_request(), path, codec).await
2188        }
2189        #[doc = " Fetch list of notifications."]
2190        pub async fn list_notifications(
2191            &mut self,
2192            request: impl tonic::IntoRequest<super::ListNotificationsRequest>,
2193        ) -> Result<tonic::Response<super::NotificationList>, tonic::Status> {
2194            self.inner.ready().await.map_err(|e| {
2195                tonic::Status::new(
2196                    tonic::Code::Unknown,
2197                    format!("Service was not ready: {}", e.into()),
2198                )
2199            })?;
2200            let codec = tonic::codec::ProstCodec::default();
2201            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListNotifications");
2202            self.inner.unary(request.into_request(), path, codec).await
2203        }
2204        #[doc = " List publicly readable storage objects in a given collection."]
2205        pub async fn list_storage_objects(
2206            &mut self,
2207            request: impl tonic::IntoRequest<super::ListStorageObjectsRequest>,
2208        ) -> Result<tonic::Response<super::StorageObjectList>, tonic::Status> {
2209            self.inner.ready().await.map_err(|e| {
2210                tonic::Status::new(
2211                    tonic::Code::Unknown,
2212                    format!("Service was not ready: {}", e.into()),
2213                )
2214            })?;
2215            let codec = tonic::codec::ProstCodec::default();
2216            let path =
2217                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListStorageObjects");
2218            self.inner.unary(request.into_request(), path, codec).await
2219        }
2220        #[doc = " List current or upcoming tournaments."]
2221        pub async fn list_tournaments(
2222            &mut self,
2223            request: impl tonic::IntoRequest<super::ListTournamentsRequest>,
2224        ) -> Result<tonic::Response<super::TournamentList>, tonic::Status> {
2225            self.inner.ready().await.map_err(|e| {
2226                tonic::Status::new(
2227                    tonic::Code::Unknown,
2228                    format!("Service was not ready: {}", e.into()),
2229                )
2230            })?;
2231            let codec = tonic::codec::ProstCodec::default();
2232            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListTournaments");
2233            self.inner.unary(request.into_request(), path, codec).await
2234        }
2235        #[doc = " List tournament records."]
2236        pub async fn list_tournament_records(
2237            &mut self,
2238            request: impl tonic::IntoRequest<super::ListTournamentRecordsRequest>,
2239        ) -> Result<tonic::Response<super::TournamentRecordList>, tonic::Status> {
2240            self.inner.ready().await.map_err(|e| {
2241                tonic::Status::new(
2242                    tonic::Code::Unknown,
2243                    format!("Service was not ready: {}", e.into()),
2244                )
2245            })?;
2246            let codec = tonic::codec::ProstCodec::default();
2247            let path =
2248                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListTournamentRecords");
2249            self.inner.unary(request.into_request(), path, codec).await
2250        }
2251        #[doc = " List tournament records for a given owner."]
2252        pub async fn list_tournament_records_around_owner(
2253            &mut self,
2254            request: impl tonic::IntoRequest<super::ListTournamentRecordsAroundOwnerRequest>,
2255        ) -> Result<tonic::Response<super::TournamentRecordList>, tonic::Status> {
2256            self.inner.ready().await.map_err(|e| {
2257                tonic::Status::new(
2258                    tonic::Code::Unknown,
2259                    format!("Service was not ready: {}", e.into()),
2260                )
2261            })?;
2262            let codec = tonic::codec::ProstCodec::default();
2263            let path = http::uri::PathAndQuery::from_static(
2264                "/nakama.api.Nakama/ListTournamentRecordsAroundOwner",
2265            );
2266            self.inner.unary(request.into_request(), path, codec).await
2267        }
2268        #[doc = " List groups the current user belongs to."]
2269        pub async fn list_user_groups(
2270            &mut self,
2271            request: impl tonic::IntoRequest<super::ListUserGroupsRequest>,
2272        ) -> Result<tonic::Response<super::UserGroupList>, tonic::Status> {
2273            self.inner.ready().await.map_err(|e| {
2274                tonic::Status::new(
2275                    tonic::Code::Unknown,
2276                    format!("Service was not ready: {}", e.into()),
2277                )
2278            })?;
2279            let codec = tonic::codec::ProstCodec::default();
2280            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ListUserGroups");
2281            self.inner.unary(request.into_request(), path, codec).await
2282        }
2283        #[doc = " Promote a set of users in a group to the next role up."]
2284        pub async fn promote_group_users(
2285            &mut self,
2286            request: impl tonic::IntoRequest<super::PromoteGroupUsersRequest>,
2287        ) -> Result<tonic::Response<()>, tonic::Status> {
2288            self.inner.ready().await.map_err(|e| {
2289                tonic::Status::new(
2290                    tonic::Code::Unknown,
2291                    format!("Service was not ready: {}", e.into()),
2292                )
2293            })?;
2294            let codec = tonic::codec::ProstCodec::default();
2295            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/PromoteGroupUsers");
2296            self.inner.unary(request.into_request(), path, codec).await
2297        }
2298        #[doc = " Demote a set of users in a group to the next role down."]
2299        pub async fn demote_group_users(
2300            &mut self,
2301            request: impl tonic::IntoRequest<super::DemoteGroupUsersRequest>,
2302        ) -> Result<tonic::Response<()>, tonic::Status> {
2303            self.inner.ready().await.map_err(|e| {
2304                tonic::Status::new(
2305                    tonic::Code::Unknown,
2306                    format!("Service was not ready: {}", e.into()),
2307                )
2308            })?;
2309            let codec = tonic::codec::ProstCodec::default();
2310            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/DemoteGroupUsers");
2311            self.inner.unary(request.into_request(), path, codec).await
2312        }
2313        #[doc = " Get storage objects."]
2314        pub async fn read_storage_objects(
2315            &mut self,
2316            request: impl tonic::IntoRequest<super::ReadStorageObjectsRequest>,
2317        ) -> Result<tonic::Response<super::StorageObjects>, tonic::Status> {
2318            self.inner.ready().await.map_err(|e| {
2319                tonic::Status::new(
2320                    tonic::Code::Unknown,
2321                    format!("Service was not ready: {}", e.into()),
2322                )
2323            })?;
2324            let codec = tonic::codec::ProstCodec::default();
2325            let path =
2326                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/ReadStorageObjects");
2327            self.inner.unary(request.into_request(), path, codec).await
2328        }
2329        #[doc = " Execute a Lua function on the server."]
2330        pub async fn rpc_func(
2331            &mut self,
2332            request: impl tonic::IntoRequest<super::Rpc>,
2333        ) -> Result<tonic::Response<super::Rpc>, tonic::Status> {
2334            self.inner.ready().await.map_err(|e| {
2335                tonic::Status::new(
2336                    tonic::Code::Unknown,
2337                    format!("Service was not ready: {}", e.into()),
2338                )
2339            })?;
2340            let codec = tonic::codec::ProstCodec::default();
2341            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/RpcFunc");
2342            self.inner.unary(request.into_request(), path, codec).await
2343        }
2344        #[doc = " Remove the Apple ID from the social profiles on the current user's account."]
2345        pub async fn unlink_apple(
2346            &mut self,
2347            request: impl tonic::IntoRequest<super::AccountApple>,
2348        ) -> Result<tonic::Response<()>, tonic::Status> {
2349            self.inner.ready().await.map_err(|e| {
2350                tonic::Status::new(
2351                    tonic::Code::Unknown,
2352                    format!("Service was not ready: {}", e.into()),
2353                )
2354            })?;
2355            let codec = tonic::codec::ProstCodec::default();
2356            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkApple");
2357            self.inner.unary(request.into_request(), path, codec).await
2358        }
2359        #[doc = " Remove the custom ID from the social profiles on the current user's account."]
2360        pub async fn unlink_custom(
2361            &mut self,
2362            request: impl tonic::IntoRequest<super::AccountCustom>,
2363        ) -> Result<tonic::Response<()>, tonic::Status> {
2364            self.inner.ready().await.map_err(|e| {
2365                tonic::Status::new(
2366                    tonic::Code::Unknown,
2367                    format!("Service was not ready: {}", e.into()),
2368                )
2369            })?;
2370            let codec = tonic::codec::ProstCodec::default();
2371            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkCustom");
2372            self.inner.unary(request.into_request(), path, codec).await
2373        }
2374        #[doc = " Remove the device ID from the social profiles on the current user's account."]
2375        pub async fn unlink_device(
2376            &mut self,
2377            request: impl tonic::IntoRequest<super::AccountDevice>,
2378        ) -> Result<tonic::Response<()>, tonic::Status> {
2379            self.inner.ready().await.map_err(|e| {
2380                tonic::Status::new(
2381                    tonic::Code::Unknown,
2382                    format!("Service was not ready: {}", e.into()),
2383                )
2384            })?;
2385            let codec = tonic::codec::ProstCodec::default();
2386            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkDevice");
2387            self.inner.unary(request.into_request(), path, codec).await
2388        }
2389        #[doc = " Remove the email+password from the social profiles on the current user's account."]
2390        pub async fn unlink_email(
2391            &mut self,
2392            request: impl tonic::IntoRequest<super::AccountEmail>,
2393        ) -> Result<tonic::Response<()>, tonic::Status> {
2394            self.inner.ready().await.map_err(|e| {
2395                tonic::Status::new(
2396                    tonic::Code::Unknown,
2397                    format!("Service was not ready: {}", e.into()),
2398                )
2399            })?;
2400            let codec = tonic::codec::ProstCodec::default();
2401            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkEmail");
2402            self.inner.unary(request.into_request(), path, codec).await
2403        }
2404        #[doc = " Remove Facebook from the social profiles on the current user's account."]
2405        pub async fn unlink_facebook(
2406            &mut self,
2407            request: impl tonic::IntoRequest<super::AccountFacebook>,
2408        ) -> Result<tonic::Response<()>, tonic::Status> {
2409            self.inner.ready().await.map_err(|e| {
2410                tonic::Status::new(
2411                    tonic::Code::Unknown,
2412                    format!("Service was not ready: {}", e.into()),
2413                )
2414            })?;
2415            let codec = tonic::codec::ProstCodec::default();
2416            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkFacebook");
2417            self.inner.unary(request.into_request(), path, codec).await
2418        }
2419        #[doc = " Remove Facebook Instant Game profile from the social profiles on the current user's account."]
2420        pub async fn unlink_facebook_instant_game(
2421            &mut self,
2422            request: impl tonic::IntoRequest<super::AccountFacebookInstantGame>,
2423        ) -> Result<tonic::Response<()>, tonic::Status> {
2424            self.inner.ready().await.map_err(|e| {
2425                tonic::Status::new(
2426                    tonic::Code::Unknown,
2427                    format!("Service was not ready: {}", e.into()),
2428                )
2429            })?;
2430            let codec = tonic::codec::ProstCodec::default();
2431            let path = http::uri::PathAndQuery::from_static(
2432                "/nakama.api.Nakama/UnlinkFacebookInstantGame",
2433            );
2434            self.inner.unary(request.into_request(), path, codec).await
2435        }
2436        #[doc = " Remove Apple's GameCenter from the social profiles on the current user's account."]
2437        pub async fn unlink_game_center(
2438            &mut self,
2439            request: impl tonic::IntoRequest<super::AccountGameCenter>,
2440        ) -> Result<tonic::Response<()>, tonic::Status> {
2441            self.inner.ready().await.map_err(|e| {
2442                tonic::Status::new(
2443                    tonic::Code::Unknown,
2444                    format!("Service was not ready: {}", e.into()),
2445                )
2446            })?;
2447            let codec = tonic::codec::ProstCodec::default();
2448            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkGameCenter");
2449            self.inner.unary(request.into_request(), path, codec).await
2450        }
2451        #[doc = " Remove Google from the social profiles on the current user's account."]
2452        pub async fn unlink_google(
2453            &mut self,
2454            request: impl tonic::IntoRequest<super::AccountGoogle>,
2455        ) -> Result<tonic::Response<()>, tonic::Status> {
2456            self.inner.ready().await.map_err(|e| {
2457                tonic::Status::new(
2458                    tonic::Code::Unknown,
2459                    format!("Service was not ready: {}", e.into()),
2460                )
2461            })?;
2462            let codec = tonic::codec::ProstCodec::default();
2463            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkGoogle");
2464            self.inner.unary(request.into_request(), path, codec).await
2465        }
2466        #[doc = " Remove Steam from the social profiles on the current user's account."]
2467        pub async fn unlink_steam(
2468            &mut self,
2469            request: impl tonic::IntoRequest<super::AccountSteam>,
2470        ) -> Result<tonic::Response<()>, tonic::Status> {
2471            self.inner.ready().await.map_err(|e| {
2472                tonic::Status::new(
2473                    tonic::Code::Unknown,
2474                    format!("Service was not ready: {}", e.into()),
2475                )
2476            })?;
2477            let codec = tonic::codec::ProstCodec::default();
2478            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UnlinkSteam");
2479            self.inner.unary(request.into_request(), path, codec).await
2480        }
2481        #[doc = " Update fields in the current user's account."]
2482        pub async fn update_account(
2483            &mut self,
2484            request: impl tonic::IntoRequest<super::UpdateAccountRequest>,
2485        ) -> Result<tonic::Response<()>, tonic::Status> {
2486            self.inner.ready().await.map_err(|e| {
2487                tonic::Status::new(
2488                    tonic::Code::Unknown,
2489                    format!("Service was not ready: {}", e.into()),
2490                )
2491            })?;
2492            let codec = tonic::codec::ProstCodec::default();
2493            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UpdateAccount");
2494            self.inner.unary(request.into_request(), path, codec).await
2495        }
2496        #[doc = " Update fields in a given group."]
2497        pub async fn update_group(
2498            &mut self,
2499            request: impl tonic::IntoRequest<super::UpdateGroupRequest>,
2500        ) -> Result<tonic::Response<()>, tonic::Status> {
2501            self.inner.ready().await.map_err(|e| {
2502                tonic::Status::new(
2503                    tonic::Code::Unknown,
2504                    format!("Service was not ready: {}", e.into()),
2505                )
2506            })?;
2507            let codec = tonic::codec::ProstCodec::default();
2508            let path = http::uri::PathAndQuery::from_static("/nakama.api.Nakama/UpdateGroup");
2509            self.inner.unary(request.into_request(), path, codec).await
2510        }
2511        #[doc = " Write a record to a leaderboard."]
2512        pub async fn write_leaderboard_record(
2513            &mut self,
2514            request: impl tonic::IntoRequest<super::WriteLeaderboardRecordRequest>,
2515        ) -> Result<tonic::Response<super::LeaderboardRecord>, tonic::Status> {
2516            self.inner.ready().await.map_err(|e| {
2517                tonic::Status::new(
2518                    tonic::Code::Unknown,
2519                    format!("Service was not ready: {}", e.into()),
2520                )
2521            })?;
2522            let codec = tonic::codec::ProstCodec::default();
2523            let path =
2524                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/WriteLeaderboardRecord");
2525            self.inner.unary(request.into_request(), path, codec).await
2526        }
2527        #[doc = " Write objects into the storage engine."]
2528        pub async fn write_storage_objects(
2529            &mut self,
2530            request: impl tonic::IntoRequest<super::WriteStorageObjectsRequest>,
2531        ) -> Result<tonic::Response<super::StorageObjectAcks>, tonic::Status> {
2532            self.inner.ready().await.map_err(|e| {
2533                tonic::Status::new(
2534                    tonic::Code::Unknown,
2535                    format!("Service was not ready: {}", e.into()),
2536                )
2537            })?;
2538            let codec = tonic::codec::ProstCodec::default();
2539            let path =
2540                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/WriteStorageObjects");
2541            self.inner.unary(request.into_request(), path, codec).await
2542        }
2543        #[doc = " Write a record to a tournament."]
2544        pub async fn write_tournament_record(
2545            &mut self,
2546            request: impl tonic::IntoRequest<super::WriteTournamentRecordRequest>,
2547        ) -> Result<tonic::Response<super::LeaderboardRecord>, tonic::Status> {
2548            self.inner.ready().await.map_err(|e| {
2549                tonic::Status::new(
2550                    tonic::Code::Unknown,
2551                    format!("Service was not ready: {}", e.into()),
2552                )
2553            })?;
2554            let codec = tonic::codec::ProstCodec::default();
2555            let path =
2556                http::uri::PathAndQuery::from_static("/nakama.api.Nakama/WriteTournamentRecord");
2557            self.inner.unary(request.into_request(), path, codec).await
2558        }
2559    }
2560    impl<T: Clone> Clone for NakamaClient<T> {
2561        fn clone(&self) -> Self {
2562            Self {
2563                inner: self.inner.clone(),
2564            }
2565        }
2566    }
2567    impl<T> std::fmt::Debug for NakamaClient<T> {
2568        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2569            write!(f, "NakamaClient {{ ... }}")
2570        }
2571    }
2572}