StartRNR/schema/startgg.graphql

2734 lines
50 KiB
GraphQL

type Query {
"""
Returns the authenticated user
"""
currentUser: User
"""
Returns an entrant given its id
"""
entrant(id: ID!): Entrant
"""
Returns an event given its id or slug
"""
event(id: ID, slug: String): Event
"""
Returns a league given its id or slug
"""
league(id: ID, slug: String): League
"""
Paginated, filterable list of leagues
"""
leagues(query: LeagueQuery!): LeagueConnection
"""
Returns a participant given its id
"""
participant(id: ID!, isAdmin: Boolean): Participant
"""
Returns a phase given its id
"""
phase(id: ID): Phase
"""
Returns a phase group given its id
"""
phaseGroup(id: ID): PhaseGroup
"""
Returns a player given an id
"""
player(id: ID!): Player
"""
Returns a phase seed given its id
"""
seed(id: ID): Seed
"""
Returns a set given its id
"""
set(id: ID!): Set
"""
A shop entity
"""
shop(id: ID, slug: String): Shop
"""
Returns an stream given its id
"""
stream(id: ID!): Streams
"""
Returns all the stream queues for a given tournament
"""
streamQueue(tournamentId: ID!, includePlayerStreams: Boolean): [StreamQueue]
"""
Returns a team given its id
"""
team(id: ID, slug: String, inviteCode: String): Team
"""
Returns a tournament given its id or slug
"""
tournament(id: ID, slug: String): Tournament
"""
Paginated, filterable list of tournaments
"""
tournaments(query: TournamentQuery!): TournamentConnection
"""
Returns a user given a user slug of the form user/abc123, or id
"""
user(id: ID, slug: String): User
"""
Returns a videogame given its id
"""
videogame(id: ID, slug: String): Videogame
"""
Returns paginated list of videogames matching the search criteria.
"""
videogames(query: VideogameQuery!): VideogameConnection
}
"""
A user
"""
type User {
"""
Authorizations to external services (i.e. Twitch, Twitter)
"""
authorizations(types: [SocialConnectionType]): [ProfileAuthorization]
id: ID
bio: String
"""
Public facing user birthday that respects user publishing settings
"""
birthday: String
"""
Uniquely identifying token for user. Same as the hashed part of the slug
"""
discriminator: String
email: String
"""
Events this user has competed in
"""
events(query: UserEventsPaginationQuery): EventConnection
genderPronoun: String
images(type: String): [Image]
"""
Leagues this user has competed in
"""
leagues(query: UserLeaguesPaginationQuery): LeagueConnection
"""
Public location info for this user
"""
location: Address
"""
Public facing user name that respects user publishing settings
"""
name: String
"""
player for user
"""
player: Player
slug: String
"""
Tournaments this user is organizing or competing in
"""
tournaments(query: UserTournamentsPaginationQuery): TournamentConnection
}
"""
Represents the name of the third-party social service (e.g Twitter) for OAuth
"""
enum SocialConnectionType {
"""
"""
TWITTER
"""
"""
TWITCH
"""
"""
DISCORD
"""
"""
MIXER
"""
"""
XBOX
}
"""
An OAuth ProfileAuthorization object
"""
type ProfileAuthorization {
id: ID
"""
The id given by the external service
"""
externalId: String
"""
The username given by the external service (including discriminator if discord)
"""
externalUsername: String
stream: Stream
"""
The name of the external service providing this auth i.e. "twitch"
"""
type: AuthorizationType
url: String
}
"""
A Stream object
"""
type Stream {
id: ID
"""
Whether the stream is currently live. May be slightly delayed.
"""
isOnline: Boolean
"""
The name of the stream
"""
name: String
"""
The name of the external service providing this auth i.e. "twitch"
"""
type: StreamType
}
"""
Represents the type of stream service
"""
enum StreamType {
"""
"""
TWITCH
"""
"""
MIXER
"""
"""
YOUTUBE
}
"""
Represents the name of the third-party service (e.g Twitter) for OAuth
"""
enum AuthorizationType {
"""
"""
TWITTER
"""
"""
TWITCH
"""
"""
STEAM
"""
"""
DISCORD
"""
"""
XBOX
"""
"""
EPIC
"""
"""
BATTLENET
"""
"""
MIXER
}
input UserEventsPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: UserEventsPaginationFilter
}
input UserEventsPaginationFilter {
videogameId: [ID]
eventType: Int
minEntrantCount: Int
maxEntrantCount: Int
location: LocationFilterType
search: PaginationSearchType
}
input LocationFilterType {
countryCode: String
state: String
city: String
}
input PaginationSearchType {
fieldsToSearch: [String]
searchString: String
}
type EventConnection {
pageInfo: PageInfo
nodes: [Event]
}
type PageInfo {
total: Int
totalPages: Int
page: Int
perPage: Int
sortBy: String
filter: JSON
}
"""
The `JSON` scalar type represents JSON values as specified by
[ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSON
"""
An event in a tournament
"""
type Event {
id: ID
"""
How long before the event start will the check-in end (in seconds)
"""
checkInBuffer: Int
"""
How long the event check-in will last (in seconds)
"""
checkInDuration: Int
"""
Whether check-in is enabled for this event
"""
checkInEnabled: Boolean
"""
Rough categorization of event tier, denoting relative importance in the competitive scene
"""
competitionTier: Int
"""
When the event was created (unix timestamp)
"""
createdAt: Timestamp
"""
Last date attendees are able to create teams for team events
"""
deckSubmissionDeadline: Timestamp
"""
Maximum number of participants each Entrant can have
"""
entrantSizeMax: Int @deprecated(reason: "Migrate to teamRosterSize")
"""
Minimum number of participants each Entrant can have
"""
entrantSizeMin: Int @deprecated(reason: "Migrate to teamRosterSize")
"""
The entrants that belong to an event, paginated by filter criteria
"""
entrants(query: EventEntrantPageQuery): EntrantConnection
"""
Whether the event has decks
"""
hasDecks: Boolean
"""
Are player tasks enabled for this event
"""
hasTasks: Boolean
images(type: String): [Image]
"""
Whether the event is an online event or not
"""
isOnline: Boolean
league: League
"""
Markdown field for match rules/instructions
"""
matchRulesMarkdown: String
"""
Title of event set by organizer
"""
name: String
"""
Gets the number of entrants in this event
"""
numEntrants: Int
"""
The phase groups that belong to an event.
"""
phaseGroups: [PhaseGroup]
"""
The phases that belong to an event.
"""
phases(
"""
Filter phases by state. If not specified will default to all phases
"""
state: ActivityState
"""
Optionally only return results for this phase
"""
phaseId: ID
): [Phase]
"""
TO settings for prizing
"""
prizingInfo: JSON
publishing: JSON
"""
Markdown field for event rules/instructions
"""
rulesMarkdown: String
"""
Id of the event ruleset
"""
rulesetId: Int
"""
Settings pulled from the event ruleset, if one exists
"""
rulesetSettings: JSON @deprecated(reason: "Use ruleset")
"""
Paginated sets for this Event
"""
sets(
page: Int
perPage: Int
"""
How to sort these sets
"""
sortType: SetSortType
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection
slug: String
"""
Paginated list of standings
"""
standings(query: StandingPaginationQuery!): StandingConnection
"""
When does this event start?
"""
startAt: Timestamp
"""
The state of the Event.
"""
state: ActivityState
"""
Paginated stations on this event
"""
stations(query: StationFilter): StationsConnection
"""
Last date attendees are able to create teams for team events
"""
teamManagementDeadline: Timestamp
"""
If this is a teams event, returns whether or not teams can set custom names
"""
teamNameAllowed: Boolean
"""
Team roster size requirements
"""
teamRosterSize: TeamRosterSize
tournament: Tournament
"""
The type of the event, whether an entrant will have one participant or multiple
"""
type: Int
"""
When the event was last modified (unix timestamp)
"""
updatedAt: Timestamp
"""
Whether the event uses the new EventSeeds for seeding
"""
useEventSeeds: Boolean
"""
The entrant (if applicable) for a given user in this event
"""
userEntrant(
"""
User to get entrant for. Defaults to currently logged in user.
"""
userId: ID
): Entrant
videogame: Videogame
"""
The waves being used by the event
"""
waves(
"""
Waves filtered by phaseId, returns all if not set.
"""
phaseId: ID
): [Wave]
}
"""
Represents a Unix Timestamp. Supports up to 53 bit int values,
as that is JavaScript's internal memory allocation for integer values.
"""
scalar Timestamp
input EventEntrantPageQuery {
page: Int
perPage: Int
sortBy: String
filter: EventEntrantPageQueryFilter
}
input EventEntrantPageQueryFilter {
name: String
}
type EntrantConnection {
pageInfo: PageInfo
nodes: [Entrant]
}
"""
An entrant in an event
"""
type Entrant {
id: ID
event: Event
"""
Entrant's seed number in the first phase of the event.
"""
initialSeedNum: Int
isDisqualified: Boolean
"""
The entrant name as it appears in bracket: gamerTag of the participant or team name
"""
name: String
"""
Paginated sets for this entrant
"""
paginatedSets(
page: Int
perPage: Int
"""
How to sort these sets
"""
sortType: SetSortType
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection
participants: [Participant]
seeds: [Seed]
skill: Int
"""
Standing for this entrant given an event. All entrants queried must be in the same event (for now).
"""
standing: Standing
stream: Streams @deprecated(reason: "DEPRECATED. Use streams instead, which supports multiple stream types and teams.")
streams: [Streams]
"""
Team linked to this entrant, if one exists
"""
team: Team
}
"""
Different sort type configurations used when displaying multiple sets
"""
enum SetSortType {
"""
Sets will not be sorted.
"""
NONE
"""
Sets are sorted in the suggested order that they be called to be played. The order of completed sets is reversed.
"""
CALL_ORDER
"""
Sets are sorted by relevancy dependent on the state and progress of the event.
"""
MAGIC
"""
Sets are sorted in the order that they were started.
"""
RECENT
"""
Deprecated. This is equivalent to CALL_ORDER
"""
STANDARD
"""
Sets sorted by round and identifier
"""
ROUND
}
input SetFilters {
"""
Only return Sets for these Entrants
"""
entrantIds: [ID]
"""
Only return Sets for this Entrant size. For example, to fetch 1v1 Sets only, filter by an entrantSize of 1
"""
entrantSize: [Int]
"""
Only return Sets that have an attached VOD
"""
hasVod: Boolean
"""
Do not return empty Sets. For example, set this to true to filter out sets that are waiting for progressions.
"""
hideEmpty: Boolean
"""
Return sets that contain a bye
"""
showByes: Boolean
"""
Only return Sets that are in an Online event. If omitted, Sets for both online and offline Events are returned
"""
isEventOnline: Boolean
"""
Only return Sets in certain geographical areas.
"""
location: SetFilterLocation
"""
Only return Sets for these Participants
"""
participantIds: [ID]
"""
Only return Sets in these PhaseGroups
"""
phaseGroupIds: [ID]
"""
Only return Sets in these Phases
"""
phaseIds: [ID]
"""
Only return Sets in these Events
"""
eventIds: [ID]
"""
Only return Sets in these Tournaments
"""
tournamentIds: [ID]
"""
Only return Sets for these Players
"""
playerIds: [ID]
"""
Only return Sets for these Rounds
"""
roundNumber: Int
"""
Only returns Sets that are in these states
"""
state: [Int]
"""
Only return Sets that are assigned to these Station IDs
"""
stationIds: [ID]
"""
Only return Sets that are assigned to these Station numbers
"""
stationNumbers: [Int]
"""
Only return sets created or updated since this timestamp
"""
updatedAfter: Timestamp
}
"""
Filter Sets by geographical constraints.
"""
input SetFilterLocation {
"""
Only return Sets in this state. Only applicable to US states
"""
state: String
"""
Only return Sets in this country. Expects a valid two-letter country code
"""
country: String
distanceFrom: SetFilterLocationDistanceFrom
}
"""
Only return Sets that are a certain distance away from a specified point
"""
input SetFilterLocationDistanceFrom {
"""
Point at which to perform distance calculation
"""
point: SetFilterLocationDistanceFromPoint
"""
Distance from the point to include results in
"""
radius: String
}
input SetFilterLocationDistanceFromPoint {
lat: Float
lon: Float
}
type SetConnection {
pageInfo: PageInfo
nodes: [Set]
}
"""
A set
"""
type Set {
id: ID
"""
The time this set was marked as completed
"""
completedAt: Timestamp
"""
The time this set was created
"""
createdAt: Timestamp
displayScore(mainEntrantId: ID): String
"""
Event that this set belongs to.
"""
event: Event
"""
Full round text of this set.
"""
fullRoundText: String
game(orderNum: Int!): Game
games: [Game]
"""
Whether this set contains a placeholder entrant
"""
hasPlaceholder: Boolean
"""
The letters that describe a unique identifier within the pool. Eg. F, AT
"""
identifier: String
images(type: String): [Image]
lPlacement: Int
"""
Phase group that this Set belongs to.
"""
phaseGroup: PhaseGroup
"""
The sets that are affected from resetting this set
"""
resetAffectedData: ResetAffectedData
"""
The round number of the set. Negative numbers are losers bracket
"""
round: Int
"""
Indicates whether the set is in best of or total games mode. This instructs
which field is used to figure out how many games are in this set.
"""
setGamesType: Int
"""
A possible spot in a set. Use this to get all entrants in a set. Use this for all bracket types (FFA, elimination, etc)
"""
slots(includeByes: Boolean = false): [SetSlot]
"""
The start time of the Set. If there is no startAt time on the Set, will pull it from phaseGroup rounds configuration.
"""
startAt: Timestamp
startedAt: Timestamp
state: Int
"""
Tournament event station for a set
"""
station: Stations
"""
Tournament event stream for a set
"""
stream: Streams
"""
If setGamesType is in total games mode, this defined the number of games in the set.
"""
totalGames: Int
"""
Url of a VOD for this set
"""
vodUrl: String
wPlacement: Int
winnerId: Int
}
"""
A game represents a single game within a set.
"""
type Game {
id: ID
"""
Score of entrant 1. For smash, this is equivalent to stocks remaining.
"""
entrant1Score: Int
"""
Score of entrant 2. For smash, this is equivalent to stocks remaining.
"""
entrant2Score: Int
images(type: String): [Image]
orderNum: Int
"""
Selections for this game such as character, etc.
"""
selections: [GameSelection]
"""
The stage that this game was played on (if applicable)
"""
stage: Stage
state: Int
winnerId: Int
}
"""
An image
"""
type Image {
id: ID
height: Float
ratio: Float
type: String
url: String
width: Float
}
"""
A selection for this game. i.e. character/stage selection, etc
"""
type GameSelection {
"""
If this is a character selection, returns the selected character.
"""
character: Character
id: ID
"""
The entrant who this selection is for
"""
entrant: Entrant
orderNum: Int
"""
The participant who this selection is for. This is only populated if there are
selections for multiple participants of a single entrant
"""
participant: Participant
selectionType: GameSelectionType
selectionValue: Int
}
"""
A character in a videogame
"""
type Character {
id: ID
images(type: String): [Image]
"""
Name of Character
"""
name: String
}
"""
A participant of a tournament; either a spectator or competitor
"""
type Participant {
id: ID
"""
If this participant was checked-in by admin
"""
checkedIn: Boolean
"""
The time this participant was checked-in by admin
"""
checkedInAt: Timestamp
"""
Info for connected accounts to external services.
"""
connectedAccounts: JSON
"""
Contact Info selected during registration. Falls back to User.location and/or
User.name if necessary. These fields are for admin use only. If you are not a
tournament admin or the participant being queried, these fields will be null.
Do not display this information publicly.
"""
contactInfo: ContactInfo
"""
Email of the user, only available to admins within 18 months of tournament completion for tournament administrators.
"""
email: String
"""
Entrants associated with this Participant, if applicable
"""
entrants: [Entrant]
"""
The events this participant registered for within a Tournament.
"""
events: [Event]
"""
The tag that was used when the participant registered, e.g. Mang0
"""
gamerTag: String
images(type: String): [Image]
player: Player
"""
The prefix that the user set for this Tournament, e.g. C9
"""
prefix: String
"""
Tournament Admin viewable field. Shows details for required social connections
"""
requiredConnections: [ProfileAuthorization]
"""
The user this participant is associated to.
"""
user: User
"""
If this participant is verified as actually being in the tournament
"""
verified: Boolean
}
"""
Name, address, etc
"""
type ContactInfo {
id: ID
"""
Participant City Name
"""
city: String
"""
Participant Country Name
"""
country: String
"""
Participant Country (region) id
"""
countryId: Int
name: String
"""
First Name
"""
nameFirst: String
"""
Last Name
"""
nameLast: String
"""
Participant State Name
"""
state: String
"""
Participant State (region) id
"""
stateId: Int
"""
Zip or Postal Code
"""
zipcode: String
}
"""
A player
"""
type Player {
id: ID
gamerTag: String
prefix: String
"""
Most recent active & published rankings
"""
rankings(limit: Int, videogameId: ID): [PlayerRank]
"""
Recent sets for this player.
"""
recentSets(
"""
Use this to get H2H history between two players
"""
opponentId: ID
): [Set] @deprecated(reason: "Use the sets field instead.")
"""
Recent standings
"""
recentStandings(
videogameId: ID
"""
Number of recent standings to fetch. Default value is 3. Maximum value is 20.
"""
limit: Int
): [Standing]
"""
Set history for this player.
"""
sets(
page: Int
perPage: Int
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection
user: User
}
"""
A player's ranks
"""
type PlayerRank {
id: ID
"""
The player's placement on the ranking
"""
rank: Int
title: String
}
"""
A standing indicates the placement of something within a container.
"""
type Standing {
id: ID
"""
The containing entity that contextualizes this standing. Event standings, for
example, represent an entrant's standing in the entire event vs. Set standings
which is an entrant's standing in only a single set within an event.
"""
container: StandingContainer
"""
If the entity this standing is assigned to can be resolved into an entrant, this will provide the entrant.
"""
entrant: Entrant
isFinal: Boolean
"""
Metadata that goes along with this standing. Can take on different forms based on standing group type and settings.
"""
metadata: JSON
placement: Int
"""
The player(s) tied to this standing's entity
"""
player: Player
standing: Int @deprecated(reason: "The \"placement\" field is identical and will eventually replace \"standing\"")
stats: StandingStats
totalPoints: Float
}
"""
The containing entity that this standing is for
"""
union StandingContainer = Tournament | Event | PhaseGroup | Set
"""
A tournament
"""
type Tournament {
id: ID
addrState: String
"""
Admin-only view of admins for this tournament
"""
admins(
"""
Which roles to show
"""
roles: [String]
): [User]
city: String
countryCode: String
"""
When the tournament was created (unix timestamp)
"""
createdAt: Timestamp
currency: String
"""
When the tournament ends
"""
endAt: Timestamp
"""
When does event registration close
"""
eventRegistrationClosesAt: Timestamp
events(limit: Int, filter: EventFilter): [Event]
"""
True if tournament has at least one offline event
"""
hasOfflineEvents: Boolean
hasOnlineEvents: Boolean
hashtag: String
images(type: String): [Image]
"""
True if tournament has at least one online event
"""
isOnline: Boolean
"""
Is tournament registration open
"""
isRegistrationOpen: Boolean
lat: Float
links: TournamentLinks
lng: Float
mapsPlaceId: String
"""
The tournament name
"""
name: String
"""
Number of attendees including spectators, if public
"""
numAttendees: Int
"""
The user who created the tournament
"""
owner: User
"""
Paginated, queryable list of participants
"""
participants(query: ParticipantPaginationQuery!, isAdmin: Boolean): ParticipantConnection
postalCode: String
primaryContact: String
primaryContactType: String
"""
Publishing settings for this tournament
"""
publishing: JSON
"""
When does registration for the tournament end
"""
registrationClosesAt: Timestamp
rules: String
"""
The short slug used to form the url
"""
shortSlug: String
"""
The slug used to form the url
"""
slug: String
"""
When the tournament Starts
"""
startAt: Timestamp
"""
State of the tournament, can be ActivityState::CREATED, ActivityState::ACTIVE, or ActivityState::COMPLETED
"""
state: Int
stations(page: Int, perPage: Int): StationsConnection
streamQueue: [StreamQueue]
streams: [Streams]
"""
When is the team creation deadline
"""
teamCreationClosesAt: Timestamp
"""
Paginated, queryable list of teams
"""
teams(query: TeamPaginationQuery!): TeamConnection
"""
The timezone of the tournament
"""
timezone: String
"""
The type of tournament from TournamentType
"""
tournamentType: Int
"""
When the tournament was last modified (unix timestamp)
"""
updatedAt: Timestamp
"""
Build Tournament URL
"""
url(
"""
Tournament tab to add to URL
"""
tab: String
"""
Generate a relative URL. Defaults to true. Setting to false will generate an absolute URL
"""
relative: Boolean = true
): String
venueAddress: String
venueName: String
"""
List of all waves in this tournament
"""
waves: [Wave]
}
input EventFilter {
videogameId: [ID]
type: [Int]
published: Boolean
id: ID
ids: [ID]
slug: String
fantasyEventId: ID
fantasyRosterHash: String
}
type TournamentLinks {
facebook: String
discord: String
}
input ParticipantPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: ParticipantPageFilter
}
input ParticipantPageFilter {
id: ID
ids: [ID]
eventIds: [ID]
search: PaginationSearchType
gamerTag: String
unpaid: Boolean
incompleteTeam: Boolean
missingDeck: Boolean
checkedIn: Boolean
notCheckedIn: Boolean
}
type ParticipantConnection {
pageInfo: PageInfo
nodes: [Participant]
}
type StationsConnection {
pageInfo: PageInfo
nodes: [Stations]
}
"""
Stations, such as a stream setup, at an event
"""
type Stations {
id: ID
canAutoAssign: Boolean
clusterNumber: String
clusterPrefix: Int
enabled: Boolean
identifier: Int
numSetups: Int
number: Int
prefix: String
queue: JSON
queueDepth: Int
state: Int
updatedAt: Timestamp
}
"""
A Stream queue object
"""
type StreamQueue {
id: String
"""
The sets on the stream
"""
sets: [Set]
"""
The stream on the queue
"""
stream: Streams
}
"""
Tournament Stream
"""
type Streams {
id: ID
enabled: Boolean
followerCount: Int
isOnline: Boolean
numSetups: Int
parentStreamId: Int
streamGame: String
streamId: String
streamLogo: String
streamName: String
streamSource: StreamSource
streamStatus: String
streamType: Int
streamTypeId: Int
}
"""
Represents the source of a stream
"""
enum StreamSource {
"""
Stream is on twitch.tv channel
"""
TWITCH
"""
Stream is on smashcast.tv channel
"""
HITBOX
"""
Stream is on a stream.me channel
"""
STREAMME
"""
Stream is on a mixer.com channel
"""
MIXER
"""
Stream is on a youtube.com channel
"""
YOUTUBE
}
input TeamPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: TeamPaginationFilter
}
input TeamPaginationFilter {
globalTeamId: ID
eventState: ActivityState
eventId: ID
eventIds: [ID]
minEntrantCount: Int
maxEntrantCount: Int
search: PaginationSearchType
type: Int
tournamentId: ID
memberStatus: [TeamMemberStatus]
videogameId: [ID]
isLeague: Boolean
upcoming: Boolean
past: Boolean
rosterComplete: Boolean
rosterIncomplete: Boolean
}
"""
Represents the state of an activity
"""
enum ActivityState {
"""
Activity is created
"""
CREATED
"""
Activity is active or in progress
"""
ACTIVE
"""
Activity is done
"""
COMPLETED
"""
Activity is ready to be started
"""
READY
"""
Activity is invalid
"""
INVALID
"""
Activity, like a set, has been called to start
"""
CALLED
"""
Activity is queued to run
"""
QUEUED
}
"""
Membership status of a team member
"""
enum TeamMemberStatus {
"""
"""
UNKNOWN
"""
"""
ACCEPTED
"""
"""
INVITED
"""
"""
REQUEST
"""
"""
ALUM
"""
"""
HIATUS
"""
"""
OPEN_SPOT
}
type TeamConnection {
pageInfo: PageInfo
nodes: [Team]
}
"""
A team, either at the global level or within the context of an event
"""
interface Team {
id: ID
"""
Uniquely identifying token for team. Same as the hashed part of the slug
"""
discriminator: String
entrant: Entrant @deprecated(reason: "Use the entrant field off the EventTeam type")
event: Event @deprecated(reason: "Use the event field off the EventTeam type")
images(type: String): [Image]
members(status: [TeamMemberStatus]): [TeamMember]
name: String
}
"""
A member of a team
"""
type TeamMember {
id: ID
isAlternate: Boolean
isCaptain: Boolean
"""
The type of the team member
"""
memberType: TeamMemberType
participant: Participant
player: Player
"""
The status of the team member
"""
status: TeamMemberStatus
}
"""
Membership type of a team member
"""
enum TeamMemberType {
"""
"""
PLAYER
"""
"""
STAFF
}
"""
A wave in a tournament
"""
type Wave {
id: ID
"""
The Wave Identifier
"""
identifier: String
"""
Unix time the wave is scheduled to start.
"""
startAt: Timestamp
}
"""
A group within a phase
"""
type PhaseGroup {
id: ID
"""
The bracket type of this group's phase.
"""
bracketType: BracketType
"""
URL for this phase groups's bracket.
"""
bracketUrl: String
"""
Unique identifier for this group within the context of its phase
"""
displayIdentifier: String
"""
For the given phase group, this is the start time of the first round that occurs in the group.
"""
firstRoundTime: Timestamp
numRounds: Int
paginatedSeeds(query: SeedPaginationQuery!, eventId: ID): SeedConnection @deprecated(reason: "Please use 'seeds', which is now paginated")
"""
Paginated sets on this phaseGroup
"""
paginatedSets(
page: Int
perPage: Int
"""
How to sort these sets
"""
sortType: SetSortType
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection @deprecated(reason: "Please use 'sets', which is now paginated")
"""
The phase associated with this phase group
"""
phase: Phase
"""
The progressions out of this phase group
"""
progressionsOut: [Progression]
rounds: [Round]
seedMap: JSON
"""
Paginated seeds for this phase group
"""
seeds(query: SeedPaginationQuery!, eventId: ID): SeedConnection
"""
Paginated sets on this phaseGroup
"""
sets(
page: Int
perPage: Int
"""
How to sort these sets
"""
sortType: SetSortType
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection
"""
Paginated list of standings
"""
standings(query: StandingGroupStandingPageFilter): StandingConnection
"""
Unix time the group is scheduled to start. This info could also be on the wave instead.
"""
startAt: Timestamp
state: Int
tiebreakOrder: JSON
wave: Wave
}
"""
The type of Bracket format that a Phase is configured with.
"""
enum BracketType {
"""
"""
SINGLE_ELIMINATION
"""
"""
DOUBLE_ELIMINATION
"""
"""
ROUND_ROBIN
"""
"""
SWISS
"""
"""
EXHIBITION
"""
"""
CUSTOM_SCHEDULE
"""
"""
MATCHMAKING
"""
"""
ELIMINATION_ROUNDS
"""
"""
RACE
"""
"""
CIRCUIT
}
input SeedPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: SeedPageFilter
}
input SeedPageFilter {
id: ID
entrantName: String
checkInState: [Int]
phaseGroupId: [ID]
eventCheckInGroupId: ID
phaseId: [ID]
eventId: ID
search: PaginationSearchType
}
type SeedConnection {
pageInfo: PageInfo
nodes: [Seed]
}
"""
A seed for an entrant
"""
type Seed {
id: ID
"""
Map of Participant ID to checked in boolean
"""
checkedInParticipants: JSON
entrant: Entrant
groupSeedNum: Int
isBye: Boolean
phase: Phase
phaseGroup: PhaseGroup
placeholderName: String
placement: Int
"""
The player(s) associated with this seed's entrant
"""
players: [Player]
progressionSeedId: Int
"""
Source progression information
"""
progressionSource: Progression
seedNum: Int
"""
Entrant's win/loss record for this standing. Scores do not include byes.
"""
setRecordWithoutByes(phaseGroupId: ID!): JSON
standings(
"""
The container of the standing groups to get standings for. If null, will return all standings.
"""
containerType: String
): [Standing]
}
"""
A phase in an event
"""
type Phase {
id: ID
"""
The bracket type of this phase.
"""
bracketType: BracketType
"""
The Event that this phase belongs to
"""
event: Event
"""
Number of phase groups in this phase
"""
groupCount: Int
"""
Is the phase an exhibition or not.
"""
isExhibition: Boolean
"""
Name of phase e.g. Round 1 Pools
"""
name: String
"""
The number of seeds this phase contains.
"""
numSeeds: Int
paginatedSeeds(query: SeedPaginationQuery!, eventId: ID): SeedConnection @deprecated(reason: "Please use 'seeds' instead")
"""
Phase groups under this phase, paginated
"""
phaseGroups(query: PhaseGroupPageQuery): PhaseGroupConnection
"""
The relative order of this phase within an event
"""
phaseOrder: Int
"""
Paginated seeds for this phase
"""
seeds(query: SeedPaginationQuery!, eventId: ID): SeedConnection
"""
Paginated sets for this Phase
"""
sets(
page: Int
perPage: Int
"""
How to sort these sets
"""
sortType: SetSortType
"""
Supported filter options to filter down set results.
"""
filters: SetFilters
): SetConnection
"""
State of the phase
"""
state: ActivityState
waves: [Wave]
}
input PhaseGroupPageQuery {
page: Int
perPage: Int
sortBy: String
entrantIds: [ID]
filter: PhaseGroupPageQueryFilter
}
input PhaseGroupPageQueryFilter {
id: [ID]
waveId: ID
}
type PhaseGroupConnection {
pageInfo: PageInfo
nodes: [PhaseGroup]
}
"""
A connection between a placement in an origin phase group to a destination seed.
"""
type Progression {
id: ID
originOrder: Int
originPhase: Phase
originPhaseGroup: PhaseGroup
originPlacement: Int
}
"""
A round within a phase group
"""
type Round {
id: ID
"""
If applicable, bestOf is the number of games
one must win a majority out of to win a set in this round
"""
bestOf: Int
"""
Indicates this round's order in the phase group
"""
number: Int
"""
The time that this round is scheduled to start at
"""
startAt: Timestamp
}
input StandingGroupStandingPageFilter {
page: Int
perPage: Int
sortBy: String
}
type StandingConnection {
pageInfo: PageInfo
nodes: [Standing]
}
"""
Any stats related to this standing. This type is experimental and very likely to change in the future.
"""
type StandingStats {
score: Score
}
"""
The score that led to this standing being awarded. The meaning of this field can
vary by standing type and is not used for some standing types.
"""
type Score {
"""
The name of this score. e.g. "Kills" or "Stocks"
"""
label: String
"""
The raw score value
"""
value: Float
"""
Like value, but formatted for race format events. Formatted according to the race config for the front end to use.
"""
displayValue: String
}
"""
The type of selection i.e. is it for a character or something else
"""
enum GameSelectionType {
"""
Character selection
"""
CHARACTER
}
"""
Video Stage
"""
type Stage {
id: ID
"""
Stage name
"""
name: String
}
type ResetAffectedData {
affectedSetCount: Int
affectedSets: [Set]
affectedPhaseGroupCount: Int
}
"""
A slot in a set where a seed currently or will eventually exist in order to participate in the set.
"""
type SetSlot {
id: ID
entrant: Entrant
"""
Pairs with prereqType, is the ID of the prereq.
"""
prereqId: String
"""
Given a set prereq type, defines the placement required in the origin set to end up in this slot.
"""
prereqPlacement: Int
"""
Describes where the entity in this slot comes from.
"""
prereqType: String
seed: Seed
"""
The index of the slot. Unique per set.
"""
slotIndex: Int
"""
The standing within this set for the seed currently assigned to this slot.
"""
standing: Standing
}
"""
A league
"""
type League {
id: ID
addrState: String
city: String
countryCode: String
"""
When the tournament was created (unix timestamp)
"""
createdAt: Timestamp
currency: String
"""
When the tournament ends
"""
endAt: Timestamp
entrantCount: Int
eventOwners(query: EventOwnersQuery): EventOwnerConnection
"""
When does event registration close
"""
eventRegistrationClosesAt: Timestamp
"""
Paginated list of events in a league
"""
events(query: LeagueEventsQuery): EventConnection
"""
Hacked "progression" into this final event
"""
finalEventId: Int @deprecated(reason: "No longer used")
"""
True if tournament has at least one offline event
"""
hasOfflineEvents: Boolean
hasOnlineEvents: Boolean
hashtag: String
images(type: String): [Image]
"""
True if tournament has at least one online event
"""
isOnline: Boolean
lat: Float
links: TournamentLinks
lng: Float
mapsPlaceId: String
"""
The tournament name
"""
name: String
"""
Top X number of people in the standings who progress to final event
"""
numProgressingToFinalEvent: Int @deprecated(reason: "No longer used")
numUniquePlayers: Int
postalCode: String
primaryContact: String
primaryContactType: String
"""
Publishing settings for this tournament
"""
publishing: JSON
"""
When does registration for the tournament end
"""
registrationClosesAt: Timestamp
rules: String
"""
The short slug used to form the url
"""
shortSlug: String
"""
Whether standings for this league should be visible
"""
showStandings: Boolean
slug: String
"""
Paginated list of standings
"""
standings(query: StandingGroupStandingPageFilter): StandingConnection
"""
When the tournament Starts
"""
startAt: Timestamp
"""
State of the tournament, can be ActivityState::CREATED, ActivityState::ACTIVE, or ActivityState::COMPLETED
"""
state: Int
"""
When is the team creation deadline
"""
teamCreationClosesAt: Timestamp
tiers: [EventTier]
"""
The timezone of the tournament
"""
timezone: String
"""
The type of tournament from TournamentType
"""
tournamentType: Int
"""
When the tournament was last modified (unix timestamp)
"""
updatedAt: Timestamp
"""
Build Tournament URL
"""
url(
"""
Tournament tab to add to URL
"""
tab: String
"""
Generate a relative URL. Defaults to true. Setting to false will generate an absolute URL
"""
relative: Boolean = true
): String
venueAddress: String
venueName: String
videogames: [Videogame]
}
input EventOwnersQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
}
type EventOwnerConnection {
pageInfo: PageInfo
nodes: [EventOwner]
}
"""
Name and Gamertag of the owner of an event in a league
"""
type EventOwner {
eventId: ID
email: String
gamerTag: String
fullName: String
}
input LeagueEventsQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: LeagueEventsFilter
}
input LeagueEventsFilter {
search: PaginationSearchType
pointMappingGroupIds: [ID]
tierIds: [ID]
userId: ID
upcoming: Boolean
leagueEntrantId: ID
}
"""
Used for league application tiers
"""
type EventTier {
id: ID
"""
Name of this tier
"""
name: String
}
"""
A videogame
"""
type Videogame {
id: ID
"""
All characters for this videogame
"""
characters: [Character]
displayName: String
images(type: String): [Image]
name: String
slug: String
"""
All stages for this videogame
"""
stages: [Stage]
}
input StandingPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: StandingPageFilter
}
input StandingPageFilter {
id: ID
ids: [ID]
search: PaginationSearchType
}
input StationFilter {
page: Int
perPage: Int
}
"""
Team roster size requirements
"""
type TeamRosterSize {
maxAlternates: Int
maxPlayers: Int
minAlternates: Int
minPlayers: Int
}
input UserLeaguesPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: UserLeaguesPaginationFilter
}
input UserLeaguesPaginationFilter {
videogameId: [ID]
upcoming: Boolean
past: Boolean
search: PaginationSearchType
}
type LeagueConnection {
pageInfo: PageInfo
nodes: [League]
}
"""
A user's address
"""
type Address {
id: ID
city: String
country: String
countryId: Int
state: String
stateId: Int
}
input UserTournamentsPaginationQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: UserTournamentsPaginationFilter
}
input UserTournamentsPaginationFilter {
past: Boolean
upcoming: Boolean
search: PaginationSearchType
videogameId: [ID]
tournamentView: String
excludeId: [ID]
}
type TournamentConnection {
pageInfo: PageInfo
nodes: [Tournament]
}
input LeagueQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: LeaguePageFilter
sort: TournamentPaginationSort
}
input LeaguePageFilter {
id: ID
ids: [ID]
"""
ID of the user that owns this league.
"""
ownerId: ID
afterDate: Timestamp
beforeDate: Timestamp
computedUpdatedAt: Timestamp
name: String
isFeatured: Boolean
hasBannerImages: Boolean
activeShops: Boolean
past: Boolean
published: Boolean
publiclySearchable: Boolean
upcoming: Boolean
videogameIds: [ID]
}
enum TournamentPaginationSort {
"""
"""
startAt
"""
"""
endAt
"""
"""
eventRegistrationClosesAt
"""
"""
computedUpdatedAt
}
"""
A shop
"""
type Shop {
id: ID
levels(query: ShopLevelsQuery): ShopLevelConnection
messages(query: ShopOrderMessagesQuery): ShopOrderMessageConnection
name: String
slug: String
url: String
}
input ShopLevelsQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
}
type ShopLevelConnection {
pageInfo: PageInfo
nodes: [ShopLevel]
}
"""
A shop level
"""
type ShopLevel {
id: ID
currAmount: Float
description: String
goalAmount: Float
images(type: String): [Image]
name: String
}
input ShopOrderMessagesQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
}
type ShopOrderMessageConnection {
pageInfo: PageInfo
nodes: [ShopOrderMessage]
}
"""
The message and player info for a shop order
"""
type ShopOrderMessage {
id: ID
"""
The player's gamertag. Returns null if anonymous message type
"""
gamertag: String
"""
The order message
"""
message: String
"""
The player's name. Returns null unless name & tag display is selected
"""
name: String
"""
The player who left the comment
"""
player: Player
"""
The total order amount
"""
total: Float
}
input TournamentQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: TournamentPageFilter
sort: TournamentPaginationSort
}
input TournamentPageFilter {
id: ID
ids: [ID]
"""
ID of the user that owns this tournament.
"""
ownerId: ID
"""
If true, filter to only tournaments the currently authed user is an admin of
"""
isCurrentUserAdmin: Boolean
countryCode: String
addrState: String
location: TournamentLocationFilter
afterDate: Timestamp
beforeDate: Timestamp
computedUpdatedAt: Timestamp
name: String
venueName: String
isFeatured: Boolean
isLeague: Boolean
hasBannerImages: Boolean
activeShops: Boolean
regOpen: Boolean
past: Boolean
published: Boolean
publiclySearchable: Boolean
staffPicks: Boolean
hasOnlineEvents: Boolean
topGames: TopGameFilter
upcoming: Boolean
videogameIds: [ID]
sortByScore: Boolean
}
input TournamentLocationFilter {
"""
Latitude, Longitude
"""
distanceFrom: String
"""
e.g. 50mi
"""
distance: String
}
input TopGameFilter {
"""
Array of which # top game you want to filter on.e.g. [2, 3] will filter on the 2nd and 3rd top games
"""
gameNums: [Int]
}
input VideogameQuery {
page: Int = 1
"""
How many nodes to return for the page. Maximum value of 500
"""
perPage: Int = 25
sortBy: String
filter: VideogamePageFilter
}
input VideogamePageFilter {
id: [ID]
name: String
forUser: ID
}
type VideogameConnection {
pageInfo: PageInfo
nodes: [Videogame]
}
type Mutation {
"""
Delete a phase by id
"""
deletePhase(phaseId: ID!): Boolean
"""
Delete a station by id
"""
deleteStation(stationId: ID!): Boolean
"""
Delete a wave by id
"""
deleteWave(waveId: ID!): Boolean
"""
Generate tournament registration Token on behalf of user
"""
generateRegistrationToken(registration: TournamentRegistrationInput!, userId: ID!): String
"""
Update a set to called state
"""
markSetCalled(setId: ID!): Set
"""
Update a set to called state
"""
markSetInProgress(setId: ID!): Set
"""
Register for tournament
"""
registerForTournament(registration: TournamentRegistrationInput, registrationToken: String): Participant
"""
Report set winner or game stats for a H2H bracket set. If winnerId is
supplied, mark set as complete. gameData parameter will overwrite any existing
reported game data.
"""
reportBracketSet(setId: ID!, winnerId: ID, isDQ: Boolean, gameData: [BracketSetGameDataInput]): [Set]
"""
Resets set to initial state, can affect other sets and phase groups
"""
resetSet(setId: ID!, resetDependentSets: Boolean): Set
"""
Automatically attempt to resolve all schedule conflicts. Returns a list of changed seeds
"""
resolveScheduleConflicts(tournamentId: ID!, options: ResolveConflictsOptions): [Seed]
"""
Swap two seed ids in a phase
"""
swapSeeds(phaseId: ID!, seed1Id: ID!, seed2Id: ID!): [Seed]
"""
Update game stats for a H2H bracket set. Set winner cannot be changed with
this function, use the resetSet mutation instead.
"""
updateBracketSet(setId: ID!, winnerId: ID, isDQ: Boolean, gameData: [BracketSetGameDataInput]): Set
"""
Update set of phase groups in a phase
"""
updatePhaseGroups(groupConfigs: [PhaseGroupUpdateInput]!): [PhaseGroup]
"""
Update the seeding for a phase
"""
updatePhaseSeeding(phaseId: ID!, seedMapping: [UpdatePhaseSeedInfo]!, options: UpdatePhaseSeedingOptions): Phase
"""
Create or update a Phase
"""
upsertPhase(phaseId: ID, eventId: ID, payload: PhaseUpsertInput!): Phase
"""
Add or update a station by id
"""
upsertStation(stationId: ID, tournamentId: ID, fields: StationUpsertInput!): Stations
"""
Add or update a wave by id
"""
upsertWave(waveId: ID, tournamentId: ID, fields: WaveUpsertInput!): Wave
}
input TournamentRegistrationInput {
eventIds: [ID]
}
"""
Game specific H2H set data such as character, stage, and stock info
"""
input BracketSetGameDataInput {
"""
Entrant ID of game winner
"""
winnerId: ID
"""
Game number
"""
gameNum: Int!
"""
Score for entrant 1 (if applicable). For smash, this is stocks remaining.
"""
entrant1Score: Int
"""
Score for entrant 2 (if applicable). For smash, this is stocks remaining.
"""
entrant2Score: Int
"""
ID of the stage that was played for this game (if applicable)
"""
stageId: ID
"""
List of selections for the game, typically character selections.
"""
selections: [BracketSetGameSelectionInput]
}
"""
Game specific H2H selections made by the entrants, such as character info
"""
input BracketSetGameSelectionInput {
"""
Entrant ID that made selection
"""
entrantId: ID!
"""
Character selected by this entrant for this game.
"""
characterId: Int
}
input ResolveConflictsOptions {
lockedSeeds: [ResolveConflictsLockedSeedConfig]
}
input ResolveConflictsLockedSeedConfig {
eventId: ID!
numSeeds: Int!
}
input PhaseGroupUpdateInput {
phaseGroupId: ID!
stationId: ID
waveId: ID
}
input UpdatePhaseSeedInfo {
seedId: ID!
seedNum: ID!
phaseGroupId: ID
}
input UpdatePhaseSeedingOptions {
"""
Validate that seedMapping exactly accounts for all entrants in the phase
"""
strictMode: Boolean
}
input PhaseUpsertInput {
"""
The name of the Phase. For example, "Top 8" or "Pools"
"""
name: String
"""
The number of pools to configure for the Phase. Only applies to brackets that support pools
"""
groupCount: Int
bracketType: BracketType
}
input StationUpsertInput {
number: Int!
clusterId: ID
}
input WaveUpsertInput {
identifier: String!
startAt: Timestamp!
endAt: Timestamp!
}
"""
A set of actions available for an entity to take
"""
interface ActionSet {
id: ID
}
"""
Bracket-specific configuration
"""
interface BracketConfig {
id: ID
bracketType: BracketType
}
"""
Comparison operator
"""
enum Comparator {
"""
"""
GREATER_THAN
"""
"""
GREATER_THAN_OR_EQUAL
"""
"""
EQUAL
"""
"""
LESS_THAN_OR_EQUAL
"""
"""
LESS_THAN
}
"""
An event-level Team, in the context of some competition
"""
type EventTeam implements Team {
id: ID
"""
Uniquely identifying token for team. Same as the hashed part of the slug
"""
discriminator: String
entrant: Entrant @deprecated(reason: "Use the entrant field off the EventTeam type")
event: Event @deprecated(reason: "Use the event field off the EventTeam type")
globalTeam: GlobalTeam
images(type: String): [Image]
members(status: [TeamMemberStatus]): [TeamMember]
name: String
}
"""
Global Team
"""
type GlobalTeam implements Team {
id: ID
"""
Uniquely identifying token for team. Same as the hashed part of the slug
"""
discriminator: String
entrant: Entrant @deprecated(reason: "Use the entrant field off the EventTeam type")
event: Event @deprecated(reason: "Use the event field off the EventTeam type")
eventTeams(query: TeamPaginationQuery): EventTeamConnection
images(type: String): [Image]
"""
Leagues-level teams for leagues this team is competing in
"""
leagueTeams(query: TeamPaginationQuery): EventTeamConnection
members(status: [TeamMemberStatus]): [TeamMember]
name: String
}
type EventTeamConnection {
pageInfo: PageInfo
nodes: [EventTeam]
}
"""
Match-level configuration
"""
interface MatchConfig {
id: ID
bracketType: BracketType
}
"""
Different options available for verifying player-reported match results
"""
enum MatchConfigVerificationMethod {
"""
"""
TWITCH
"""
"""
STREAM_ME
"""
"""
ANY
"""
"""
MIXER
"""
"""
YOUTUBE
}
"""
Race specific bracket configuration
"""
type RaceBracketConfig implements BracketConfig {
automaticEndTime: Timestamp
id: ID
automaticStartTime: Timestamp
bracketType: BracketType
goalTargetComparator: Comparator
goalTargetValue: String
limitMode: RaceLimitMode
limitValue: Int
raceType: RaceType
}
"""
Enforces limits on the amount of allowable Race submissions
"""
enum RaceLimitMode {
"""
"""
BEST_ALL
"""
"""
FIRST_ALL
"""
"""
PLAYTIME
}
"""
Race type
"""
enum RaceType {
"""
"""
GOALS
"""
"""
TIMED
}
"""
Race specific match configuration
"""
type RaceMatchConfig implements MatchConfig {
id: ID
bracketType: BracketType
"""
Can players report results?
"""
playerReportingEnabled: Boolean
"""
Accepted methods of verification that players can use
"""
verificationMethods: [MatchConfigVerificationMethod]
"""
Are players required to submit verification of their reported results?
"""
verificationRequired: Boolean
}
"""
A set of actions available for a team to take
"""
type TeamActionSet implements ActionSet {
id: ID
}