Get desktop application:
View/edit binary Protocol Buffers messages
Input to AddDirectors should be director usernames.
Input to AddPlayers should be player usernames
CheckIn allows players to check themselves in.
date is the date of the session This is used as scheduled_start_time for the tournament now that we store this data.
EditPlayer changes an existing player's rating, or (in IRL mode) name.
The player's username (or name, for IRL tournaments), as with RemovePlayers.
Only supported in IRL mode, where a player is identified by their name.
The player's team; empty removes them from their team. Teams can't change once the division has started.
(message has no fields)
GetEnteredTournaments returns the tournaments and clubs a user played in or is registered in, the last played first.
username, if set, lists the tournaments and clubs that user entered instead, for a caller who can see private user data (the admin user lookup).
GetMyTournaments returns tournaments where the authenticated user is a director.
username, if set, lists the tournaments and clubs that user directs instead, for a caller who can see private user data (the admin user lookup).
optional limit for number of tournaments to return (default 100)
(message has no fields)
club_id
User must provide the ID, or the slug (but not both)
directors are not part of the metadata. We decided to make those individually addable/removable (See AddDirectors)
Monitoring/invigilation endpoints
MovePlayer moves a player from one division to another
If slug is not assigned, a random ID will be chosen.
irl_mode creates the tournament with over-the-board (IRL) pairing mode enabled, so that usernames need not be registered on the site. It can also be toggled later via SetTournamentMetadata, but only before any players have been added.
PreviewPairings shows how each pre-paired scheme would pair the division, ranked for what the director wants. Nothing is changed.
How many rounds to pre-pair.
If more than the players registered, the rest are placeholders, seeded last.
For the Team Round Robin: how many rounds in a row each pair plays (its round controls' games_per_round). 0 means 1.
Best first for the intent; the suggestion, if any, is first.
tournament id
Input to RemoveDirectors should be director usernames.
Input to RemovePlayers should be player usernames
"camera" or "screenshot"
"camera" or "screenshot"
TournamentResultOverrideRequest is sent when a score needs to be edited or added by a director. Note that player one and player two need to be the players that went first and second, respectively; otherwise, we will not be able to accurately track firsts/seconds.
paired is true if the round was paired because its pairing lag changed and the round it is now paired from was already complete.
warnings are as in TournamentResponse.
set_only_specified sets only the specified fields, and not the entire metadata. non-zero-value fields will be treated as "specified"
Uncheck everyone in. Use this some time before the beginning of a session.
Used as response type in: TournamentService.CreateClubSession
Used as field type in:
Note that club sessions are tournaments in our backend. We return the created tournament ID here:
slug will look like /club/{club_name}/{date}. It should be case-insensitive.
A tournament or club a user entered: played a game in, or is in a division of while it is not finished.
Used in:
games played in it, 0 if only registered.
registered is whether the user is in one of its divisions now; only unfinished tournaments are looked at for this.
What a director wants from the rounds they pre-pair, which decides how the pairing planner ranks the schemes.
Used in:
A fair start before COP (or another method) pairs the rest: everyone gets a similar schedule, and the top seeds are kept apart for later.
The pre-paired rounds are the whole event.
Two teams play each other, such as Portland vs Seattle.
Used in:
Players are indexes into PreviewPairingsResponse.players, in seed order.
Used in:
Used in:
Games against players in the same team or group, and outside it.
The most firsts or seconds in a row.
How many different players they play.
Used in:
A different number of pre-paired rounds that would suit the intent better.
Used in:
Used in:
Each player's team or group (an index), or -1 when the scheme has none.
How many rounds it takes for everyone to play everyone the scheme pairs them with; 0 if it can't be told.
Games among seeds 1 to PreviewPairingsResponse.top_seeds.
The most anyone is off even, firsts minus seconds, at the end.
Plain sentences for the director: what the scheme does with this field and what to watch out for.
What to call the scheme, such as "Snaked Round Robin, within teams".
The most different opponents any player misses: they could have played one more new opponent instead of each repeat, but didn't.
Used in: , ,
A Standard tournament
A new "clubhouse"
A club session or child tournament.
A legacy tournament
Used as request type in: TournamentService.AddDivision, TournamentService.RemoveDivision
Used in:
Used to copy a tournament's settings (gibsonization, spread cap, etc).
Used in: , , , ,
description is the markdown information for the tournament on the right-hand side
a caption that shows up for the tournament in various places.
tile_style if set is default
board_style if set is default
for clubs (not tournaments) we want to be able to hard-code settings if the following parameter is set.
When setting the game request, some clubs would like some parameters to be more freeform (for example, lexicon option or time setting). The following parameter is a list of field names that are freeform. The acceptable values are: lexicon, time, challenge_rule, rating_mode, variant_name
a simple password for this tournament. Without it you can't see what is happening. Likely front-end only implementation, although password will be at least hashed. For clubs that want to be more private.
a url to a logo in the metadata card, disclaimer card and center square.
an override color for the gradient in the tournament info
irl_mode allows tournament mode to be used for pairings for an over-the-board tournament, and will not enforce that usernames are registered on the site.
monitored enables invigilation/monitoring mode requiring participants to share camera and screenshot streams via vdo.ninja
first_director is the username of the first tournament director
registrant_count is the total number of registered players across all divisions
divisions contains a summary of each division for copy/template purposes
Used in:
If player_one_id and player_two_id are the same, we should specify what we want the result to be (BYE, FORFEIT_LOSS, VOID)
Used as response type in: TournamentService.AddDirectors, TournamentService.AddDivision, TournamentService.AddPlayers, TournamentService.CheckIn, TournamentService.CloseCheckins, TournamentService.CloseRegistration, TournamentService.FinishTournament, TournamentService.InitializeMonitoringKeys, TournamentService.MovePlayer, TournamentService.OpenCheckins, TournamentService.OpenRegistration, TournamentService.PairRound, TournamentService.Register, TournamentService.RemoveAllPlayersNotCheckedIn, TournamentService.RemoveDirectors, TournamentService.RemoveDivision, TournamentService.RemovePlayers, TournamentService.RenameDivision, TournamentService.RequestMonitoringStream, TournamentService.ResetMonitoringStream, TournamentService.SetDivisionControls, TournamentService.SetPairing, TournamentService.SetResult, TournamentService.SetRoundControls, TournamentService.SetTournamentMetadata, TournamentService.StartRoundCountdown, TournamentService.UncheckAllIn, TournamentService.UnfinishTournament, TournamentService.UnstartTournament
warnings are WooglesError strings for follow-on work that failed without failing the request, such as pairing a lagged round that was waiting for the round the request paired.