A participant represents the entity that plays in a tournament. It may be a single player or a team composed of several players.
A participant is unique per tournament. This means that a player or team will have one participant for each tournament in which it participates. It functions like a snapshot of a player or team in a given tournament. To identify the user behind different participants, it is necessary to use identification properties (explained below)
A participant can originate from a registration process or be added directly in the tournament.
A participant has a type that matches the participant type of the tournament. It can be a player or a team. It also determines what data model to expect in the tournament, notably when involving custom fields.
A participant can be identified by several properties:
- User id: This property allows a participant to be associated with a user account on the
platform. This property is optional.
- Email: This property contains the email of the participant. It is mandatory and unique
within a tournament. It therefore allows the identification of a user for this participant.
- Custom user identifier: This property allows to fill a custom user id coming from an external system. It allows the participant to be associated with a third-party authentication system. This property is optional.
Note that it is also possible to use a custom field to store another identifying property (such as a game user id)
Custom field values
When custom fields are configured on a tournament, their values are stored in a specific "custom field values" property using their machine name to identify the different values.
Since custom fields can be configured to be applied on players, teams or team players, the custom field values will only appear in the participant of the appropriate type.
- Players: Custom field values are stored on the participant.
- Teams: Custom field values are stored on the participant.
- Team players: Custom field values are stored in each player found in lineup property.
When the participant type is a team, it has an additional lineup property that contains a collection of team players. These players share similar properties with the participant. They have a name, identification properties (user id, email and custom user id) and custom field values.
Registration is an optional process that allows players to make a request to participate in a tournament, and that lets the organizer choose to accept or refuse it.
That process implies the use of another entity, the registration, to represent the player's request. A successful process will result in the creation of a participant. Although the participant and the registration have some information in common, they are two different entities.
The registration shares the same competitor data as the participant. It has a name, a type, identification properties, custom field values and a lineup if it is a team. Once a registration is successful, a participant is automatically created and linked with the registration (the link is set in the registration).
All competitor data is shared between the participant and the registration. This means that changing competitor data in the registration also changes it in the participant and vice versa.
A registration has a status (not present in the participant) that describes the state of the registration:
- Pending: The registration has been submitted and awaits review.
- Accepted: The registration has been accepted and has a link to its participant.
- Refused: The registration has been refused.
- Cancelled: The registration was accepted but the participant has been removed.
A registration can have a link to a participant. The link is automatically set when a registration is accepted. It is automatically removed when the registration is refused (after being accepted) or when the participant is deleted.
Note that when a participant is already involved in the tournament (placed in the structure or having played a match) it will be locked. In that case, any change on the registration that would remove the link will be refused due to that lock.