Skip to content

Schema

The normative contract, as GraphQL SDL: the schema the endpoint serves to partners. Field names, types and nullability are authoritative; see Introspection. The raw file is partner-schema.gql.

# Bolt6 golf data API: partner schema
#
# Contract version: 1.1.0-draft
#
# This is the schema the endpoint serves to partners, generated by introspection with a partner token.
# It is normative: every operation in operations/ is validated against it. What SDL cannot say (units,
# coordinates, time, delivery, auth, errors, versioning) is in docs/reference.md; worked examples are in
# docs/integration.md.
#
# Two directions:
#   mutations (you -> Bolt6): tournament, course, rounds, groups, stroke reports (upsert*, retractStroke)
#   queries/subscriptions (Bolt6 -> you): ball positions, pin and tee positions, and what you sent
#
# The filter (`*_bool_exp`), ordering (`*_order_by`) and cursor (`*_stream_cursor_*`) inputs are generated;
# read them as the arguments each root field accepts.

schema {
  query: query_root
  mutation: mutation_root
  subscription: subscription_root
}

"""whether this query should be cached (Hasura Cloud only)"""
directive @cached(
  """measured in seconds"""
  ttl: Int! = 60

  """refresh the cache entry"""
  refresh: Boolean! = false
) on QUERY

"""
columns and relationships of "ball_positions"
"""
type BallPosition {
  elevation: float8

  """An object relationship"""
  group: Group
  groupId: bigint
  hatArgb: Int
  hole: Int
  holeOrder: Int
  inTheHole: Boolean
  lat: float8
  lon: float8
  observedAt: timestamptz
  pantsArgb: Int

  """An object relationship"""
  player: Player
  playerId: bigint
  recordedAt: timestamptz
  retracted: Boolean
  revision: bigint

  """An object relationship"""
  round: Round
  roundId: bigint
  shirtArgb: Int
  state: String
  strokeId: bigint
  strokeKind: String
  strokeNum: Int
  strokeProviderId: String
  subSurface: String
  surface: String
}

"""
Boolean expression to filter rows from the table "ball_positions". All fields are combined with a logical 'AND'.
"""
input BallPosition_bool_exp {
  _and: [BallPosition_bool_exp!]
  _not: BallPosition_bool_exp
  _or: [BallPosition_bool_exp!]
  elevation: float8_comparison_exp
  group: Group_bool_exp
  groupId: bigint_comparison_exp
  hatArgb: Int_comparison_exp
  hole: Int_comparison_exp
  holeOrder: Int_comparison_exp
  inTheHole: Boolean_comparison_exp
  lat: float8_comparison_exp
  lon: float8_comparison_exp
  observedAt: timestamptz_comparison_exp
  pantsArgb: Int_comparison_exp
  player: Player_bool_exp
  playerId: bigint_comparison_exp
  recordedAt: timestamptz_comparison_exp
  retracted: Boolean_comparison_exp
  revision: bigint_comparison_exp
  round: Round_bool_exp
  roundId: bigint_comparison_exp
  shirtArgb: Int_comparison_exp
  state: String_comparison_exp
  strokeId: bigint_comparison_exp
  strokeKind: String_comparison_exp
  strokeNum: Int_comparison_exp
  strokeProviderId: String_comparison_exp
  subSurface: String_comparison_exp
  surface: String_comparison_exp
}

"""Ordering options when selecting data from "ball_positions"."""
input BallPosition_order_by {
  elevation: order_by
  group: Group_order_by
  groupId: order_by
  hatArgb: order_by
  hole: order_by
  holeOrder: order_by
  inTheHole: order_by
  lat: order_by
  lon: order_by
  observedAt: order_by
  pantsArgb: order_by
  player: Player_order_by
  playerId: order_by
  recordedAt: order_by
  retracted: order_by
  revision: order_by
  round: Round_order_by
  roundId: order_by
  shirtArgb: order_by
  state: order_by
  strokeId: order_by
  strokeKind: order_by
  strokeNum: order_by
  strokeProviderId: order_by
  subSurface: order_by
  surface: order_by
}

"""
select columns of table "ball_positions"
"""
enum BallPosition_select_column {
  """column name"""
  elevation

  """column name"""
  groupId

  """column name"""
  hatArgb

  """column name"""
  hole

  """column name"""
  holeOrder

  """column name"""
  inTheHole

  """column name"""
  lat

  """column name"""
  lon

  """column name"""
  observedAt

  """column name"""
  pantsArgb

  """column name"""
  playerId

  """column name"""
  recordedAt

  """column name"""
  retracted

  """column name"""
  revision

  """column name"""
  roundId

  """column name"""
  shirtArgb

  """column name"""
  state

  """column name"""
  strokeId

  """column name"""
  strokeKind

  """column name"""
  strokeNum

  """column name"""
  strokeProviderId

  """column name"""
  subSurface

  """column name"""
  surface
}

"""
Streaming cursor of the table "BallPosition"
"""
input BallPosition_stream_cursor_input {
  """Stream column input with initial value"""
  initial_value: BallPosition_stream_cursor_value_input!

  """cursor ordering"""
  ordering: cursor_ordering
}

"""Initial value of the column from where the streaming should start"""
input BallPosition_stream_cursor_value_input {
  elevation: float8
  groupId: bigint
  hatArgb: Int
  hole: Int
  holeOrder: Int
  inTheHole: Boolean
  lat: float8
  lon: float8
  observedAt: timestamptz
  pantsArgb: Int
  playerId: bigint
  recordedAt: timestamptz
  retracted: Boolean
  revision: bigint
  roundId: bigint
  shirtArgb: Int
  state: String
  strokeId: bigint
  strokeKind: String
  strokeNum: Int
  strokeProviderId: String
  subSurface: String
  surface: String
}

"""
Boolean expression to compare columns of type "Boolean". All fields are combined with logical 'AND'.
"""
input Boolean_comparison_exp {
  _eq: Boolean
  _gt: Boolean
  _gte: Boolean
  _in: [Boolean!]
  _is_null: Boolean
  _lt: Boolean
  _lte: Boolean
  _neq: Boolean
  _nin: [Boolean!]
}

"""
columns and relationships of "courses"
"""
type Course {
  """An array relationship"""
  groups(
    """distinct select on columns"""
    distinct_on: [Group_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Group_order_by!]

    """filter the rows returned"""
    where: Group_bool_exp
  ): [Group!]!

  """An array relationship"""
  holes(
    """distinct select on columns"""
    distinct_on: [Hole_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Hole_order_by!]

    """filter the rows returned"""
    where: Hole_bool_exp
  ): [Hole!]!
  id: bigint!
  name: String
  providerId: String

  """An array relationship"""
  rounds(
    """distinct select on columns"""
    distinct_on: [Round_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Round_order_by!]

    """filter the rows returned"""
    where: Round_bool_exp
  ): [Round!]!

  """An object relationship"""
  tournament: Tournament
  tournamentId: bigint
}

input CourseInput {
  holes: [HoleInput!]!
  name: String!
  providerId: String!
  tournament: String!
}

"""
order by aggregate values of table "courses"
"""
input Course_aggregate_order_by {
  avg: Course_avg_order_by
  count: order_by
  max: Course_max_order_by
  min: Course_min_order_by
  stddev: Course_stddev_order_by
  stddev_pop: Course_stddev_pop_order_by
  stddev_samp: Course_stddev_samp_order_by
  sum: Course_sum_order_by
  var_pop: Course_var_pop_order_by
  var_samp: Course_var_samp_order_by
  variance: Course_variance_order_by
}

"""
order by avg() on columns of table "courses"
"""
input Course_avg_order_by {
  id: order_by
  tournamentId: order_by
}

"""
Boolean expression to filter rows from the table "courses". All fields are combined with a logical 'AND'.
"""
input Course_bool_exp {
  _and: [Course_bool_exp!]
  _not: Course_bool_exp
  _or: [Course_bool_exp!]
  groups: Group_bool_exp
  holes: Hole_bool_exp
  id: bigint_comparison_exp
  name: String_comparison_exp
  providerId: String_comparison_exp
  rounds: Round_bool_exp
  tournament: Tournament_bool_exp
  tournamentId: bigint_comparison_exp
}

"""
order by max() on columns of table "courses"
"""
input Course_max_order_by {
  id: order_by
  name: order_by
  providerId: order_by
  tournamentId: order_by
}

"""
order by min() on columns of table "courses"
"""
input Course_min_order_by {
  id: order_by
  name: order_by
  providerId: order_by
  tournamentId: order_by
}

"""Ordering options when selecting data from "courses"."""
input Course_order_by {
  groups_aggregate: Group_aggregate_order_by
  holes_aggregate: Hole_aggregate_order_by
  id: order_by
  name: order_by
  providerId: order_by
  rounds_aggregate: Round_aggregate_order_by
  tournament: Tournament_order_by
  tournamentId: order_by
}

"""
select columns of table "courses"
"""
enum Course_select_column {
  """column name"""
  id

  """column name"""
  name

  """column name"""
  providerId

  """column name"""
  tournamentId
}

"""
order by stddev() on columns of table "courses"
"""
input Course_stddev_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by stddev_pop() on columns of table "courses"
"""
input Course_stddev_pop_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by stddev_samp() on columns of table "courses"
"""
input Course_stddev_samp_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by sum() on columns of table "courses"
"""
input Course_sum_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by var_pop() on columns of table "courses"
"""
input Course_var_pop_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by var_samp() on columns of table "courses"
"""
input Course_var_samp_order_by {
  id: order_by
  tournamentId: order_by
}

"""
order by variance() on columns of table "courses"
"""
input Course_variance_order_by {
  id: order_by
  tournamentId: order_by
}

"""
columns and relationships of "groups"
"""
type Group {
  """An object relationship"""
  course: Course!
  courseId: bigint!
  id: bigint!

  """An array relationship"""
  players(
    """distinct select on columns"""
    distinct_on: [GroupPlayer_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [GroupPlayer_order_by!]

    """filter the rows returned"""
    where: GroupPlayer_bool_exp
  ): [GroupPlayer!]!
  providerId: String

  """An object relationship"""
  round: Round!
  roundId: bigint!
  segment: String
  startHole: Int!
  startHoleOrder: Int!
}

input GroupInput {
  players: [GroupPlayerInput!]!
  providerId: String!
  round: String!
  segment: String
  startHole: Int!
  startHoleOrder: Int!
  tournament: String!
}

"""
columns and relationships of "group_players"
"""
type GroupPlayer {
  """An object relationship"""
  group: Group!
  groupId: bigint!
  order: Int!

  """An object relationship"""
  player: Player!
  playerId: bigint!
}

input GroupPlayerInput {
  firstName: String!
  lastName: String!
  order: Int!
  providerId: String!
}

"""
order by aggregate values of table "group_players"
"""
input GroupPlayer_aggregate_order_by {
  avg: GroupPlayer_avg_order_by
  count: order_by
  max: GroupPlayer_max_order_by
  min: GroupPlayer_min_order_by
  stddev: GroupPlayer_stddev_order_by
  stddev_pop: GroupPlayer_stddev_pop_order_by
  stddev_samp: GroupPlayer_stddev_samp_order_by
  sum: GroupPlayer_sum_order_by
  var_pop: GroupPlayer_var_pop_order_by
  var_samp: GroupPlayer_var_samp_order_by
  variance: GroupPlayer_variance_order_by
}

"""
order by avg() on columns of table "group_players"
"""
input GroupPlayer_avg_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
Boolean expression to filter rows from the table "group_players". All fields are combined with a logical 'AND'.
"""
input GroupPlayer_bool_exp {
  _and: [GroupPlayer_bool_exp!]
  _not: GroupPlayer_bool_exp
  _or: [GroupPlayer_bool_exp!]
  group: Group_bool_exp
  groupId: bigint_comparison_exp
  order: Int_comparison_exp
  player: Player_bool_exp
  playerId: bigint_comparison_exp
}

"""
order by max() on columns of table "group_players"
"""
input GroupPlayer_max_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by min() on columns of table "group_players"
"""
input GroupPlayer_min_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""Ordering options when selecting data from "group_players"."""
input GroupPlayer_order_by {
  group: Group_order_by
  groupId: order_by
  order: order_by
  player: Player_order_by
  playerId: order_by
}

"""
select columns of table "group_players"
"""
enum GroupPlayer_select_column {
  """column name"""
  groupId

  """column name"""
  order

  """column name"""
  playerId
}

"""
order by stddev() on columns of table "group_players"
"""
input GroupPlayer_stddev_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by stddev_pop() on columns of table "group_players"
"""
input GroupPlayer_stddev_pop_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by stddev_samp() on columns of table "group_players"
"""
input GroupPlayer_stddev_samp_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by sum() on columns of table "group_players"
"""
input GroupPlayer_sum_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by var_pop() on columns of table "group_players"
"""
input GroupPlayer_var_pop_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by var_samp() on columns of table "group_players"
"""
input GroupPlayer_var_samp_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by variance() on columns of table "group_players"
"""
input GroupPlayer_variance_order_by {
  groupId: order_by
  order: order_by
  playerId: order_by
}

"""
order by aggregate values of table "groups"
"""
input Group_aggregate_order_by {
  avg: Group_avg_order_by
  count: order_by
  max: Group_max_order_by
  min: Group_min_order_by
  stddev: Group_stddev_order_by
  stddev_pop: Group_stddev_pop_order_by
  stddev_samp: Group_stddev_samp_order_by
  sum: Group_sum_order_by
  var_pop: Group_var_pop_order_by
  var_samp: Group_var_samp_order_by
  variance: Group_variance_order_by
}

"""
order by avg() on columns of table "groups"
"""
input Group_avg_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
Boolean expression to filter rows from the table "groups". All fields are combined with a logical 'AND'.
"""
input Group_bool_exp {
  _and: [Group_bool_exp!]
  _not: Group_bool_exp
  _or: [Group_bool_exp!]
  course: Course_bool_exp
  courseId: bigint_comparison_exp
  id: bigint_comparison_exp
  players: GroupPlayer_bool_exp
  providerId: String_comparison_exp
  round: Round_bool_exp
  roundId: bigint_comparison_exp
  segment: String_comparison_exp
  startHole: Int_comparison_exp
  startHoleOrder: Int_comparison_exp
}

"""
order by max() on columns of table "groups"
"""
input Group_max_order_by {
  courseId: order_by
  id: order_by
  providerId: order_by
  roundId: order_by
  segment: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by min() on columns of table "groups"
"""
input Group_min_order_by {
  courseId: order_by
  id: order_by
  providerId: order_by
  roundId: order_by
  segment: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""Ordering options when selecting data from "groups"."""
input Group_order_by {
  course: Course_order_by
  courseId: order_by
  id: order_by
  players_aggregate: GroupPlayer_aggregate_order_by
  providerId: order_by
  round: Round_order_by
  roundId: order_by
  segment: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
select columns of table "groups"
"""
enum Group_select_column {
  """column name"""
  courseId

  """column name"""
  id

  """column name"""
  providerId

  """column name"""
  roundId

  """column name"""
  segment

  """column name"""
  startHole

  """column name"""
  startHoleOrder
}

"""
order by stddev() on columns of table "groups"
"""
input Group_stddev_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by stddev_pop() on columns of table "groups"
"""
input Group_stddev_pop_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by stddev_samp() on columns of table "groups"
"""
input Group_stddev_samp_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by sum() on columns of table "groups"
"""
input Group_sum_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by var_pop() on columns of table "groups"
"""
input Group_var_pop_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by var_samp() on columns of table "groups"
"""
input Group_var_samp_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
order by variance() on columns of table "groups"
"""
input Group_variance_order_by {
  courseId: order_by
  id: order_by
  roundId: order_by
  startHole: order_by
  startHoleOrder: order_by
}

"""
columns and relationships of "holes"
"""
type Hole {
  """An object relationship"""
  course: Course!
  courseId: bigint!
  number: Int!
  par: Int
}

input HoleInput {
  number: Int!
  par: Int
}

"""
columns and relationships of "hole_references"
"""
type HoleReference {
  elevation: float8!
  hole: Int!
  lat: float8!
  lon: float8!

  """An object relationship"""
  round: Round!
  roundId: bigint!
  type: hole_reference_types_enum!
  updatedAt: timestamptz!
}

"""
order by aggregate values of table "hole_references"
"""
input HoleReference_aggregate_order_by {
  avg: HoleReference_avg_order_by
  count: order_by
  max: HoleReference_max_order_by
  min: HoleReference_min_order_by
  stddev: HoleReference_stddev_order_by
  stddev_pop: HoleReference_stddev_pop_order_by
  stddev_samp: HoleReference_stddev_samp_order_by
  sum: HoleReference_sum_order_by
  var_pop: HoleReference_var_pop_order_by
  var_samp: HoleReference_var_samp_order_by
  variance: HoleReference_variance_order_by
}

"""
order by avg() on columns of table "hole_references"
"""
input HoleReference_avg_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
Boolean expression to filter rows from the table "hole_references". All fields are combined with a logical 'AND'.
"""
input HoleReference_bool_exp {
  _and: [HoleReference_bool_exp!]
  _not: HoleReference_bool_exp
  _or: [HoleReference_bool_exp!]
  elevation: float8_comparison_exp
  hole: Int_comparison_exp
  lat: float8_comparison_exp
  lon: float8_comparison_exp
  round: Round_bool_exp
  roundId: bigint_comparison_exp
  type: hole_reference_types_enum_comparison_exp
  updatedAt: timestamptz_comparison_exp
}

"""
order by max() on columns of table "hole_references"
"""
input HoleReference_max_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
  updatedAt: order_by
}

"""
order by min() on columns of table "hole_references"
"""
input HoleReference_min_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
  updatedAt: order_by
}

"""Ordering options when selecting data from "hole_references"."""
input HoleReference_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  round: Round_order_by
  roundId: order_by
  type: order_by
  updatedAt: order_by
}

"""
select columns of table "hole_references"
"""
enum HoleReference_select_column {
  """column name"""
  elevation

  """column name"""
  hole

  """column name"""
  lat

  """column name"""
  lon

  """column name"""
  roundId

  """column name"""
  type

  """column name"""
  updatedAt
}

"""
order by stddev() on columns of table "hole_references"
"""
input HoleReference_stddev_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by stddev_pop() on columns of table "hole_references"
"""
input HoleReference_stddev_pop_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by stddev_samp() on columns of table "hole_references"
"""
input HoleReference_stddev_samp_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by sum() on columns of table "hole_references"
"""
input HoleReference_sum_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by var_pop() on columns of table "hole_references"
"""
input HoleReference_var_pop_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by var_samp() on columns of table "hole_references"
"""
input HoleReference_var_samp_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by variance() on columns of table "hole_references"
"""
input HoleReference_variance_order_by {
  elevation: order_by
  hole: order_by
  lat: order_by
  lon: order_by
  roundId: order_by
}

"""
order by aggregate values of table "holes"
"""
input Hole_aggregate_order_by {
  avg: Hole_avg_order_by
  count: order_by
  max: Hole_max_order_by
  min: Hole_min_order_by
  stddev: Hole_stddev_order_by
  stddev_pop: Hole_stddev_pop_order_by
  stddev_samp: Hole_stddev_samp_order_by
  sum: Hole_sum_order_by
  var_pop: Hole_var_pop_order_by
  var_samp: Hole_var_samp_order_by
  variance: Hole_variance_order_by
}

"""
order by avg() on columns of table "holes"
"""
input Hole_avg_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
Boolean expression to filter rows from the table "holes". All fields are combined with a logical 'AND'.
"""
input Hole_bool_exp {
  _and: [Hole_bool_exp!]
  _not: Hole_bool_exp
  _or: [Hole_bool_exp!]
  course: Course_bool_exp
  courseId: bigint_comparison_exp
  number: Int_comparison_exp
  par: Int_comparison_exp
}

"""
order by max() on columns of table "holes"
"""
input Hole_max_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by min() on columns of table "holes"
"""
input Hole_min_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""Ordering options when selecting data from "holes"."""
input Hole_order_by {
  course: Course_order_by
  courseId: order_by
  number: order_by
  par: order_by
}

"""
select columns of table "holes"
"""
enum Hole_select_column {
  """column name"""
  courseId

  """column name"""
  number

  """column name"""
  par
}

"""
order by stddev() on columns of table "holes"
"""
input Hole_stddev_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by stddev_pop() on columns of table "holes"
"""
input Hole_stddev_pop_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by stddev_samp() on columns of table "holes"
"""
input Hole_stddev_samp_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by sum() on columns of table "holes"
"""
input Hole_sum_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by var_pop() on columns of table "holes"
"""
input Hole_var_pop_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by var_samp() on columns of table "holes"
"""
input Hole_var_samp_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
order by variance() on columns of table "holes"
"""
input Hole_variance_order_by {
  courseId: order_by
  number: order_by
  par: order_by
}

"""
Boolean expression to compare columns of type "Int". All fields are combined with logical 'AND'.
"""
input Int_comparison_exp {
  _eq: Int
  _gt: Int
  _gte: Int
  _in: [Int!]
  _is_null: Boolean
  _lt: Int
  _lte: Int
  _neq: Int
  _nin: [Int!]
}

"""
columns and relationships of "players"
"""
type Player {
  firstName: String!

  """An array relationship"""
  groupPlayers(
    """distinct select on columns"""
    distinct_on: [GroupPlayer_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [GroupPlayer_order_by!]

    """filter the rows returned"""
    where: GroupPlayer_bool_exp
  ): [GroupPlayer!]!
  id: bigint!
  lastName: String!
  providerId: String

  """An object relationship"""
  tournament: Tournament
  tournamentId: bigint
}

"""
Boolean expression to filter rows from the table "players". All fields are combined with a logical 'AND'.
"""
input Player_bool_exp {
  _and: [Player_bool_exp!]
  _not: Player_bool_exp
  _or: [Player_bool_exp!]
  firstName: String_comparison_exp
  groupPlayers: GroupPlayer_bool_exp
  id: bigint_comparison_exp
  lastName: String_comparison_exp
  providerId: String_comparison_exp
  tournament: Tournament_bool_exp
  tournamentId: bigint_comparison_exp
}

"""Ordering options when selecting data from "players"."""
input Player_order_by {
  firstName: order_by
  groupPlayers_aggregate: GroupPlayer_aggregate_order_by
  id: order_by
  lastName: order_by
  providerId: order_by
  tournament: Tournament_order_by
  tournamentId: order_by
}

"""
select columns of table "players"
"""
enum Player_select_column {
  """column name"""
  firstName

  """column name"""
  id

  """column name"""
  lastName

  """column name"""
  providerId

  """column name"""
  tournamentId
}

input RetractStrokeInput {
  providerId: String!
  round: String!
  tournament: String!
}

"""
columns and relationships of "rounds"
"""
type Round {
  """An object relationship"""
  course: Course
  courseId: bigint

  """An array relationship"""
  groups(
    """distinct select on columns"""
    distinct_on: [Group_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Group_order_by!]

    """filter the rows returned"""
    where: Group_bool_exp
  ): [Group!]!

  """An array relationship"""
  holeReferences(
    """distinct select on columns"""
    distinct_on: [HoleReference_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [HoleReference_order_by!]

    """filter the rows returned"""
    where: HoleReference_bool_exp
  ): [HoleReference!]!

  """An array relationship"""
  holes(
    """distinct select on columns"""
    distinct_on: [Hole_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Hole_order_by!]

    """filter the rows returned"""
    where: Hole_bool_exp
  ): [Hole!]!
  id: bigint!
  num: Int!
  providerId: String

  """An object relationship"""
  tournament: Tournament
  tournamentId: bigint
}

input RoundInput {
  course: String!
  num: Int!
  providerId: String!
  tournament: String!
}

"""
order by aggregate values of table "rounds"
"""
input Round_aggregate_order_by {
  avg: Round_avg_order_by
  count: order_by
  max: Round_max_order_by
  min: Round_min_order_by
  stddev: Round_stddev_order_by
  stddev_pop: Round_stddev_pop_order_by
  stddev_samp: Round_stddev_samp_order_by
  sum: Round_sum_order_by
  var_pop: Round_var_pop_order_by
  var_samp: Round_var_samp_order_by
  variance: Round_variance_order_by
}

"""
order by avg() on columns of table "rounds"
"""
input Round_avg_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
Boolean expression to filter rows from the table "rounds". All fields are combined with a logical 'AND'.
"""
input Round_bool_exp {
  _and: [Round_bool_exp!]
  _not: Round_bool_exp
  _or: [Round_bool_exp!]
  course: Course_bool_exp
  courseId: bigint_comparison_exp
  groups: Group_bool_exp
  holeReferences: HoleReference_bool_exp
  holes: Hole_bool_exp
  id: bigint_comparison_exp
  num: Int_comparison_exp
  providerId: String_comparison_exp
  tournament: Tournament_bool_exp
  tournamentId: bigint_comparison_exp
}

"""
order by max() on columns of table "rounds"
"""
input Round_max_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  providerId: order_by
  tournamentId: order_by
}

"""
order by min() on columns of table "rounds"
"""
input Round_min_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  providerId: order_by
  tournamentId: order_by
}

"""Ordering options when selecting data from "rounds"."""
input Round_order_by {
  course: Course_order_by
  courseId: order_by
  groups_aggregate: Group_aggregate_order_by
  holeReferences_aggregate: HoleReference_aggregate_order_by
  holes_aggregate: Hole_aggregate_order_by
  id: order_by
  num: order_by
  providerId: order_by
  tournament: Tournament_order_by
  tournamentId: order_by
}

"""
select columns of table "rounds"
"""
enum Round_select_column {
  """column name"""
  courseId

  """column name"""
  id

  """column name"""
  num

  """column name"""
  providerId

  """column name"""
  tournamentId
}

"""
order by stddev() on columns of table "rounds"
"""
input Round_stddev_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by stddev_pop() on columns of table "rounds"
"""
input Round_stddev_pop_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by stddev_samp() on columns of table "rounds"
"""
input Round_stddev_samp_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by sum() on columns of table "rounds"
"""
input Round_sum_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by var_pop() on columns of table "rounds"
"""
input Round_var_pop_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by var_samp() on columns of table "rounds"
"""
input Round_var_samp_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
order by variance() on columns of table "rounds"
"""
input Round_variance_order_by {
  courseId: order_by
  id: order_by
  num: order_by
  tournamentId: order_by
}

"""
Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'.
"""
input String_comparison_exp {
  _eq: String
  _gt: String
  _gte: String

  """does the column match the given case-insensitive pattern"""
  _ilike: String
  _in: [String!]

  """
  does the column match the given POSIX regular expression, case insensitive
  """
  _iregex: String
  _is_null: Boolean

  """does the column match the given pattern"""
  _like: String
  _lt: String
  _lte: String
  _neq: String

  """does the column NOT match the given case-insensitive pattern"""
  _nilike: String
  _nin: [String!]

  """
  does the column NOT match the given POSIX regular expression, case insensitive
  """
  _niregex: String

  """does the column NOT match the given pattern"""
  _nlike: String

  """
  does the column NOT match the given POSIX regular expression, case sensitive
  """
  _nregex: String

  """does the column NOT match the given SQL regular expression"""
  _nsimilar: String

  """
  does the column match the given POSIX regular expression, case sensitive
  """
  _regex: String

  """does the column match the given SQL regular expression"""
  _similar: String
}

input StrokeInput {
  at: timestamptz!
  fromSurface: Surface
  hatArgb: Int
  hole: Int!
  holeOrder: Int
  kind: StrokeKind
  pantsArgb: Int
  player: String!
  providerId: String!
  round: String!
  shirtArgb: Int
  status: StrokeStatus
  strokeNum: Int!
  tournament: String!
}

enum StrokeKind {
  DROP
  NORMAL
  PENALTY
}

enum StrokeStatus {
  HIT
  OVER_THE_BALL
  READY
}

enum Surface {
  BNK
  FBK
  FWY
  GBK
  GCL
  GRN
  INT
  NAT
  NMS
  OTH
  PTH
  RGH
  TEE
  WTR
}

"""
columns and relationships of "tournaments"
"""
type Tournament {
  """An array relationship"""
  courses(
    """distinct select on columns"""
    distinct_on: [Course_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Course_order_by!]

    """filter the rows returned"""
    where: Course_bool_exp
  ): [Course!]!
  endDate: date
  id: bigint!
  name: String!
  providerId: String

  """An array relationship"""
  rounds(
    """distinct select on columns"""
    distinct_on: [Round_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Round_order_by!]

    """filter the rows returned"""
    where: Round_bool_exp
  ): [Round!]!
  startDate: date
}

input TournamentInput {
  endDate: date!
  name: String!
  providerId: String!
  startDate: date!
}

"""
Boolean expression to filter rows from the table "tournaments". All fields are combined with a logical 'AND'.
"""
input Tournament_bool_exp {
  _and: [Tournament_bool_exp!]
  _not: Tournament_bool_exp
  _or: [Tournament_bool_exp!]
  courses: Course_bool_exp
  endDate: date_comparison_exp
  id: bigint_comparison_exp
  name: String_comparison_exp
  providerId: String_comparison_exp
  rounds: Round_bool_exp
  startDate: date_comparison_exp
}

"""Ordering options when selecting data from "tournaments"."""
input Tournament_order_by {
  courses_aggregate: Course_aggregate_order_by
  endDate: order_by
  id: order_by
  name: order_by
  providerId: order_by
  rounds_aggregate: Round_aggregate_order_by
  startDate: order_by
}

"""
select columns of table "tournaments"
"""
enum Tournament_select_column {
  """column name"""
  endDate

  """column name"""
  id

  """column name"""
  name

  """column name"""
  providerId

  """column name"""
  startDate
}

type WriteResult {
  accepted: Boolean!
  id: bigint
  message: String
}

scalar bigint

"""
Boolean expression to compare columns of type "bigint". All fields are combined with logical 'AND'.
"""
input bigint_comparison_exp {
  _eq: bigint
  _gt: bigint
  _gte: bigint
  _in: [bigint!]
  _is_null: Boolean
  _lt: bigint
  _lte: bigint
  _neq: bigint
  _nin: [bigint!]
}

"""ordering argument of a cursor"""
enum cursor_ordering {
  """ascending ordering of the cursor"""
  ASC

  """descending ordering of the cursor"""
  DESC
}

scalar date

"""
Boolean expression to compare columns of type "date". All fields are combined with logical 'AND'.
"""
input date_comparison_exp {
  _eq: date
  _gt: date
  _gte: date
  _in: [date!]
  _is_null: Boolean
  _lt: date
  _lte: date
  _neq: date
  _nin: [date!]
}

scalar float8

"""
Boolean expression to compare columns of type "float8". All fields are combined with logical 'AND'.
"""
input float8_comparison_exp {
  _eq: float8
  _gt: float8
  _gte: float8
  _in: [float8!]
  _is_null: Boolean
  _lt: float8
  _lte: float8
  _neq: float8
  _nin: [float8!]
}

enum hole_reference_types_enum {
  """pin position, set by the green app"""
  PIN

  """tee point, used for converting trackman coordinates"""
  TEE

  """trackman target point, , used for converting trackman coordinates"""
  TRACKMAN_TARGET
}

"""
Boolean expression to compare columns of type "hole_reference_types_enum". All fields are combined with logical 'AND'.
"""
input hole_reference_types_enum_comparison_exp {
  _eq: hole_reference_types_enum
  _in: [hole_reference_types_enum!]
  _is_null: Boolean
  _neq: hole_reference_types_enum
  _nin: [hole_reference_types_enum!]
}

"""mutation root"""
type mutation_root {
  retractStroke(input: RetractStrokeInput!): WriteResult!
  upsertCourse(input: CourseInput!): WriteResult!
  upsertGroup(input: GroupInput!): WriteResult!
  upsertRound(input: RoundInput!): WriteResult!
  upsertStroke(input: StrokeInput!): WriteResult!
  upsertTournament(input: TournamentInput!): WriteResult!
}

"""column ordering options"""
enum order_by {
  """in ascending order, nulls last"""
  asc

  """in ascending order, nulls first"""
  asc_nulls_first

  """in ascending order, nulls last"""
  asc_nulls_last

  """in descending order, nulls first"""
  desc

  """in descending order, nulls first"""
  desc_nulls_first

  """in descending order, nulls last"""
  desc_nulls_last
}

type query_root {
  """
  fetch data from the table: "ball_positions"
  """
  ballPositions(
    """distinct select on columns"""
    distinct_on: [BallPosition_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [BallPosition_order_by!]

    """filter the rows returned"""
    where: BallPosition_bool_exp
  ): [BallPosition!]!

  """An array relationship"""
  groups(
    """distinct select on columns"""
    distinct_on: [Group_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Group_order_by!]

    """filter the rows returned"""
    where: Group_bool_exp
  ): [Group!]!

  """An array relationship"""
  holeReferences(
    """distinct select on columns"""
    distinct_on: [HoleReference_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [HoleReference_order_by!]

    """filter the rows returned"""
    where: HoleReference_bool_exp
  ): [HoleReference!]!

  """
  fetch data from the table: "players"
  """
  players(
    """distinct select on columns"""
    distinct_on: [Player_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Player_order_by!]

    """filter the rows returned"""
    where: Player_bool_exp
  ): [Player!]!

  """An array relationship"""
  rounds(
    """distinct select on columns"""
    distinct_on: [Round_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Round_order_by!]

    """filter the rows returned"""
    where: Round_bool_exp
  ): [Round!]!

  """
  fetch data from the table: "tournaments"
  """
  tournaments(
    """distinct select on columns"""
    distinct_on: [Tournament_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Tournament_order_by!]

    """filter the rows returned"""
    where: Tournament_bool_exp
  ): [Tournament!]!
}

type subscription_root {
  """
  fetch data from the table in a streaming manner: "ball_positions"
  """
  ballPositionEvents(
    """maximum number of rows returned in a single batch"""
    batch_size: Int!

    """cursor to stream the results returned by the query"""
    cursor: [BallPosition_stream_cursor_input]!

    """filter the rows returned"""
    where: BallPosition_bool_exp
  ): [BallPosition!]!

  """
  fetch data from the table: "ball_positions"
  """
  ballPositions(
    """distinct select on columns"""
    distinct_on: [BallPosition_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [BallPosition_order_by!]

    """filter the rows returned"""
    where: BallPosition_bool_exp
  ): [BallPosition!]!

  """An array relationship"""
  groups(
    """distinct select on columns"""
    distinct_on: [Group_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Group_order_by!]

    """filter the rows returned"""
    where: Group_bool_exp
  ): [Group!]!

  """An array relationship"""
  holeReferences(
    """distinct select on columns"""
    distinct_on: [HoleReference_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [HoleReference_order_by!]

    """filter the rows returned"""
    where: HoleReference_bool_exp
  ): [HoleReference!]!

  """
  fetch data from the table: "players"
  """
  players(
    """distinct select on columns"""
    distinct_on: [Player_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Player_order_by!]

    """filter the rows returned"""
    where: Player_bool_exp
  ): [Player!]!

  """An array relationship"""
  rounds(
    """distinct select on columns"""
    distinct_on: [Round_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Round_order_by!]

    """filter the rows returned"""
    where: Round_bool_exp
  ): [Round!]!

  """
  fetch data from the table: "tournaments"
  """
  tournaments(
    """distinct select on columns"""
    distinct_on: [Tournament_select_column!]

    """limit the number of rows returned"""
    limit: Int

    """skip the first n rows. Use only with order_by"""
    offset: Int

    """sort the rows by one or more columns"""
    order_by: [Tournament_order_by!]

    """filter the rows returned"""
    where: Tournament_bool_exp
  ): [Tournament!]!
}

scalar timestamptz

"""
Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'.
"""
input timestamptz_comparison_exp {
  _eq: timestamptz
  _gt: timestamptz
  _gte: timestamptz
  _in: [timestamptz!]
  _is_null: Boolean
  _lt: timestamptz
  _lte: timestamptz
  _neq: timestamptz
  _nin: [timestamptz!]
}