openapi: 3.0.1
info:
  title: Unknown Golf
  description: >
    # Overview

    API to access information on your communities (or clubs) on the Unknown Golf
    platform.


    ## Getting Started

    Once you have set up your community in Unknown Golf, send an email to
    Support@UnknownGolf.com with a description of how you intend to utilize the
    Unknown Golf API.


    We will review and may shedule a meeting to discuss further before providing
    your credentials.


    ## Request API Enhancements

    Send an email to Support@UnknownGolf.com with as much detail as you can
    provide, after our technical team has had an opportunity to review we will
    reach back out with an update.
  contact:
    name: API Support
    email: support@unknowngolf.com
  license:
    name: Proprietary
    url: https://www.unknowngolf.com
  version: '1.0'
servers:
  - url: https://api.unknowngolf.com/v1
    description: Production
  - url: https://api-test.unknowngolf.com/v1
    description: Testing
tags:
  - name: Authentication
    description: |
      Operations related to access and security for the Unknown Golf API

      **Expiration:**
      Security token expires after 24 hours
  - name: Community
    description: >
      Operations for Communities


      **What is a Community?**

      A community in Unknown Golf is an entity that will group together all of
      your players and events.


      **What is a Club?**

      A club is also a community, the main difference is that a club has sub
      communities and a club dashboard that provides insight into all of the
      Club's players and events.
  - name: Event
    description: >
      Operations related to the Events in your community (or Club)


      **Event Types:**

      A tournament refers to a Multi-Round Event that has rounds (events)
      associated with it.  These events have their event ids prefixed with the
      letter "M", a single round event or a round of a multi-round will have
      their event ids prefixed with the letter "S".


      **Creating an Event:**

      Events can only be created on UnknownGolf.com, they currently cannot be
      created through the Unknwon Golf API.
  - name: Event Courses
    description: >
      Operations related to the Courses for your Events


      **Search Courses:**

      Only courses associated with an event in Unknown Golf can be accessed via
      the API


      **Add Courses:**

      Courses cannot be added to an Event through the API, only on
      UnknownGolf.com
  - name: Event Flights
    description: "\tOperations related to the Flights for an event.\n\n\tEach leaderboard has its own set of flights which can be used for the following:\n\n\t1.  Segment your leaderboards into groups by Handicap, Age, Course, etc....\n\t2.  Determine if players or teams are participating in a Leaderboard.  If a leaderboard has flights defined, a player or team is not assigned to a flight, then they are not participating in that leaderboard and will not show up in the standings or results for that leaderboard.\n\n\t** Are Flights Required?**\n\tSingle round events contain a setting to enable or disable flights, currently ALL multi-round events require flights, although this option is targeted to be added in the future.\n\n\t**Players:**\n\tPlayers must be signed up for the event to be assigned to a flight.\n"
  - name: Event Handicap (Player)
    description: >+
      Operations related to Player Handicaps for an Event


      **Multi-Round Handicaps:**

      For multi-round events, the player's will have handicaps set at the
      overall event level and then for each round which will override the event
      level for that round.


      **Course vs. Playing Handicap:**

      The "Course Handicap" is the players calculated handicap for the assigned
      tee box (Slope, Rating, and Par).


      The "Playing Handicap" is the player's course handicap and then applying
      allocations, an example allocation could be 80% of a player's handicap
      where their Course handicap is a 10 and their playing handicap is an 8.


      **Applying Allocations:**

      Allocations are applied to the unrounded course handicap wich may result
      is 2 players having the same course handicap but slightly different
      playing handicaps.


      **Handicap Number of Holes:**

      All handicaps consumed and calculated are for 18 holes, regardless of the
      number of holes that are being played.  If you are manually setting a
      handicap for an event that is playing less then 18 holes, ensure you are
      setting an 18 hole equilivant handicap for the player.

  - name: Event Handicap (Team)
    description: >+
      Operations related to Team Handicaps for an Event


      **Multi-Round Events:**

      When setting a team handicap for a multi-round event, the handicap should
      be set for each round of the event, there is no option to set a team
      handicap for the entire event.


      **Course vs. Playing Handicap:**

      The "Course Handicap" is the team's calculated handicap for their players.


      The "Playing Handicap" is the team's course handicap and then applying
      allocations, an example allocation could be 50% of a team's total
      handicap, where their Course handicap is a 10 and their playing handicap
      is an 5.


      **Applying Allocations:**

      Allocations are applied to the unrounded course handicap which may result
      is 2 teams having the same course handicap but slightly different playing
      handicaps.


      **Handicap Number of Holes:**

      All handicaps consumed and calculated are for 18 holes, regardless of the
      number of holes that are being played.  If you are manually setting a
      handicap for an event that is playing less than 18 holes, ensure you are
      setting an 18 hole equivalent handicap for the team.

  - name: Event Leaderboards
    description: >
      Operations related to the Leaderboards for an event.

       A Leaderboard defines the format of play and payouts, and contains multiple different configurations per leaderboard type.

      **Multi-Round Events:**

      For multi-round events, the set of leaderboards are created for each round
      of the event, in addition to the overall set of leaderboards.


      Leaderboards set at the "round level" will define the format and payouts
      for just that round, where the leaderboards set at the "event level" will
      define the format and payouts for the entire event, inclusive of all
      rounds unless configured for a subset of rounds.


      **Add / Edit Leaderboard Configurations:**

      Add and editing of leaderboards can only be done on UnknownGolf.com


      **List of Leaderboard types:**

      Reference the Utility opertation "/util/leaderboards/types" for a full
      list of leaderboard types, additional information on the leaderboard types
      can be found in Unknown Golf's help documentation (help.UnknownGolf.com).
  - name: Event Players
    description: >
      Operations related to Players registering to participate in an Event


      **Player Types:**

      Players registered for your Event can be registed by their Profile, or by
      their name and Gender.


      **Multi-Round Event vs. Single Round:**

      For multi-round events, players are registered for the Multi-round, they
      are not registered individually for each round.


      **Note:**

      Players registered by name will not have any communication method
      associated with them, and will not be able to be included in any reports
      other then this event.
  - name: Event Scores (Player)
    description: |
      Operations related to the Players Scores for an event.
  - name: Event Scores (Team)
    description: >
      Operations related to the Team Scores for an event.


      **Note:**

      This is for Team Scores where the format of play is to enter a single
      score per hole for a team, this is not for events where individual player
      scores are entered and then combined to create a team score.
  - name: Event Teams
    description: >
      Operations related to the Teams for your Events


      **Players:**

      Players must be signed up for the event to be assigned to a team.


      **Note:**

      If an event is a multi-round, there can be teams for the overall event and
      also a different set of teams for each round
  - name: Event Tee Pairings
    description: >
      Operations related to the Tee Pairings for an event.


      **Players:**

      Players must be signed up for the event to be assigned to a tee pairing.


      **Course:**

      Tee pairings are unique by golf course


      **Tee Group:**

      The tee group is used to define the order of tee groups starting on the
      same hole at the same time.  An examle is having an "A" and "B" group both
      starting on hole 1 at 8:00 AM.  The "A" group would tee off first followed
      by the "B" group.
  - name: Event Web Links
    description: >
      Operations to retrieve web links for your Events


      **Note:**

      Some weblinks can be created specificially for a player and should only be
      shared with that player, while others are generic and can be shared with
      anyone.
  - name: Player
    description: >
      Operations related to the Players in your community (or Club)


      **Security:**

      You only have access to players that are in your community(s).


      **Player Updates:**

      Once a player completes their profile on UnknownGolf.com, there are
      personal attributes that you cannot update, only the player themselves can
      make the updates on UnknownGolf.com


      **Duplicate Profiles & Merging Accounts:**

      A unique profile is determined by a Unique Email Address or Unique World
      Handicap Id, if you receive an error message when adding (or updating) a
      player you will need to reach out to Support@UnknownGolf.com to have the
      profiles merged.
  - name: Utility
    description: Utility Operations
paths:
  /v1/application.wadl/{path}:
    get:
      operationId: getExternalGrammar
      parameters:
        - name: path
          in: path
          required: true
          schema:
            type: string
      responses:
        default:
          description: default response
          content:
            application/xml: {}
  /v1/application.wadl:
    get:
      operationId: getWadl
      responses:
        default:
          description: default response
          content:
            application/vnd.sun.wadl+xml: {}
            application/xml: {}
  /v1/auth:
    post:
      tags:
        - Authentication
      summary: Login
      description: Retrieve Security Token to access Unknown Golf APIs
      operationId: auth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Credentials'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
              examples:
                sample:
                  description: sample
                  value:
                    token: >-
                      eyJhbGc4NCJ9.eyJzdWIiOiJ1cC5hcGlAdW5rbm93bmdvbGYyOSwieHAiOjQyMTEyMTQxMDgxfQ.eRDA6Ubn9OgY_5M4u8ENSrPFP5X9X4ZcuM
        '401':
          description: Invalid Credentials
  /v1/community/search:
    get:
      tags:
        - Community
      summary: Search communities
      description: >-
        List of communities, if no search criteria is provided then all
        communities will be returned
      operationId: search
      requestBody:
        description: Community search criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommunitySearch'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Community'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 37
                      name: Unknown MGA
                      clubCommunityId: 2
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/rounds:
    get:
      tags:
        - Event
      summary: List all rounds
      description: List of rounds for a multi-round event
      operationId: rounds
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiEvent'
              examples:
                sample:
                  description: sample
                  value:
                    - communityId: 37
                      communityName: Unknown MGA
                      eventId: S-65222
                      name: Day 1
                      courseId: 1
                      courseName: Lantana Golf Club
                      startDate: '2025-09-13'
                      endDate: '2025-09-13'
                      info: >-
                        Stroke play event where strokes are subtracted or added
                        to your gross scores depending on the course handicap.
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events:
    get:
      tags:
        - Event
      summary: Search events
      description: Search the events within a community
      operationId: search_1
      requestBody:
        description: Event search criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiEventSearch'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiEvent'
              examples:
                sample:
                  description: sample
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/courses:
    get:
      tags:
        - Event Courses
      summary: List all courses
      description: |
        List of courses for the Event
      operationId: list
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCourse'
              examples:
                sample:
                  description: sample
                  value:
                    - courseId: 1
                      name: Lantana Golf Club
                      city: Argyle
                      state: US-TX
                      country: US
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/courses/{courseId}/tees:
    get:
      tags:
        - Event Courses
      summary: List all course tees
      description: |
        List of Course Tees for an Event
      operationId: tees
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: courseId
          in: path
          description: Course Id
          required: true
          schema:
            type: integer
            format: int64
          example: 55284
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCourseTee'
              examples:
                sample:
                  description: sample
                  value:
                    id: 65
                    gender: M
                    name: Black
                    par: 72
                    parFront: 36
                    parBack: 36
                    rating: 73.9
                    ratingFront: 37.1
                    ratingBack: 36.8
                    slope: 133
                    slopeFront: 132
                    slopeBack: 133
                    holes:
                      - hole: 1
                        par: 4
                        hc: 13
                        lengthYards: 389
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/courses/{courseId}/tees/{teeId}:
    get:
      tags:
        - Event Courses
      summary: Retrieve course tee
      description: |
        Course Tee for an Event
      operationId: tees_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: courseId
          in: path
          description: Course Id
          required: true
          schema:
            type: integer
            format: int64
          example: 55284
        - name: teeId
          in: path
          description: Tee Id
          required: true
          schema:
            type: integer
            format: int64
          example: 11587
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiCourseTee'
              examples:
                sample:
                  description: sample
                  value:
                    id: 65
                    gender: M
                    name: Black
                    par: 72
                    parFront: 36
                    parBack: 36
                    rating: 73.9
                    ratingFront: 37.1
                    ratingBack: 36.8
                    slope: 133
                    slopeFront: 132
                    slopeBack: 133
                    holes:
                      - hole: 1
                        par: 4
                        hc: 13
                        lengthYards: 389
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/{flightId}/players/{playerId}:
    post:
      tags:
        - Event Flights
      summary: Assign player
      description: "\t\t\tAssign the player to the Flight for the Leaderboard.\n\n\t\t\t**Note:**\n\t\t\tIf this is a team leaderboard use the \"Assign team\" endpoint.\n"
      operationId: assignPlayer
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: flightId
          in: path
          description: Flight Id
          required: true
          schema:
            type: integer
            format: int64
          example: 68751
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Flights
      summary: Remove player
      description: "\t\t\tRemove the player from the Flight for the Leaderboard.\n\n\t\t\t**Note:**\n\t\t\tIf this is a team leaderboard use the \"Remove team\" endpoint.\n"
      operationId: removePlayer
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: flightId
          in: path
          description: Flight Id
          required: true
          schema:
            type: integer
            format: int64
          example: 68751
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/{flightId}/teams/{teamId}:
    post:
      tags:
        - Event Flights
      summary: Assign team
      description: "\t\t\tAssign the team to the Flight for the Leaderboard.\n"
      operationId: assignTeam
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: flightId
          in: path
          description: Flight Id
          required: true
          schema:
            type: integer
            format: int64
          example: 68751
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Flights
      summary: Remove team
      description: "\t\t\tRemove the team from the Flight for the Leaderboard.\n"
      operationId: removeTeam
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: flightId
          in: path
          description: Flight Id
          required: true
          schema:
            type: integer
            format: int64
          example: 68751
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/{flightId}:
    delete:
      tags:
        - Event Flights
      summary: Delete flight
      description: "\t\t\tDelete the Flight\n"
      operationId: deleteFlight
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: flightId
          in: path
          description: Flight Id
          required: true
          schema:
            type: integer
            format: int64
          example: 68751
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights:
    get:
      tags:
        - Event Flights
      summary: List all flights
      description: |
        List of flights for the Event
      operationId: list_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiFlight'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 128178
                      leaderboardId: 304187
                      name: 'Flight #1'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Flights
      summary: Delete all flights
      description: "\t\t\tDelete the Flights for the Event or for a specific leaderboard if the leaderboardId is included.\n"
      operationId: deleteFlightAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: leaderboardId
          in: query
          description: Leaderboard Id (All leaderboards if not included)
          schema:
            type: integer
            format: int64
          example: 562
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/leaderboards/{leaderboardId}:
    get:
      tags:
        - Event Flights
      summary: List flights for leaderboard
      description: >
        List of flights for a leaderboard of an Event including the Teams (if a
        Team Leaderboard) or Players (if a NOT a team Leaderboard)
      operationId: listLeaderboard
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: leaderboardId
          in: path
          description: Leaderboard Id
          required: true
          schema:
            type: integer
            format: int64
          example: 5112
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiFlight'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 128178
                      leaderboardId: 304187
                      name: 'Flight #1'
                      teams:
                        - teamId: 266515
                          name: 'Team #1'
                          players:
                            - playerId: 1
                              firstName: Bill
                              lastName: Trabosh
                              suffix: III
                              handle: Founder
                            - playerId: 32490
                              firstName: Ben
                              lastName: Stevens
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/leaderboards/{leaderboardId}/unassigned/players:
    get:
      tags:
        - Event Flights
      summary: List players unassigned
      description: |
        List of players that are unassigned to a flight for this leaderboard.
      operationId: listUnassignedPlayers
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: leaderboardId
          in: path
          description: Leaderboard Id
          required: true
          schema:
            type: integer
            format: int64
          example: 5112
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiFlight'
              examples:
                sample:
                  description: sample
                  value:
                    - playerId: 159282
                      firstName: first
                      lastName: last
                      suffix: Jr.
                      handle: 'King #20'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/flights/leaderboards/{leaderboardId}/unassigned/teams:
    get:
      tags:
        - Event Flights
      summary: List teams unassigned
      description: |
        List of teams that are unassigned to a flight for this leaderboard.
      operationId: listUnassignedTeams
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: leaderboardId
          in: path
          description: Leaderboard Id
          required: true
          schema:
            type: integer
            format: int64
          example: 5112
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiFlight'
              examples:
                sample:
                  description: sample
                  value:
                    - teamId: 266515
                      name: 'Team #1'
                      players:
                        - playerId: 1
                          firstName: Bill
                          lastName: Trabosh
                          suffix: III
                          handle: Founder
                        - playerId: 32490
                          firstName: Ben
                          lastName: Stevens
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/handicaps:
    get:
      tags:
        - Event Handicap (Player)
      summary: Search handicaps
      description: |
        List of players and their handicaps for the event
      operationId: search_2
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Search Criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiHcSearch'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiPlayerHc'
              examples:
                sample:
                  description: sample
                  value:
                    - playerId: 1
                      courseId: 1
                      courseName: Lantana Golf Club
                      teeId: 89658
                      teeName: Blue
                      teeRating: 71.2
                      teeSlope: 128
                      teePar: 72
                      hcRevisionDt: '2025-08-04'
                      hcIndex: 12.7
                      hcCourse: 14
                      hcPlaying: 14
                      hcAllocPct: 100
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/{playerId}/handicap/coursePlaying:
    patch:
      tags:
        - Event Handicap (Player)
      summary: Update handicap
      description: |
        Set the player's Course and Playing handicap for an Event.
      operationId: updateByCoursePlaying
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
      requestBody:
        description: Player Handicap Course and Playing
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUpdateHcCoursePlaying'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/{playerId}/handicap/index:
    patch:
      tags:
        - Event Handicap (Player)
      summary: Update handicap index
      description: >
        Set the player's Course and Playing handicap for an Event by Handicap
        Index.
      operationId: updateByIndex
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
      requestBody:
        description: Player Handicap Index
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUpdateHcIndex'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/{playerId}/handicap/lock:
    patch:
      tags:
        - Event Handicap (Player)
      summary: Update locked
      description: |
        Set the player's handicap as locked or unlocked for the event
      operationId: updateLocked
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
        - name: lock
          in: query
          description: Flag to Lock (true) and unlock (false)
          required: true
          schema:
            type: boolean
          example: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/handicaps/lock:
    patch:
      tags:
        - Event Handicap (Player)
      summary: Update lock all
      description: |
        Set all player's handicaps as locked or unlocked for the event
      operationId: updateLockedAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
        - name: lock
          in: query
          description: Flag to Lock (true) and unlock (false)
          required: true
          schema:
            type: boolean
          example: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/{playerId}/handicap/tee/{teeId}:
    patch:
      tags:
        - Event Handicap (Player)
      summary: Update Assigned tee
      description: |
        Set the player's assigned tee box
      operationId: updateTee
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
        - name: teeId
          in: path
          description: Tee Id
          required: true
          schema:
            type: integer
            format: int64
          example: 11576
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/handicaps:
    get:
      tags:
        - Event Handicap (Team)
      summary: Search handicaps
      description: |
        List of teams and their handicaps for the event
      operationId: search_3
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Search Criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiHcSearch'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTeamHc'
              examples:
                sample:
                  description: sample
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}/handicap:
    patch:
      tags:
        - Event Handicap (Team)
      summary: Update handicap
      description: |
        Set the team's handicap index, course, and playing for the event
      operationId: updateByCoursePlaying_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
      requestBody:
        description: Handicap Index, Course, and Playing
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUpdateHc'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}/handicap/lock:
    patch:
      tags:
        - Event Handicap (Team)
      summary: Update locked
      description: |
        Set the team's handicap as locked or unlocked for the event
      operationId: updateLocked_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 524
        - name: lock
          in: query
          description: Flag to Lock (true) and unlock (false)
          required: true
          schema:
            type: boolean
          example: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/handicaps/lock:
    patch:
      tags:
        - Event Handicap (Team)
      summary: Update lock all
      description: |
        Set all team's handicaps as locked or unlocked for the event
      operationId: updateLockedAll_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: lock
          in: query
          description: Flag to Lock (true) and unlock (false)
          required: true
          schema:
            type: boolean
          example: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/leaderboards:
    get:
      tags:
        - Event Leaderboards
      summary: List all leaderboards
      description: |
        List of leaderboards for the Event
      operationId: list_2
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiLeaderboard'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 304185
                      name: Player (Gross)
                      typeId: 1
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players:
    get:
      tags:
        - Event Players
      summary: List all players
      description: |
        List of players signed up for the event
      operationId: search_4
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiPlayer'
              examples:
                sample:
                  description: sample
                  value:
                    - registeredDt: '2025-08-13T15:56:00.404203-05:00'
                      playerId: 1
                      hasProfile: true
                      member: true
                      firstName: Bill
                      lastName: Trabosh
                      suffix: III
                      gender: M
                      handle: Founder
                      picUrl: >-
                        https://static.unknowngolf.com/players/1/profile/1858.jpg
                      hcProviderId: 3
                      hcId: '8500474'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    post:
      tags:
        - Event Players
      summary: Register player
      description: >+
        Add Player to the Event


        **By Profile:**

        If the *playerId* is included in the request, then the player registered
        for the event will be associated with that player in your community
        roster.


        **By Name:**

        If the *playerId* is not included in the request, then a new player will
        be registered for the event that is **NOT** associated with your
        community.

      operationId: create
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Player to register for the event
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiPlayerSignUp'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiPlayerId'
              examples:
                sample:
                  description: sample
                  value: '{playerId: 1}'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/{playerId}:
    delete:
      tags:
        - Event Players
      summary: Remove player
      description: >+
        Cancel the player from participating in the Event


        **Flights and Teams**

        When removing a player from an event, the player will be removed from
        any Flights or Teams they are assigned to.


        **Note:**

        If the player has a score entered for the Event, the score must first be
        removed before the player can be removed from the event.

      operationId: delete
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 5864
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/players/scores:
    get:
      tags:
        - Event Scores (Player)
      summary: Search scores
      description: |
        List of scores for the event
      operationId: search_5
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Search Criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiScoreSearch'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiScore'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 893083
                      playerId: 159267
                      firstName: Test
                      lastName: HC
                      gender: M
                      eventId: S-65210
                      playedDate: '2025-09-29'
                      numHoles: 18
                      startHole: 1
                      courseId: 1
                      courseName: Lantana Golf Club (Argyle, US-TX)
                      teeId: 67
                      teeName: Blue
                      teeRating: 71.2
                      teeSlope: 128
                      teePar: 72
                      hcIndex: 5
                      hcCourse: 5
                      hcPlaying: 5
                      gross: 75
                      grossVsPar: 3
                      ags: 75
                      agsVsPar: 3
                      net: 70
                      netVsPar: -2
                      isTest: true
                      postedToWHS: false
                      unofficial: false
                      holeScores:
                        - hole: 1
                          par: 4
                          gross: 4
                          ags: 4
                          netCourse: 4
                          netPlaying: 4
                        - hole: 2
                          par: 4
                          gross: 4
                          ags: 4
                          netCourse: 4
                          netPlaying: 4
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/scores:
    get:
      tags:
        - Event Scores (Team)
      summary: Search scores
      description: |
        List of team scores for the event
      operationId: search_6
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Search Criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiScoreSearch'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiScore'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 68748
                      teamId: 266543
                      name: 'Team #4'
                      eventId: S-65225
                      startHole: 1
                      courseId: 1
                      courseName: Lantana Golf Club
                      hcIndex: 4.4
                      hcCourse: 4
                      hcPlaying: 4
                      gross: 69
                      grossVsPar: -3
                      net: 65
                      netVsPar: -7
                      isTest: true
                      unofficial: false
                      players:
                        - playerId: 159298
                          firstName: Hutch
                          lastName: Romanos
                          gender: M
                        - playerId: 159271
                          firstName: Mark
                          lastName: Fajt
                          gender: M
                      holeScores:
                        - hole: 1
                          gross: 5
                          netCourse: 5
                          netPlaying: 5
                        - hole: 2
                          gross: 3
                          netCourse: 3
                          netPlaying: 3
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams:
    get:
      tags:
        - Event Teams
      summary: List all teams
      description: |
        List of teams for the event
      operationId: list_3
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTeam'
              examples:
                sample:
                  description: sample
                  value:
                    - teamId: 266515
                      name: 'Team #1'
                      players:
                        - playerId: 32490
                          firstName: Ben
                          lastName: Stevens
                        - playerId: 159301
                          firstName: Frank
                          lastName: Schneider
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    post:
      tags:
        - Event Teams
      summary: Add team
      description: "\t\t\tCreate the teams\n\n\t\t\t**Team Name:**\n\t\t\tNot rquired, will default to \"Team #X\" with \"X\" being the total number of teams.\n\n\t\t\t**Player Assign:**\n\t\t\tIf player ids are included in the request for each team, then those players will be assigned to the team when the team is created.\n"
      operationId: add
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Teams to create
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ApiTeamAdd'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Teams
      summary: Delete all teams
      description: "\t\t\tDelete all teams for the event\n"
      operationId: deleteAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}/players/{playerId}:
    post:
      tags:
        - Event Teams
      summary: Assign player
      description: "\t\t\tAssign the player to the team\n"
      operationId: assignPlayer_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Teams
      summary: Remove player
      description: "\t\t\tRemove the player from the team\n"
      operationId: removePlayer_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
        - name: playerId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/players:
    post:
      tags:
        - Event Teams
      summary: Assign players
      description: "\t\t\tAssign the players to the teams\n"
      operationId: assignPlayers
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Teams players to assign
        content:
          '*/*':
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ApiTeamPlayerAdd'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Teams
      summary: Remove all players all teams
      description: "\t\t\tRemove all players from all teams\n"
      operationId: removeAllPlayers
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}:
    delete:
      tags:
        - Event Teams
      summary: Delete team
      description: "\t\t\tDelete the team\n"
      operationId: delete_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id to delete
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}/players:
    delete:
      tags:
        - Event Teams
      summary: Remove players all
      description: "\t\t\tRemove all players from the team\n"
      operationId: removePlayersAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teams/{teamId}/name/{name}:
    patch:
      tags:
        - Event Teams
      summary: Update name
      description: "\t\t\tUpdate the Team Name\n"
      operationId: updateName
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teamId
          in: path
          description: Team Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
        - name: name
          in: path
          description: New Team Name
          required: true
          schema:
            type: string
          example: Twin Towers
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teePairings:
    get:
      tags:
        - Event Tee Pairings
      summary: List tee pairings
      description: >
        List of Tee Pairings for a single round event, or a round of a
        multi-round event.
      operationId: list_4
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: S-45876
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTee'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 295051
                      courseId: 1
                      time: '08:00:00'
                      hole: 1
                      group: B
                      players:
                        - playerId: 159323
                          firstName: Sam
                          lastName: Meade
                        - playerId: 41739
                          firstName: Robert
                          lastName: Rinker
                        - playerId: 159267
                          firstName: Dean
                          lastName: Sifuentes
                        - playerId: 159318
                          firstName: John
                          lastName: Shea
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    put:
      tags:
        - Event Tee Pairings
      summary: Update tee pairings
      description: |
        Update the tee pairings

        **Note:**
        To remove players use the Add or Remove players endpoint.
      operationId: updateTeeTime
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: S-45876
      requestBody:
        description: Tee pairings to update
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ApiTeeUpdate'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTeeUpdateReturn'
              examples:
                sample:
                  description: sample
                  value:
                    - teePairingId: 295083
                    - errors:
                        - Tee pairing id is required
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    post:
      tags:
        - Event Tee Pairings
      summary: Create tee pairings
      description: >
        Create the tee pairings, if player ids are included, assign the players
        to the tee pairing.


        **Note:**

        Creating a new tee pairing with the same the same time, hole, group, and
        course id as an existing tee pairing will NOT update the existing tee
        pairing, a new tee pairing will be created.
      operationId: addTeeTime
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: S-45876
      requestBody:
        description: Tee pairings to create
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ApiTeeCreate'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTeeCreateReturn'
              examples:
                sample:
                  description: sample
                  value:
                    - teePairingId: 295083
                    - teePairingId: 295084
                      errors:
                        - Player id 445 is not signed up for the event
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Tee Pairings
      summary: Delete all tee pairings
      description: "\t\t\tDelete all tee pairing, any players assigned to the tee pairing will be unassigned.\n"
      operationId: deleteTeeTimesAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: courseId
          in: query
          description: Course Id (All courses if not included)
          schema:
            type: integer
            format: int64
          example: 562
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teePairings/{teePairingId}/players/{playerId}:
    post:
      tags:
        - Event Tee Pairings
      summary: Assign player
      description: "\t\t\tAssign the player to the tee pairing\n"
      operationId: assignPlayer_2
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teePairingId
          in: path
          description: Tee pairing Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Tee Pairings
      summary: Remove player
      description: "\t\t\tRemove the player to the tee pairing\n"
      operationId: removePlayer_2
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teePairingId
          in: path
          description: Tee pairing Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 547
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teePairings/players:
    post:
      tags:
        - Event Tee Pairings
      summary: Assign players
      description: "\t\t\tAssign the players to the tee pairing\n"
      operationId: assignPlayersAll
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      requestBody:
        description: Players with the tee pairing assignment
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/ApiTeeAssignPlayer'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Event Tee Pairings
      summary: Remove all players
      description: "\t\t\tRemove all the players assigned to a tee pairing\n\n\t\t\t**By Course:\"**\n\t\t\tIf a course id is included in as a parameter, only players assigned to tee pairings on that course will be removed.\n"
      operationId: removePlayersAll_1
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: courseId
          in: query
          description: Course Id (All courses if not included)
          schema:
            type: string
          example: 562
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teePairings/{teePairingId}:
    delete:
      tags:
        - Event Tee Pairings
      summary: Delete tee pairing
      description: "\t\t\tDelete the tee pairing, any players assigned to the tee pairing will be unassigned.\n"
      operationId: deleteTeeTime
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: teePairingId
          in: path
          description: Tee pairing Id
          required: true
          schema:
            type: integer
            format: int64
          example: 6827
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/teePairings/allRounds:
    get:
      tags:
        - Event Tee Pairings
      summary: List tee pairings all rounds
      description: |
        List of Tee Pairings for all rounds of a multi-round event.
      operationId: listAllRounds
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiTee'
              examples:
                sample:
                  description: sample
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/flights:
    get:
      tags:
        - Event Web Links
      summary: Flights list
      description: >
        Web link to the list of flights for the event.


        The link can be shared with anyone and does not require the player to be
        logged in.  The display is the same as the event flights list print, and
        the display can be configured in the event print center.
      operationId: linkFlightList
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/players:
    get:
      tags:
        - Event Web Links
      summary: Players list
      description: >
        Web link to the list of players registered for the event.


        The link can be shared with anyone and does not require the player to be
        logged in.  The display is the same as the event player list print, and
        the display can be configured in the event print center.
      operationId: linkPlayersList
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/players/{playerId}/scoring:
    get:
      tags:
        - Event Web Links
      summary: Player enter scores
      description: >
        Web link for the player included in the request to enter scores for the
        event.


        **Note:**

        This link is specific to the player included in the request and can only
        be used to score by this player.


        **Community Admin Restriction:**

        If the player is an admin of the community for this event, then the
        player will not be able to use the link to score and will need to log in
        normally.
      operationId: linkPlayersScore
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 2469
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/players/scoring:
    get:
      tags:
        - Event Web Links
      summary: Player (any) enter scores
      description: >
        Web link for any player to enter scores for the event, after the link is
        use the player will be asked to select the player they are scoring as. 
        The live scorecard will then default to score for all players in that
        playe's assigned tee pairing.


        **Community Admin Restriction:**

        Player's that are admin of the communiyt will not be available to be
        selected as the scorer, they will need to log in normally to score.
      operationId: linkPlayersScoreAny
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/players/{playerId}/register:
    get:
      tags:
        - Event Web Links
      summary: Player registration
      description: >
        Web link for the player included in the request to register for the
        event.


        **Note:**

        This link is specific to the player included in the request and can only
        be used to register this player.
      operationId: linkPlayersSignUp
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 2469
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/players/public/register:
    get:
      tags:
        - Event Web Links
      summary: Player public registration
      description: >
        Web link for a public player (not part of your community) to register
        for the event.


        **Registration Type:**

        This link can only be used if the event registration type is set to
        "Online Questionnaire".


        **Note:**

        Player's that are part of your community can still uset this link, they
        will just be asked to enter all of their information.
      operationId: linkPlayersSignUpPublic
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
        - name: playerId
          in: path
          description: Player Id
          required: true
          schema:
            type: integer
            format: int64
          example: 2469
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/results:
    get:
      tags:
        - Event Web Links
      summary: Results list
      description: >
        Web link to the results for the event.


        The link can be shared with anyone and does not require the player to be
        logged in.  The display is the same as the event results print, and the
        display can be configured in the event print center.
      operationId: linkResults
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/teams:
    get:
      tags:
        - Event Web Links
      summary: Teams list
      description: >
        Web link to the list of teams for the event.


        The link can be shared with anyone and does not require the player to be
        logged in.  The display is the same as the event teams list print, and
        the display can be configured in the event print center.
      operationId: linkTeamList
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/events/{eventId}/weblinks/teeSheet:
    get:
      tags:
        - Event Web Links
      summary: Tee sheet list
      description: >
        Web link to the tee sheet for the event.


        The link can be shared with anyone and does not require the player to be
        logged in.  The display is the same as the event tee sheet print, and
        the display can be configured in the event print center.


        **Multi-Round Events:**

        If the request includes a multi-round event id, then all rounds that
        have a tee time assigned will be displayed in the tee sheet.
      operationId: linkTeeSheet
      parameters:
        - name: eventId
          in: path
          description: Event Id
          required: true
          schema:
            type: string
          example: M-5208
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiWebUrl'
              examples:
                sample:
                  description: sample
                  value:
                    url: https://www.unknowngolf.com/q?ac=ke58tnxn
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/communities/{communityId}:
    post:
      tags:
        - Player
      summary: Add player to community
      description: Add the player to the community with the membership status
      operationId: addToCommunity
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: communityId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: member
          in: query
          description: Community member status (true = member, false = non-member)
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiPlayer'
              examples:
                sample:
                  description: sample
                  value:
                    playerId: 1
                    member: true
                    firstName: Bill
                    lastName: Trabosh
                    suffix: III
                    gender: M
                    handle: Founder
                    email: support@unknowngolf.com
                    dob: '1988-07-14'
                    phoneCounryCode: US
                    phoneNumber: '5555555555'
                    hcActive: true
                    hcProviderId: 3
                    hcId: '55885'
                    hcIndex: 12.7
                    hcRevisionDt: '2025-08-04'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    delete:
      tags:
        - Player
      summary: Remove player from community
      description: >-
        Remove the player from the community, if the player has participated in
        an event or registered for an upcoming event they cannot be removed from
        the community
      operationId: deleteFromCommunity
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: communityId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players:
    get:
      tags:
        - Player
      summary: Search players
      description: Search the players in a community
      operationId: search_7
      requestBody:
        description: Player search criteria
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiPlayerSearch'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiPlayer'
              examples:
                sample:
                  description: sample
                  value:
                    - playerId: 1
                      member: true
                      firstName: Bill
                      lastName: Trabosh
                      suffix: III
                      gender: M
                      handle: Founder
                      email: support@unknowngolf.com
                      dob: '1988-07-14'
                      phoneCounryCode: US
                      phoneNumber: '5555555555'
                      hcActive: true
                      hcProviderId: 3
                      hcId: '55885'
                      hcIndex: 12.7
                      hcRevisionDt: '2025-08-04'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
    post:
      tags:
        - Player
      summary: Create player
      description: "\t\t\tCreate a player and add them to a community, if the player already exists in Unknown Golf then they will just be added to the community\n\n\t\t\t**Note:**\n\t\t\tPlayers must be added to a community, you cannot create a player without adding them to at least one of your communities.\n\n\t\t\tAfter the player is created, if you need to add them to additional communities you can via the \"Player add to community\" operation.\n"
      operationId: create_1
      requestBody:
        description: Player to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiPlayerAdd'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiPlayer'
              examples:
                sample:
                  description: sample
                  value:
                    playerId: 1
                    member: true
                    firstName: Bill
                    lastName: Trabosh
                    suffix: III
                    gender: M
                    handle: Founder
                    email: support@unknowngolf.com
                    dob: '1988-07-14'
                    phoneCounryCode: US
                    phoneNumber: '5555555555'
                    hcActive: true
                    hcProviderId: 3
                    hcId: '55885'
                    hcIndex: 12.7
                    hcRevisionDt: '2025-08-04'
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/communities:
    get:
      tags:
        - Player
      summary: list player communities
      description: >-
        Get the list of communities for a player. The player can be a member or
        non-member in that community
      operationId: listCommunities
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiPlayer'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 2
                      name: Unknown Golf Club
                      club: true
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/email:
    patch:
      tags:
        - Player
      summary: Update email
      description: >-
        Update the Player's email address, if the player has already completed
        their profile on Unknown Golf update the player's email can only be
        performed by the player on Unknown Golf.
      operationId: udpateEmail
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: email
          in: query
          description: Player email address
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/communities/{communityId}/member:
    patch:
      tags:
        - Player
      summary: Update member status
      description: Update the Player's member status for the community
      operationId: udpateMemberStatus
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: communityId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: member
          in: query
          description: Community member status (true = member, false = non-member)
          required: true
          schema:
            type: boolean
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/dob:
    patch:
      tags:
        - Player
      summary: Update date of birth
      description: >-
        Update the Player's date of birth in the format YYYY-MM-dd, if the
        player has already completed their profile on Unknown Golf update the
        player's Date of Birth can only be performed by the player on Unknown
        Golf.
      operationId: updateDateOfBirth
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: dob
          in: query
          description: Player Date of Birth
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/handicap:
    patch:
      tags:
        - Player
      summary: Update handicap id
      description: >-
        Update the Player's world handicap, if the player has already completed
        their profile on Unknown Golf update the player's world handicap can
        only be performed by the player on Unknown Golf.
      operationId: updateHandicapId
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: hcProviderId
          in: query
          description: World Handicap Provider Id
          required: true
          schema:
            type: integer
            format: int32
        - name: hcId
          in: query
          description: World Handicap Id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/communities/{communityId}/handle:
    patch:
      tags:
        - Player
      summary: Update handle
      description: Update the Player's handle (nickname) for a community
      operationId: updateHandle
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: communityId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: email
          in: query
          description: Player handle
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/name:
    patch:
      tags:
        - Player
      summary: Update name
      description: >-
        Update the Player's name, if the player has already completed their
        profile on Unknown Golf update the player's name can only be performed
        by the player on Unknown Golf.
      operationId: updateName_1
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: firstName
          in: query
          description: First name
          required: true
          schema:
            type: string
        - name: lasttName
          in: query
          description: Last name
          required: true
          schema:
            type: string
        - name: suffix
          in: query
          description: Last name
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/players/{playerId}/phone:
    patch:
      tags:
        - Player
      summary: Update phone number
      description: >-
        Update the Player's mobile phone, if the player has already completed
        their profile on Unknown Golf update the player's phone can only be
        performed by the player on Unknown Golf.
      operationId: updatePhoneNumber
      parameters:
        - name: playerId
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: phoneCountryCd
          in: query
          description: Phone country code, example (US)
          required: true
          schema:
            type: string
        - name: phone
          in: query
          description: Phone number
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/util/worldHandicaps/providers:
    get:
      tags:
        - Utility
      summary: World Handicap Providers
      description: List of World Handicap providers supported by Unknown Golf
      operationId: hcProviders
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HandicapProvider'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 3
                      name: USGA
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
  /v1/util/leaderboards/types:
    get:
      tags:
        - Utility
      summary: List all leaderboard types
      description: |
        List of leaderboard types
      operationId: list_5
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiLeaderboardType'
              examples:
                sample:
                  description: sample
                  value:
                    - id: 1
                      name: LOW_NET
                    - id: 2
                      name: STABLEFORD
                    - id: 3
                      name: MATCH_PLAY
                    - id: 5
                      name: SKINS
                    - id: 6
                      name: WINNER
                    - id: 7
                      name: ADMIN
                    - id: 8
                      name: TEAM_BEST_BALL
                    - id: 9
                      name: TEAM_SCRAMBLE
                    - id: 10
                      name: HOLE_SCORE
                    - id: 11
                      name: PICK_A_PRO
                    - id: 12
                      name: ECLECTIC
                    - id: 13
                      name: COMBINATION
                    - id: 16
                      name: MATCH_PLAY_ALL
                    - id: 19
                      name: BALL_SELECT
        '401':
          description: Unauthorized player or request
      security:
        - bearerAuth: []
components:
  schemas:
    AccessToken:
      type: object
      properties:
        token:
          type: string
          description: Access token
          example: >-
            eyJhbGc4NCJ9.eyJzdWIiOiJ1cC5hcGlAdW5rbm93bmdvbGYyOSwieHAiOjQyMTEyMTQxMDgxfQ.eRDA6Ubn9OgY_5M4u8ENSrPFP5X9X4ZcuM
        tokenType:
          type: string
          description: Token Type
          example: Bearer
        expiresIn:
          type: integer
          description: Number of seconds until the token expires
          format: int64
          example: 86400
        scope:
          type: string
          description: Token Type
          example: read write
      description: Player access token
    Credentials:
      required:
        - email
        - password
      type: object
      properties:
        email:
          type: string
          description: Email address
          example: support@unknowngolf.com
        password:
          type: string
          description: Password
          example: SuPP0r$z
      description: Player security credentials
    Community:
      type: object
      properties:
        id:
          type: integer
          description: Community id
          format: int32
          example: 3
        name:
          type: string
          description: Name
          example: Bowl of Soup
        club:
          type: boolean
          description: Flag if the community is a club with sub communities
          example: true
        clubCommunityId:
          type: integer
          description: The community id of the club this community is associated with
          format: int32
          example: 24
      description: Community which can also be a Club
    CommunitySearch:
      type: object
      properties:
        communityIds:
          type: array
          description: List of Community Ids
          example:
            - 4
            - 2445
            - 2434
          items:
            type: integer
            description: List of Community Ids
            format: int32
      description: Community search criteria
    ApiEvent:
      type: object
      properties:
        communityId:
          type: integer
          description: Community Id
          format: int32
          example: 19564
        communityName:
          type: string
          description: Community Name
          example: '19564'
        eventId:
          type: string
          description: Event Id
          example: M-432
        name:
          type: string
          description: Name
          example: Member / Member
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 2434
        courseName:
          type: string
          description: Course Name
          example: '2434'
        city:
          type: string
          description: City
          example: Lantana
        state:
          type: string
          description: State
          example: TX
        startDate:
          type: string
          description: Start Date
          format: date
          example: '2025-01-27'
        endDate:
          type: string
          description: End Date
          format: date
          example: '2025-01-27'
        info:
          type: string
          description: Info
          example: TX
        locked:
          type: boolean
          description: Locked
          example: true
      description: Event criteria
    ApiEventSearch:
      required:
        - communityId
      type: object
      properties:
        communityId:
          type: integer
          description: Community Id
          format: int32
          example: 19564
        forPlayerId:
          type: integer
          description: Events viewable for this player
          format: int32
          example: 287
        forRegisteredPlayer:
          type: boolean
          description: >-
            Events where this player is (or is NOT) registered (Signed Up) to
            participate.  True = Events registered, False = Events not
            registered, null = All events
          example: true
        eventIds:
          type: array
          description: List of Event Ids
          example: '[M-4, S-2445, S-2434]'
          items:
            type: string
            description: List of Event Ids
            example: '[M-4, S-2445, S-2434]'
        courseIds:
          type: array
          description: Course Ids
          example:
            - 4
            - 2445
            - 2434
          items:
            type: integer
            description: Course Ids
            format: int32
        startDateFrom:
          type: string
          description: Start Date is on or after this date
          format: date
          example: '2025-01-27'
        startDateTo:
          type: string
          description: Start Date is on or before this date
          format: date
          example: '2025-01-27'
        endDateFrom:
          type: string
          description: End Date is on or after this date
          format: date
          example: '2025-01-27'
        endDateTo:
          type: string
          description: End Date is on or before this date
          format: date
          example: '2025-01-27'
        sortAsc:
          type: boolean
          description: Sort by Date Ascending (Default is Descending)
          example: false
        maxResults:
          type: integer
          description: Max number of results
          format: int32
          example: 100
      description: Event search criteria
    ApiCourse:
      type: object
      properties:
        id:
          type: integer
          description: Course Id
          format: int32
          example: 287
        name:
          type: string
          description: Name
          example: Lantana Golf Club
        city:
          type: string
          description: City
          example: Lantana
        state:
          type: string
          description: State
          example: US-TX
        country:
          type: string
          description: Country
          example: US
      description: Golf Course
    ApiCourseTee:
      type: object
      properties:
        id:
          type: integer
          description: Tee Id
          format: int32
          example: 18547
        gender:
          type: string
          description: Gender (M - Men / F - Ladies)
          example: M
        name:
          type: string
          description: Name
          example: Blue
        par:
          type: integer
          description: Par Total
          format: int32
          example: 72
        parFront:
          type: integer
          description: Par Front
          format: int32
          example: 36
        parBack:
          type: integer
          description: Par Back
          format: int32
          example: 36
        rating:
          type: number
          description: Rating Total
          format: double
          example: 73.1
        ratingFront:
          type: number
          description: Rating Front
          format: double
          example: 36
        ratingBack:
          type: number
          description: Rating Back
          format: double
          example: 37.1
        slope:
          type: integer
          description: Slope Total
          format: int32
          example: 128
        slopeFront:
          type: integer
          description: Slope Front
          format: int32
          example: 130
        slopeBack:
          type: integer
          description: Slope Back
          format: int32
          example: 126
        holes:
          type: array
          description: Holes
          items:
            $ref: '#/components/schemas/ApiCourseTeeHole'
      description: Golf Course Tee
    ApiCourseTeeHole:
      type: object
      properties:
        hole:
          type: integer
          description: Hole Number
          format: int32
          example: 1
        par:
          type: integer
          description: hole Par
          format: int32
          example: 4
        hc:
          type: integer
          description: Hole Handicap (Stroke Allocation)
          format: int32
          example: 8
        lengthYards:
          type: integer
          description: length in yards
          format: int32
          example: 1
      description: Golf Course Tee Hole
    ApiFlight:
      type: object
      properties:
        id:
          type: integer
          description: Flight Id
          format: int32
          example: 28857
        leaderboardId:
          type: integer
          description: Leaderboard Id
          format: int32
          example: 28764
        name:
          type: string
          description: Flight Name
          example: 'Flight #1'
      description: Flight
    ApiFlightPlayer:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 28
        firstName:
          type: string
          description: First Name
          example: Bill
        lastName:
          type: string
          description: Last Name
          example: Trabosh
        suffix:
          type: string
          description: Suffix
          example: III
        handle:
          type: string
          description: Handle or nickname
          example: Founder
      description: Flight Player
    ApiFlightPlayersTeams:
      type: object
      properties:
        id:
          type: integer
          description: Flight Id
          format: int32
          example: 28857
        leaderboardId:
          type: integer
          description: Leaderboard Id
          format: int32
          example: 28764
        name:
          type: string
          description: Flight Name
          example: 'Flight #1'
        players:
          type: array
          description: List of Players (If not a Team Leaderboard)
          items:
            $ref: '#/components/schemas/ApiFlightPlayer'
        teams:
          type: array
          description: List of Teams (Only if a Team Leaderboard)
          items:
            $ref: '#/components/schemas/ApiFlightTeam'
      description: Flight with Players and Teams
    ApiFlightTeam:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 28837
        name:
          type: string
          description: Name
          example: 'Team #1'
        players:
          type: array
          description: Players
          items:
            $ref: '#/components/schemas/ApiFlightPlayer'
      description: Flight Team
    ApiPlayerHc:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 15254
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 4585
        courseName:
          type: string
          description: Course Name
          example: Lantana Golf Club
        teeId:
          type: integer
          description: Tee Id
          format: int32
          example: 6585452
        teeName:
          type: string
          description: Tee Name
          example: Blue
        teeRating:
          type: number
          description: Tee Rating
          format: double
          example: 73.1
        teeSlope:
          type: integer
          description: Tee Slope
          format: int32
          example: 128
        teePar:
          type: integer
          description: Tee Par
          format: int32
          example: 72
        hcRevisionDt:
          type: string
          description: >-
            Handicap Revision Date for the Player's index, if a World Handicap
            was utilized to set the player's handicap
          format: date
          example: '2025-08-12'
        hcIndex:
          type: number
          description: Handicap Index
          format: double
          example: 7.6
        hcCourse:
          type: integer
          description: Handicap Course
          format: int32
          example: 8
        hcPlaying:
          type: integer
          description: Handicap Playing
          format: int32
          example: 8
        hcAllocPct:
          type: integer
          description: Allocation Percentage
          format: int32
          example: 100
        manualMsg:
          type: string
          description: Message explaining the manual set handicap
          example: MGA Stroke from partner rule
        lockedDt:
          type: string
          description: >-
            Date and time in UTC (Coordinated Universal Time) of when the
            players handicap was locked
          format: date-time
      description: Player Handicap
    ApiHcSearch:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 7586
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 526
      description: Handicap Search Criteria
    ApiUpdateHcCoursePlaying:
      required:
        - hcCourse
        - hcPlaying
      type: object
      properties:
        courseId:
          type: integer
          description: Course Id (All Courses for the Event if not included)
          format: int32
          example: 7586
        hcCourse:
          type: integer
          description: Course Handicap (18 Holes)
          format: int32
          example: 7
        hcPlaying:
          type: integer
          description: Playing Handicap (18 Holes)
          format: int32
          example: 7
        manualMsg:
          type: string
          description: >
            Message explaining the manual setting of the player's handicap.


            This message is viewable to the player when they view how their
            handicap was calculated for the event / round.
          example: MGA Stroke from partner rule
      description: Handicap Course Playing
    ApiUpdateHcIndex:
      required:
        - hcIndex
      type: object
      properties:
        hcIndex:
          type: number
          description: Handicap Index
          format: double
          example: 5.8
        manualMsg:
          type: string
          description: >
            Message explaining the manual setting of the player's handicap.


            This message is viewable to the player when they view how their
            handicap was calculated for the event / round.
          example: MGA Stroke from partner rule
      description: Handicap Index
    ApiTeamHc:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 15254
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 4585
        courseName:
          type: string
          description: Course Name
          example: Lantana Golf Club
        hcIndex:
          type: number
          description: Handicap Index
          format: double
          example: 7.6
        hcCourse:
          type: integer
          description: Handicap Course
          format: int32
          example: 8
        hcPlaying:
          type: integer
          description: Handicap Playing
          format: int32
          example: 8
        hcAllocPct:
          type: number
          description: Allocation Percentage
          format: double
          example: 100
        manualMsg:
          type: string
          description: Message explaining the manual set handicap
          example: MGA Stroke from partner rule
        lockedDt:
          type: string
          description: >-
            Date and time in UTC (Coordinated Universal Time) of when the teams
            handicap was locked
          format: date-time
      description: Team Handicap
    ApiUpdateHc:
      required:
        - hcCourse
        - hcIndex
        - hcPlaying
      type: object
      properties:
        hcIndex:
          type: number
          description: Handicap Index
          format: double
          example: 12.3
        hcCourse:
          type: integer
          description: Course Handicap (18 Holes)
          format: int32
          example: 7
        hcPlaying:
          type: integer
          description: Playing Handicap (18 Holes)
          format: int32
          example: 6
        manualMsg:
          type: string
          description: >
            Message explaining the manual setting of the team's handicap.


            This message is viewable to the team players when they view how
            their handicap was calculated for the event / round.
          example: MGA Stroke from partner rule
      description: Update a team handicap
    ApiLeaderboard:
      type: object
      properties:
        id:
          type: integer
          description: Leaderboard Id
          format: int32
          example: 28857
        name:
          type: string
          description: Leaderboard Name
          example: Best Ball (1x Net)
        typeId:
          type: integer
          description: Leaderboard Type Id
          format: int32
          example: 2
      description: Leaderboard
    ApiPlayerId:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 1857
      description: Player Id
    ApiPlayerSignUp:
      type: object
      properties:
        playerId:
          type: integer
          description: >
            Player Id


            **Note:**

            Only required when registering a player and their profile, if you
            are just registering a name only "First Name, "Last Name", and
            "Gender" are required.
          format: int32
          example: 15254
        member:
          type: boolean
          description: Member of community
          example: true
        firstName:
          type: string
          description: Player first name
          example: Bill
        lastName:
          type: string
          description: Player last name
          example: Trabosh
        suffix:
          type: string
          description: Player suffix
          example: III
        gender:
          type: string
          description: Gender code
          example: M / F
        handle:
          type: string
          description: Handle or nickname
          example: Founder
        affiliation:
          type: string
          description: Affiliation
          example: Lantana Golf Club
        age:
          type: integer
          description: Age
          format: int32
          example: 56
      description: Player to register for an Event
    ApiPlayer:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 15254
        member:
          type: boolean
          description: Member of community
          example: true
        firstName:
          type: string
          description: first name
          example: Bill
        lastName:
          type: string
          description: last name
          example: Trabosh
        suffix:
          type: string
          description: suffix
          example: III
        gender:
          type: string
          description: Gender code
          example: M / F
        handle:
          type: string
          description: Handle or nickname
          example: Founder
        email:
          type: string
          description: Email address
          example: support@unknowngolf.com
        dob:
          type: string
          description: Date of Birth
          format: date
          example: '1987-01-26'
        phoneCountryCd:
          type: string
          description: Country Code for the phone number
          example: US
        phone:
          type: string
          description: Phone number
          example: '5555555555'
        hcActive:
          type: boolean
          description: Flag if the player's world handicap is active
          example: true
        hcProviderId:
          type: integer
          description: >-
            World Handicap Provider Id, reference the API for World Handicap
            Providers for the ids
          format: int32
          example: 3
        hcId:
          type: string
          description: World Handicap Id
          example: '6585452'
        hcIndex:
          type: number
          description: World Handicap Index
          format: double
          example: 15.2
        hcRevisionDt:
          type: string
          description: Handicap revision date
          format: date
          example: '2025-04-11'
        picUrl:
          type: string
          description: Profile Picture URL
          example: https://static.unknwongolf.com/example.gif
        updatesAllowed:
          type: boolean
          description: >+
            Flag if updates to the player's personal information may be made
            through the Unknown Golf API


            ** Note: **

            If the player has already completed their profile on
            UnknownGolf.com, updates to the player's personal information listed
            below can only be performed by the player on Unknown Golf:


            - Name (First, Last, Suffix)

            - Email Address

            - World Handicap Id

            - Date of Birth

            - Phone Number


            Only updates are restricted, if the player does not currently have
            an attribute set then setting that attribute is allowed.  Example,
            if the player does not have a phone number set, you can set the
            phone number for them.

          example: true
      description: Player object
    ApiScore:
      type: object
      properties:
        id:
          type: integer
          description: Score Id
          format: int32
          example: 15589645
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 15254
        name:
          type: string
          description: Team name
          example: 'Team #1'
        eventId:
          type: string
          description: Event Id
          example: S-432
        startHole:
          type: integer
          description: Starting Hole
          format: int32
          example: 1
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 4585
        courseName:
          type: string
          description: Course Name
          example: Lantana Golf Club
        hcIndex:
          type: number
          description: Handicap Index
          format: double
          example: 7.6
        hcCourse:
          type: integer
          description: Handicap Course
          format: int32
          example: 8
        hcPlaying:
          type: integer
          description: Handicap Playing
          format: int32
          example: 8
        gross:
          type: integer
          description: Gross Score
          format: int32
          example: 85
        grossVsPar:
          type: integer
          description: Gross Score vs. Par
          format: int32
          example: 13
        net:
          type: integer
          description: Net Score
          format: int32
          example: 74
        netVsPar:
          type: integer
          description: Net Score vs. Par
          format: int32
          example: 2
        isTest:
          type: boolean
          description: Test Score
          example: false
        unofficial:
          type: boolean
          description: Unofficial (Live) Score
          example: true
        players:
          type: array
          description: Team Players
          items:
            $ref: '#/components/schemas/ApiTeamPlayer'
        holeScores:
          type: array
          description: Hole Scores
          items:
            $ref: '#/components/schemas/ApiScoreHole'
      description: Player Score
    ApiScoreHole:
      type: object
      properties:
        hole:
          type: integer
          description: Hole Number
          format: int32
          example: 1
        gross:
          type: integer
          description: Gross Score
          format: int32
          example: 5
        netCourse:
          type: integer
          description: Net Score (Course)
          format: int32
          example: 3
        netPlaying:
          type: integer
          description: Net Score (Playing)
          format: int32
          example: 3
      description: Player Hole Score
    ApiScoreSearch:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 7586
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 526
      description: Score Search Criteria
    ApiTeamPlayer:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 28
        firstName:
          type: string
          description: First Name
          example: Bill
        lastName:
          type: string
          description: Last Name
          example: Trabosh
        suffix:
          type: string
          description: Suffix
          example: III
        handle:
          type: string
          description: Handle or nickname
          example: Founder
      description: Team Player
    ApiTeamAdd:
      type: object
      properties:
        name:
          type: string
          description: Name
          example: 'Team #1'
        playerIds:
          type: array
          description: Player Ids to initially assign to the team
          items:
            type: integer
            description: Player Ids to initially assign to the team
            format: int32
      description: Team Add
    ApiTeamPlayerAdd:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 15567
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 28
      description: Team Player Add
    ApiTeam:
      type: object
      properties:
        teamId:
          type: integer
          description: Team Id
          format: int32
          example: 28837
        name:
          type: string
          description: Name
          example: 'Team #1'
        players:
          type: array
          description: Players
          items:
            $ref: '#/components/schemas/ApiTeamPlayer'
      description: Team
    ApiTeeCreateReturn:
      type: object
      properties:
        teePairingId:
          type: integer
          description: Tee Id
          format: int32
          example: 28857
        errors:
          type: array
          description: Errors creating the tee pairing
          example:
            - Unable to add player id 159323 to the tee pairing
          items:
            type: string
            description: Errors creating the tee pairing
            example: '["Unable to add player id 159323 to the tee pairing"]'
      description: >-
        List of the tee pairings created and any errors that may have prevented
        the creation of the tee pairing or adding players to the tee pairing
    ApiTeeCreate:
      required:
        - courseId
        - hole
        - time
      type: object
      properties:
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 21689
        time:
          $ref: '#/components/schemas/LocalTime'
        hole:
          type: integer
          description: Starting Hole
          format: int32
          example: 1
        group:
          type: string
          description: Starting Hole Group
          example: A
        playerIds:
          type: array
          description: Player Ids to assign to the tee pairing
          example:
            - 28
            - 159323
            - 41739
          items:
            type: integer
            description: Player Ids to assign to the tee pairing
            format: int32
      description: Create tee pairing
    LocalTime:
      type: object
      properties:
        hour:
          type: integer
          format: int32
        minute:
          type: integer
          format: int32
        second:
          type: integer
          format: int32
        nano:
          type: integer
          format: int32
      description: Starting Time in UTC (Coordinated Universal Time)
      example: 08:00 AM
    ApiTeePlayerAssignReturn:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 28857
        errors:
          type: array
          description: Errors creating the tee pairing
          example:
            - Unable to add player id 159323 to the tee pairing
          items:
            type: string
            description: Errors creating the tee pairing
            example: '["Unable to add player id 159323 to the tee pairing"]'
      description: >-
        List of the players assigned and any errors that may have prevented the
        assignment
    ApiTeeAssignPlayer:
      required:
        - teePairingId
      type: object
      properties:
        teePairingId:
          type: integer
          description: Tee Pairing Id
          format: int32
          example: 21689
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 21689
      description: Tee pairing player assign
    ApiTee:
      type: object
      properties:
        id:
          type: integer
          description: Tee Id
          format: int32
          example: 28857
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 21689
        time:
          $ref: '#/components/schemas/LocalTime'
        hole:
          type: integer
          description: Starting Hole
          format: int32
          example: 1
        group:
          type: string
          description: Starting Hole Group
          example: A
        players:
          type: array
          description: Players
          items:
            $ref: '#/components/schemas/ApiTeePlayer'
      description: Tee pairing
    ApiTeePlayer:
      type: object
      properties:
        playerId:
          type: integer
          description: Player Id
          format: int32
          example: 28
        firstName:
          type: string
          description: First Name
          example: Bill
        lastName:
          type: string
          description: Last Name
          example: Trabosh
        suffix:
          type: string
          description: Suffix
          example: III
        handle:
          type: string
          description: Handle or nickname
          example: Founder
      description: Tee pairing player
    ApiTeeAllRounds:
      type: object
      properties:
        eventId:
          type: string
          description: Event Id
          example: S-7643
        id:
          type: integer
          description: Tee Id
          format: int32
          example: 28857
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 21689
        time:
          $ref: '#/components/schemas/LocalTime'
        hole:
          type: integer
          description: Starting Hole
          format: int32
          example: 1
        group:
          type: string
          description: Starting Hole Group
          example: A
        players:
          type: array
          description: Players
          items:
            $ref: '#/components/schemas/ApiTeePlayer'
      description: Tee Pairing for all rounds of a multi-round event
    ApiTeeUpdateReturn:
      type: object
      properties:
        teePairingId:
          type: integer
          description: Tee Id
          format: int32
          example: 28857
        errors:
          type: array
          description: Errors updating the tee pairing
          example:
            - Unable to add player id 159323 to the tee pairing
          items:
            type: string
            description: Errors updating the tee pairing
            example: '["Unable to add player id 159323 to the tee pairing"]'
      description: >-
        List of tee pairings update status and any errors that may have prevents
        updating the tee pairing
    ApiTeeUpdate:
      required:
        - hole
        - id
        - time
      type: object
      properties:
        id:
          type: integer
          description: Tee Pairing Id
          format: int32
          example: 21689
        time:
          $ref: '#/components/schemas/LocalTime'
        hole:
          type: integer
          description: Starting Hole
          format: int32
          example: 1
        group:
          type: string
          description: Starting Hole Group
          example: A
        courseId:
          type: integer
          description: Course Id
          format: int32
          example: 21689
      description: Update tee pairing
    ApiWebUrl:
      type: object
      properties:
        url:
          type: string
          description: url
          example: https://www.unknowngolf.com
      description: Web URL Link
    ApiPlayerAdd:
      required:
        - communityId
        - email
        - firstName
        - gender
        - lastName
      type: object
      properties:
        communityId:
          type: integer
          description: Community Id
          format: int32
          example: 15254
        member:
          type: boolean
          description: Member of community
          example: true
        firstName:
          type: string
          description: Player first name
          example: Bill
        lastName:
          type: string
          description: Player last name
          example: Trabosh
        suffix:
          type: string
          description: Player suffix
          example: III
        gender:
          type: string
          description: Gender code
          example: M / F
        handle:
          type: string
          description: Handle or nickname
          example: Founder
        email:
          type: string
          description: Email address
          example: support@unknowngolf.com
        dob:
          type: string
          description: Date of Birth
          format: date
          example: '1987-01-26'
        phoneCountryCd:
          type: string
          description: Country Code for the phone number
          example: US
        phone:
          type: string
          description: Phone number
          example: '5555555555'
        hcProviderId:
          type: integer
          description: >-
            World Handicap Provider Id, reference the API for World Handicap
            Providers for the ids
          format: int32
          example: 3
        hcId:
          type: string
          description: World Handicap Id
          example: '6585452'
      description: Add Player object
    ApiPlayerSearch:
      required:
        - communityId
      type: object
      properties:
        communityId:
          type: integer
          description: Community Id
          format: int32
          example: 19564
        playerIds:
          type: array
          description: List of Player Ids
          example:
            - 4
            - 2445
            - 2434
          items:
            type: integer
            description: List of Player Ids
            format: int32
        email:
          type: string
          description: Email Address
          example: support@unknowngolf.com
        lastName:
          type: string
          description: Last name can be partial but must start with
          example: Trab
        member:
          type: boolean
          description: Player member status, True for Members, and false for Non-Members
          example: true
        hcProviderId:
          type: integer
          description: >-
            World Handicap Provider Id, reference the API for World Handicap
            Providers for the ids
          format: int32
          example: 3
        hcId:
          type: string
          description: Handicap Id
          example: '15.2'
      description: Player search criteria
    HandicapProvider:
      type: object
      properties:
        id:
          type: integer
          description: World Handicap Provider Id
          format: int32
          example: 3
        name:
          type: string
          description: World Handicap Provider Name
          example: USGA
      description: World Handicap Provider
    ApiLeaderboardType:
      type: object
      properties:
        id:
          type: integer
          description: Type Id
          format: int32
          example: 28857
        name:
          type: string
          description: Type Name
          example: Stroke Play (Individual)
      description: Leaderboard Types
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
