Standard Stroke Events

Addressing Ball

This event will be sent when a player is about to hit the ball, i.e, they are standing over the ball literally about to take their stroke.

Addressing Ball Object

Field Name

Type

Description

seqNum

int

The sequence number of the packet. Always starts at 1, increments in 1

groupNo

int

[Optional] The group number of the player who did the event

teamNo

int

The team number of the player who did the event

playerId

int

The player ID of the player who did the event

holeNo

int

The hole in which the event took place

holeOrder

int

The hole order of the hole in which the event took place (e.g. if a player starts a round on hole 10, this will be 1) – always starts at 1 and ends on 18

courseId

int

The ID of the course where the event took place

strokeNo

int

The stroke associated with the event

timestamp

date

The timestamp of the event, in UTC

timestampReceived

date

The server time of the moment that this packet has been processed

eventElementType

string

The type of event, in this case AddressingBall

provisionalIndex

integer

indicates if the event is part of a provisional ball. 0 if not, 1 if first provisional ball, 2 if second provisional ball for that stroke, e.t.c…

clubTypeCode

string

This is the type of Club a player used for the shot. NB. this is only populated for Drives.

Player Object

Field Name
Type
Description

displayName

string

The full name or display name of that player

country

string

The affiliated country (typically birthplace)

isAmateur

string

Is that player an amateur or not (true/false)

lastName

string

The surname of the player

firstName

string

The forename of that player

id

Integer

The Player unique Id

Club Types

clubTypeCode

Description

CDR

Driver

CFW

Fairway Wood

CIR

Iron

CUK

Unknown

Sample Event Packet:

{
    "clubTypeCode": "CUK",
    "timestamp": "2022-01-14T03:15:06.366Z",
    "courseId": "83",
    "provisionalIndex": 0,
    "groupNo": 31,
    "eventElementType": "AddressingBall",
    "player": {
        "displayName": "Kevin Na",
        "country": "USA",
        "isAmateur": false,
        "lastName": "Na",
        "firstName": "Kevin",
        "id": 3903
    },
    "seqNum": 387,
    "holeOrder": 18,
    "teamNo": 40,
    "strokeNo": 4,
    "playerId": 3903,
    "timestampReceived": "2022-01-14T03:15:08.564Z",
    "holeNo": 18
}

Hit Ball

This event will be sent as soon as the player has hit the ball.

Hit Ball Object

Field Name

Type

Description

seqNum

int

The sequence number of the packet. Always starts at 1, increments in 1

groupNo

int

[Optional] The group number of the player who did the event

teamNo

int

The team number of the player who did the event

playerId

int

The player ID of the player who did the event

holeNo

int

The hole in which the event took place

holeOrder

int

The hole order of the hole in which the event took place (e.g. if a player starts a round on hole 10, this will be 1) – always starts at 1 and ends on 18

courseId

int

The ID of the course where the event took place

strokeNo

int

The stroke associated with the event

matchType

string

The type of match in which the event is being played; Strokeplay is the standard response currently

timestamp

date

The timestamp of the event, in UTC

timestampReceived

date

The server time of the moment that this packet has been processed

eventElementType

string

The type of event, in this case HitBall

provisionalIndex

integer

indicates if the event is part of a provisional ball. 0 if not, 1 if first provisional ball, 2 if second provisional ball for that stroke, e.t.c…

Player Object

Field Name
Type
Description

displayName

string

The full name or display name of that player

country

string

The affiliated country (typically birthplace)

isAmateur

string

Is that player an amateur or not (true/false)

lastName

string

The surname of the player

firstName

string

The forename of that player

id

Integer

The Player unique Id

Score Object

Field Name

Type

Description

currentHoleStrokes

int

The number of strokes that the team is on for that hole; Can be greater than ‘stroke’ above in the instance that the team has been awarded a penalty

currentHolePar

int

The par score for the current hole

currentRoundScoreToPar

object

The team’s current ‘To Par’ score for the current round

overallScoreToPar

object

The team’s current ‘To Par’ score for the tournament

Sample Event Packet:

{
    "timestamp": "2022-01-13T22:06:57.573Z",
    "courseId": "83",
    "score": {
        "currentHolePar": 5,
        "overallScoreToPar": "-6",
        "currentHoleStrokes": 0,
        "currentRoundScoreToPar": "-6"
    },
    "provisionalIndex": 0,
    "groupNo": 4,
    "eventElementType": "HitBall",
    "player": {
        "displayName": "Kevin Chappell",
        "country": "USA",
        "isAmateur": false,
        "lastName": "Chappell",
        "firstName": "Kevin",
        "id": 5914
    },
    "seqNum": 536,
    "holeOrder": 18,
    "teamNo": 91,
    "strokeNo": 3,
    "playerId": 5914,
    "timestampReceived": "2022-01-13T22:26:05.460Z",
    "holeNo": 18
}

Approximate Ball Lie

This will be sent as soon as we have any information on the lie of the ball. It is approximate because it assumes the data collector has not been able to get to where the ball has landed on the course, and will be estimating it’s lie based on a map.

Approximate Ball Lie Object

Field Name

Type

Description

seqNum

int

The sequence number of the packet. Always starts at 1, increments in 1

groupNo

int

[Optional] The group number of the player who did the event

teamNo

int

The team number of the player who did the event

playerId

int

The player ID of the player who did the event

holeNo

int

The hole in which the event took place

holeOrder

int

The hole order of the hole in which the event took place (e.g. if a player starts a round on hole 10, this will be 1) – always starts at 1 and ends on 18

courseId

int

The ID of the course where the event took place

strokeNo

int

The stroke associated with the event

matchType

string

The type of match in which the event is being played; Strokeplay is the standard response currently

timestamp

date

The timestamp of the event, in UTC

timestampReceived

date

The server time of the moment that this packet has been processed

eventElementType

string

The type of event, in this case ApproximateLie

provisionalIndex

integer

indicates if the event is part of a provisional ball. 0 if not, 1 if first provisional ball, 2 if second provisional ball for that stroke, e.t.c…

Ball Lie Object

Field Name

Type

Description

x

decimal

X co-ordinate of the ball

y

decimal

Y co-ordinate of the ball

z

decimal

Z co-ordinate of the ball

shotDistance

int

How far the shot went for that stroke

distanceToPin

int

How far the ball is from the pin

surfaceType

string

Text string which describes the lie of the ball, can be inconsistent across different data collection systems / Tours. We recommend using the 3 letter codes.

See Surface Types table below.

surfaceTypeCode

string

3 letter enum code which describes the lie of the ball.

See Surface Types table below.

obstructions

boolean

true if the team has an obstruction next to the ball that makes the ball hard to hit

blindshot

boolean

true if the team cannot see the pin from where they are taking the shot

Surface Types:

surfaceTypeCode

surfaceType

OFW

Fairway

OGR

Green

OIR

IntermediateRough

ORO

Rough or PrimaryRough

OST

FairwayBunker

OGS

Greenside Bunker

OCO

Fringe

ONA

NativeArea

OTO

Trees or TreeOutline

OBU

Bushes

ODS

Desert

OWA

Water

OTH

Other

OCA

CartPath

ODO

Dirt or DirtOutline

OTF

OtherFairway

OOB

OutOfBounds

OWB

WasteBunker

OUK

Unknown

Player Object

Field Name
Type
Description

displayName

string

The full name or display name of that player

country

string

The affiliated country (typically birthplace)

isAmateur

string

Is that player an amateur or not (true/false)

lastName

string

The surname of the player

firstName

string

The forename of that player

id

Integer

The Player unique Id

Sample Event Packet:

{
    "timestamp": "2022-01-14T02:18:21.330Z",
    "courseId": "83",
    "ballLie": {
        "coordinates": {
            "x": 9984.453,
            "y": 9651.225,
            "z": 7.989
        },
        "surfaceTypeCode": "OGR",
        "distanceToPin": 11.455,
        "shotDistance": 171.501,
        "blindShot": false,
        "surfaceType": "Green",
        "obstructions": false
    },
    "provisionalIndex": 0,
    "groupNo": 38,
    "eventElementType": "ApproximateLie",
    "player": {
        "displayName": "Christiaan Bezuidenhout",
        "country": "RSA",
        "isAmateur": false,
        "lastName": "Bezuidenhout",
        "firstName": "Christiaan",
        "id": 226
    },
    "seqNum": 390,
    "holeOrder": 18,
    "teamNo": 79,
    "strokeNo": 2,
    "playerId": 226,
    "timestampReceived": "2022-01-14T02:18:24.462Z",
    "holeNo": 9
}

Detailed Ball Lie

This will be sent as soon as we have more detailed information on the lie of the ball – I.e the data collector has been able to walk over to the lie of the ball and give the exact GPS location of the ball.

Detailed Ball Lie Object

Field Name

Type

Description

seqNum

int

The sequence number of the packet. Always starts at 1, increments in 1

groupNo

int

[Optional] The group number of the player who did the event

teamNo

int

The team number of the player who did the event

playerId

int

The player ID of the player who did the event

holeNo

int

The hole in which the event took place

holeOrder

int

The hole order of the hole in which the event took place (e.g. if a player starts a round on hole 10, this will be 1) – always starts at 1 and ends on 18

courseId

int

The ID of the course where the event took place

strokeNo

int

The stroke associated with the event

matchType

string

The type of match in which the event is being played; Strokeplay is the standard response currently

timestamp

date

The timestamp of the event, in UTC

timestampReceived

date

The server time of the moment that this packet has been processed

eventElementType

string

The type of event, in this case ApproximateLie

provisionalIndex

integer

indicates if the event is part of a provisional ball. 0 if not, 1 if first provisional ball, 2 if second provisional ball for that stroke, e.t.c…

Ball Lie Object

Field Name

Type

Description

x

decimal

X co-ordinate of the ball

y

decimal

Y co-ordinate of the ball

z

decimal

Z co-ordinate of the ball

shotDistance

int

How far the shot went for that stroke

distanceToPin

int

How far the ball is from the pin

surfaceType

string

Text string which describes the lie of the ball, can be inconsistent across different data collection systems / Tours. We recommend using the 3 letter codes.

See Surface Types table above.

surfaceTypeCode

string

3 letter enum code which describes the lie of the ball.

See Surface Types table above.

obstructions

boolean

true if the team has an obstruction next to the ball that makes the ball hard to hit

blindshot

boolean

true if the team cannot see the pin from where they are taking the shot

Player Object

Field Name
Type
Description

displayName

string

The full name or display name of that player

country

string

The affiliated country (typically birthplace)

isAmateur

string

Is that player an amateur or not (true/false)

lastName

string

The surname of the player

firstName

string

The forename of that player

id

Integer

The Player unique Id

Sample Event Packet:

{
    "timestamp": "2022-01-13T22:30:10.356Z",
    "courseId": "83",
    "ballLie": {
        "coordinates": {
            "x": 7867.794,
            "y": 11834.226,
            "z": 36.965
        },
        "surfaceTypeCode": "OGR",
        "distanceToPin": 3.15,
        "shotDistance": 17.882,
        "blindShot": false,
        "surfaceType": "Green",
        "obstructions": false
    },
    "provisionalIndex": 0,
    "groupNo": 24,
    "eventElementType": "DetailedLie",
    "player": {
        "displayName": "Stephan Jaeger",
        "country": "GER",
        "isAmateur": false,
        "lastName": "Jaeger",
        "firstName": "Stephan",
        "id": 3403
    },
    "seqNum": 434,
    "holeOrder": 14,
    "teamNo": 114,
    "strokeNo": 3,
    "playerId": 3403,
    "timestampReceived": "2022-01-13T22:30:14.347Z",
    "holeNo": 5
}

Ball Holed

Will be sent when the ball has been holed.

Ball Holed Object

Field Name

Type

Description

seqNum

int

The sequence number of the packet. Always starts at 1, increments in 1

groupNo

int

[Optional] The group number of the player who did the event

teamNo

int

The team number of the player who did the event

playerId

int

The player ID of the player who did the event

holeNo

int

The hole in which the event took place

holeOrder

int

The hole order of the hole in which the event took place (e.g. if a player starts a round on hole 10, this will be 1) – always starts at 1 and ends on 18

courseId

int

The ID of the course where the event took place

strokeNo

int

The stroke associated with the event

matchType

string

The type of match in which the event is being played; Strokeplay is the standard response currently

timestamp

date

The timestamp of the event, in UTC

eventElementType

string

The type of event, in this case BallHoled

provisionalIndex

integer

indicates if the event is part of a provisional ball. 0 if not, 1 if first provisional ball, 2 if second provisional ball for that stroke, e.t.c…

Score Object

Field Name

Type

Description

currentHoleStrokes

int

The number of strokes that the team is on for that hole; Can be greater than ‘stroke’ above in the instance that the team has been awarded a penalty

currentHolePar

int

The par score for the current hole

currentRoundScore

object

The team’s current ‘To Par’ score for the current round

overallScore

object

The team’s current ‘To Par’ score for the tournament

Sample Event Packet

{
	"groupNo": 1,
	"teamId": 489,
	"holeNo": 1,
	"PlayerId": 313,
	"holeOrder": 1,
	"courseId": 123,
	"stroke": 4,
	"timestamp": "2018-07-31T10:42:02.078Z",
	"eventElementType": "BallHoled",
	"provisionalIndex": 0,
	"seqNum": 251,
	"score": {
		"currentRoundScoreToPar": "0",
		"overallScoreToPar": "0",
		"currentHoleStrokes": 4,
		"currentHolePar": 5
	}
}

Last updated