Ice Hockey
- Martin Mand
- Aleksander Puumets
- Tonis Danilson
The rules of Ice-Hockey can be found here:
This document describes the V1 Ice-Hockey match state contract.
Match State Summary Message
{ "CustomerId": 6105, "FixtureId": "92964499", "MessageTimestampUtc": "2017-03-14T13:22:46.685Z", "IsReliable": false, "MatchStatus": "ThirdPeriod", "OvertimeCount": 0, "Statistics": [], "CurrentScore": [], "IsScoreConfirmed": true, "InProgressPenaltyCount": [], "PlayersOnIceCount": [], "HomeGoalKeeperOnIce": true, "AwayGoalKeeperOnIce": true, "IsClockRunning": false, "DangerState": "HomeGoal", "TimeRemainingInCurrentPeriod": [], "HomeTeam": [], "AwayTeam": [], "MatchFormat": [], }
Element | Type | Description |
---|---|---|
CustomerId | Integer | An immutable identifier for the customer |
FixtureId | Integer | An immutable identifier for the event |
MessageTimestampUtc | DateTime | The time in UTC at which the message was generated |
IsReliable | Boolean | True if the data values are reliable, False otherwise |
MatchStatus | String | Describes the current match status, possible values are: |
OvertimeCount | Integer | Describes the overtime count |
Statistics | IceHockeyStatistics | Describes match statistics |
CurrentScore | Score | Describes current score |
IsScoreConfirmed | Boolean | True if score is confirmed false otherwise |
InProgressPenaltyCount | Score | Describes penalty count |
PlayersOnIceCount | Score | Describes players on ice |
HomeGoalKeeperOnIce | Boolean | True if home goal keeper is on ice, False otherwise |
AwayGoalKeeperOnIce | Boolean | True if away goal keeper is on ice, False otherwise |
IsClockRunning | Boolean | True if game clock is running, False otherwise |
DangerState | String | Describes the current danger state, possible values are: |
TimeRemainingInCurrentPeriod | TimeRemainingAtTimestamp | Describes the time remaining in the period |
HomeTeam | Team | Describes team |
AwayTeam | Team | Describes Team |
MatchFormat | MatchFormat | Describes match format |
IceHockeyStatistics
{ "Goals": [], "PenaltyShots": [], "PenaltyShotGoals": [], "TotalGoals": [], "TotalPenalties": [], "ShotsOnTarget": [], "TotalAttacks": [] }
Element | Type | Description |
---|---|---|
Goals | Score | Describes goals |
PenaltyShots | Score | Describes penalty shots |
PenaltyShotGoals | Score | Describes penalty goals |
TotalGoals | Score | Describes total goals |
TotalPenalties | Score | Describes penalties |
ShotsOnTarget | Score | Describes shots on target |
TotalAttacks | Score | Describes total attacks |
Score
{ "Home":0, "Away":2 }
Element | Type | Description |
---|---|---|
Home | Integer | The Home team's score |
Away | Integer | The Away team's score |
TimeRemainingInCurrentPeriod
{ "TimestampUtc": "2016-12-12T17:21:08.095Z", "TimeRemaining": "00:12:19" }
Element | Type | Description |
---|---|---|
TimestampUtc | DateTime | Describes the timestamp for the message |
TimeRemaining | Duration | Describes the duration of the phase |
The value of TimeRemainingInCurrentPeriod will not be updated with each message. When a clock action occurs, such as stopping the clock, TimeRemainingInCurrentPeriod will be updated to the current value, which will allow you to recalculate the clock if needed.
Team
{ "Id": "1", "Name": "TestHomeTeam", "Jersey": [] }
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the team |
Name | String | Describes team name |
Jersey | Jersey | Describes teams jersey |
Jersey
{ "MainColor": "red", "MinorColor": "black" }
Element | Type | Description |
---|---|---|
MainColor | String | Describes team main color |
MinorColor | String | Describes team minor color |
MatchFormat
{ "PeriodLength": "00:20:00", "NumberOfExtraTimePeriods": 0, "ExtraTimePeriodLength": "00:05:00" }
Element | Type | Description |
---|---|---|
PeriodLength | Duration | Describes the length of the period |
NumberOfExtraTimePeriods | Integer | Describes the number of extra time periods |
ExtraTimePeriodLength | Duration | Describes extra time period length |
Match State Details Message
The detail message lists every action that has happened in an ice hockey match. This allows a complete timeline of the match to be constructed at any point.
{ "MatchActions": [], "CustomerId": 6105, "FixtureId": "92964499", "MessageTimestampUtc": "2017-03-14T13:22:46.685Z", "IsReliable": false, "MatchStatus": "ThirdPeriod", "OvertimeCount": 0, "Statistics": [], "CurrentScore": [], "IsScoreConfirmed": true, "InProgressPenaltyCount": [], "PlayersOnIceCount": [], "HomeGoalKeeperOnIce": true, "AwayGoalKeeperOnIce": true, "IsClockRunning": false, "DangerState": "HomeGoal", "TimeRemainingInCurrentPeriod": [], "HomeTeam": [], "AwayTeam": [], "MatchFormat": [], }
Element | Type | Description |
---|---|---|
MatchActions | MatchActions | Describes the historic match actions |
CustomerId | Integer | An immutable identifier for the customer |
FixtureId | Integer | An immutable identifier for the event |
MessageTimestampUtc | DateTime | The time in UTC at which the message was generated |
IsReliable | Boolean | True if the data values are reliable, False otherwise |
MatchStatus | String | Describes the current match status, possible values are: |
OvertimeCount | Integer | Describes the overtime count |
Statistics | IceHockeyStatistics | Describes match statistics |
CurrentScore | Score | Describes current score |
IsScoreConfirmed | Boolean | True if score is confirmed false otherwise |
InProgressPenaltyCount | Score | Describes penalty count |
PlayersOnIceCount | Score | Describes players on ice |
HomeGoalKeeperOnIce | Boolean | True if home goal keeper is on ice, False otherwise |
AwayGoalKeeperOnIce | Boolean | True if away goal keeper is on ice, False otherwise |
IsClockRunning | Boolean | True if game clock is running, False otherwise |
DangerState | String | Describes the current danger state, possible values are: |
TimeRemainingInCurrentPeriod | TimeRemainingAtTimestamp | Describes the time remaining in the period |
HomeTeam | Team | Describes team |
AwayTeam | Team | Describes Team |
MatchFormat | MatchFormat | Describes match format |
MatchActions
{ "ClockActions": [], "FaceOffs": [], "Goals": [], "GoalKeeperOnIceChanges": [], "Penalties": [], "PenaltyShots": [], "PenaltyShotGoals": [], "PenaltyShotsMissed": [], "PenaltyShotsRetaken": [], "MatchStatusChanges": [], "ShotsOnTarget": [], "DangerStateChanges": [], "PlayerCountChanges": [] }
Element | Type | Description |
---|---|---|
ClockActions | ClockActionCollection | Array of ClockActions |
FaceOffs | FaceOffCollection | Array of FaceOffs |
Goals | GoalCollection | Array of Goals |
GoalKeeperOnIceChanges | GoalKeeperOnIceChangeCollection | Array of GoalKeeperOnIceChanges |
Penalties | PenaltyCollection | Array of Penalties |
PenaltyShots | PenaltyShotCollection | Array of PenaltyShots |
PenaltyShotGoals | PenaltyShotGoalCollection | Array of PenaltyShotGoals |
PenaltyShotsMissed | PenaltyShotMissedCollection | Array of PenaltyShotsMissed |
PenaltyShotsRetaken | PenaltyShotRetakeCollection | Array of PenaltyShotsRetaken |
MatchStatusChanges | MatchStatusChangeCollection | Array of MatchStatusChanges |
ShotsOnTarget | ShotOnTargetCollection | Array of ShotsOnTarget |
DangerStateChanges | DangerStateChangeCollection | Array of DangerStateChanges |
PlayerCountChanges | PlayerCountCollection | Array of PlayerCountChanges |
ClockActionCollection
{ "Type": "Set", "Adjustment": null, "IsRunning": false, "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:17:36.217Z", "TimeRemainingInPeriod": "00:02:20", "OccurredDuring": "PreMatch", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
Type | String | Describes Clock action type, possible values are: |
Adjustment | Duration | Describes the adjustment - currently not in active use |
IsRunning | Boolean | True if clock was running, false otherwise |
IsConfirmed | Boolean | True if message is confirmed, false otherwise |
UtcTimestamp | DateTime | Timestamp of the action |
TimeRemainingInPeriod | Duration | Describes the time remaining |
OccurredDuring | String | Describes the match status, possible values are: |
OvertimeCount | Integer |
|
FaceOffCollection
{ "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:17:59.824Z", "TimeRemainingInPeriod": "00:02:26", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status, possible values are: |
OvertimeCount |
|
|
GoalCollection
{ "Goals": [], "IsCollected": false, "IsReliable": true }
Element | Type | Description |
---|---|---|
Goals | ArrayOfGoal | |
IsCollected | Boolean | True if action is confirmed, false otherwise |
IsReliable | Boolean | True if action is confirmed, false otherwise |
ArrayOfGoal
{ "Team": "Home", "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:20:03.396Z", "TimeRemainingInPeriod": "00:01:20", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
Team | String | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status, possible values are: |
OvertimeCount |
|
|
GoalKeeperOnIceChangeCollection
{ "IsOnIce": false, "Team": "Home", "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:20:03.396Z", "TimeRemainingInPeriod": "00:01:20", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
IsOnIce | Boolean | True if goal keeper is on ice, false otherwise |
Team | String | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status, possible values are: |
OvertimeCount |
|
|
PenaltyCollection
{ "Status": "Finished", "Duration": "00:02:00", "IsGameMisconductPenalty": false, "StartedAtTimeRemainingInPeriod": "00:02:07", "StartedDuring": null, "StartedDuringOvertimeCount": 0, "Team": "Away", "IsConfirmed": true, "AwardedAtUtcTimestamp": "2016-12-12T16:19:00.184Z", "AwardedAtTimeRemainingInPeriod": "00:02:07", "AwardedAtOccurredDuring": "FirstPeriod", "AwardedAtOvertimeCount": 0 }
Element | Type | Description |
---|---|---|
Status | String | Action status, possible values: |
Duration | Duration |
|
IsGameMisconductPenalty | Boolean | True if miscontucted, false otherwise |
StartedAtTimeRemainingInPeriod | Duration |
|
StartedDuring | MatchStatus |
|
StartedDuringOvertimeCount | Integer |
|
Team | String | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
AwardedAtUtcTimestamp | DateTime |
|
AwardedAtTimeRemainingInPeriod | Duration |
|
AwardedAtOccurredDuring | MatchStatus |
|
AwardedAtOvertimeCount | MatchStatus |
|
MatchStatusChangeCollection
{ "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:17:40.478Z", "TimeRemainingInPeriod": "00:20:00", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
IsConfirmed | Boolean | True is action is confirmed |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes time remaining |
OccurredDuring | MatchStatus | Describes the phase |
OvertimeCount | Integer |
|
ShotOnTargetCollection
{ "Team": "Home", "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:20:03.396Z", "TimeRemainingInPeriod": "00:01:20", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
Team | String | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status |
OvertimeCount |
|
|
DangerStateChangeCollection
{ "State": "Safe", "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:20:03.396Z", "TimeRemainingInPeriod": "00:01:20", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
State | String | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status |
OvertimeCount |
|
|
PlayerCountCollection
{ "HomePlayerCount": 5, "AwayPlayerCount": 4, "IsConfirmed": true, "UtcTimestamp": "2016-12-12T16:19:03.439Z", "TimeRemainingInPeriod": "00:02:07", "OccurredDuring": "FirstPeriod", "OvertimeCount": 0 }
Element | Type | Description |
---|---|---|
HomePlayerCount | Integer | Describes the team |
AwayPlayerCount | Integer | Describes the team |
IsConfirmed | Boolean | True if action is confirmed, false otherwise |
UtcTimestamp | DateTime | Action timestamp |
TimeRemainingInPeriod | Duration | Describes the time remaining duration |
OccurredDuring | String | Describes the match status |
OvertimeCount |
|
|