dword4 / nhlapi

Documenting the publicly accessible portions of the NHL API
448 stars 56 forks source link

Anyone worked with' feed/live/diffPatch?startTimecode=' end point? [Discussion] #27

Open dvdrplus opened 2 years ago

dvdrplus commented 2 years ago

Has anyone used the end point:

https://statsapi.web.nhl.com/api/v1/game/'game_id'/feed/live/diffPatch?startTimecode=

I'm basically trying to create player notifications for stats that happen, i.e. a notification appears when Caufield scores a goal.

The endpoint https://statsapi.web.nhl.com/api/v1/game/'game_id'/feed/live/ returns way too much information, and so I am using the /diffPatch?startTimecode= endpoint, which returns only new plays since the specified startTimecode.

I am pinging each game every couple of seconds, while updating the startTimecode every time I receive new data from the endpoint.

A sampe end point response is shown at the bottom. https://statsapi.web.nhl.com/api/v1/game/2022020163/feed/live/diffPatch?startTimecode=20221103_234429

This is working well for me, but I am noticing a couple of things:

  1. The same play is being returned in multiple different api calls, meaning the startTimecode isn't really filtering by when an event happens. I can handle this on the server side, but wondering if I am doing something wrong?
  2. Missing plays - some plays pass, and I do not receive information about some plays. The most obvious being when a goal is scored. I am filtering the returned data by "op:" "add", which is when new plays are created. I have gone through quite a bit of these responses, I haven't seen any desired data in the"op": "replace" data.
  3. I am pinging the endpoint about once every 5 seconds (as I want live notifications). Most of the responses are empty, it looks like the NHL publishes the results every so often (maybe 10 seconds - 2 minutes), although this interval is not constant. I know this is a long shot, but could it ever be possible do like a websocket, client subscribe to this API?

[ { "diff": [ { "op": "replace", "path": "/metaData/timeStamp", "value": "20221103_015752" }, { "op": "add", "path": "/liveData/plays/allPlays/244", "value": { "result": { "eventCode": "BUF530", "eventTypeId": "FACEOFF", "description": "Dylan Cozens faceoff won against Sidney Crosby", "event": "Faceoff" }, "players": [ { "playerType": "Winner", "player": { "link": "/api/v1/people/8481528", "fullName": "Dylan Cozens", "id": 8481528 } }, { "playerType": "Loser", "player": { "link": "/api/v1/people/8471675", "fullName": "Sidney Crosby", "id": 8471675 } } ], "about": { "eventIdx": 244, "dateTime": "2022-11-03T01:57:31Z", "eventId": 530, "period": 3, "periodType": "REGULAR", "ordinalNum": "3rd", "periodTime": "18:02", "periodTimeRemaining": "01:58", "goals": { "away": 3, "home": 4 } }, "coordinates": { "x": -69, "y": -22 }, "team": { "name": "Buffalo Sabres", "link": "/api/v1/teams/7", "id": 7, "triCode": "BUF" } } }, { "op": "add", "path": "/liveData/plays/playsByPeriod/2/plays/73", "value": 244 }, { "op": "replace", "path": "/liveData/plays/playsByPeriod/2/endIndex", "value": 244 }, { "op": "replace", "path": "/liveData/plays/currentPlay/players/0/player/id", "value": 8481528 }, { "op": "replace", "path": "/liveData/plays/currentPlay/players/0/player/fullName", "value": "Dylan Cozens" }, { "op": "replace", "path": "/liveData/plays/currentPlay/players/0/player/link", "value": "/api/v1/people/8481528" }, { "op": "replace", "path": "/liveData/plays/currentPlay/players/0/playerType", "value": "Winner" }, { "op": "replace", "path": "/liveData/plays/currentPlay/players/1/playerType", "value": "Loser" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/event", "value": "Faceoff" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/eventCode", "value": "BUF530" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/eventTypeId", "value": "FACEOFF" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/description", "value": "Dylan Cozens faceoff won against Sidney Crosby" }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/eventIdx", "value": 244 }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/eventId", "value": 530 }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/dateTime", "value": "2022-11-03T01:57:31Z" }, { "op": "replace", "path": "/liveData/plays/currentPlay/coordinates/x", "value": -69 }, { "op": "replace", "path": "/liveData/plays/currentPlay/coordinates/y", "value": -22 }, { "op": "replace", "path": "/liveData/linescore/currentPeriodTimeRemaining", "value": "01:38" }, { "op": "replace", "path": "/liveData/linescore/powerPlayInfo/situationTimeRemaining", "value": 98 }, { "op": "replace", "path": "/liveData/linescore/powerPlayInfo/situationTimeElapsed", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "51.9" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/teamStats/teamSkaterStats/blocked", "value": 11 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471724/stats/skaterStats/blocked", "value": 2 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8479193/stats/goalieStats/timeOnIce", "value": "57:24" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/0/shiftDuration", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/1/shiftDuration", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/2/shiftDuration", "value": 58 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/3/shiftDuration", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/4/shiftDuration", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/5/shiftDuration", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "48.1" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/blocked", "value": 10 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/timeOnIce", "value": "23:03" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/blocked", "value": 0 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/evenTimeOnIce", "value": "20:54" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480196/stats/skaterStats/timeOnIce", "value": "21:10" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480196/stats/skaterStats/evenTimeOnIce", "value": "19:17" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/timeOnIce", "value": "15:28" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/evenTimeOnIce", "value": "12:13" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8478109/stats/skaterStats/timeOnIce", "value": "14:01" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8478109/stats/skaterStats/evenTimeOnIce", "value": "11:57" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479335/stats/skaterStats/timeOnIce", "value": "13:08" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479335/stats/skaterStats/evenTimeOnIce", "value": "12:10" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480935/stats/skaterStats/timeOnIce", "value": "15:15" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480935/stats/skaterStats/evenTimeOnIce", "value": "14:19" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480839/stats/skaterStats/timeOnIce", "value": "27:34" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480839/stats/skaterStats/evenTimeOnIce", "value": "22:54" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8477480/stats/goalieStats/timeOnIce", "value": "57:24" }, { "op": "add", "path": "/liveData/boxscore/teams/home/onIce/1", "value": 8476878 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIce/3", "value": 8480196 }, { "op": "remove", "path": "/liveData/boxscore/teams/home/onIce/6" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/0/shiftDuration", "value": 20 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/1/playerId", "value": 8476878 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/1/shiftDuration", "value": 20 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/1/stamina", "value": 100 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/2/playerId", "value": 8477480 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/2/shiftDuration", "value": 255 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/3/playerId", "value": 8480196 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/3/shiftDuration", "value": 20 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/4/playerId", "value": 8480839 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/4/shiftDuration", "value": 42 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/4/stamina", "value": 66 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/5/playerId", "value": 8481528 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/5/shiftDuration", "value": 20 } ] }, { "diff": [ { "op": "replace", "path": "/metaData/timeStamp", "value": "20221103_015807" }, { "op": "add", "path": "/liveData/plays/allPlays/245", "value": { "result": { "eventCode": "BUF492", "eventTypeId": "GOAL", "strength": { "code": "EVEN", "name": "Even" }, "emptyNet": true, "description": "Goal", "event": "Goal" }, "about": { "eventIdx": 245, "dateTime": "2022-11-03T01:57:52Z", "eventId": 492, "period": 3, "periodType": "REGULAR", "ordinalNum": "3rd", "periodTime": "18:24", "periodTimeRemaining": "01:36", "goals": { "away": 3, "home": 5 } }, "coordinates": {}, "team": { "name": "Buffalo Sabres", "link": "/api/v1/teams/7", "id": 7, "triCode": "BUF" } } }, { "op": "add", "path": "/liveData/plays/scoringPlays/7", "value": 245 }, { "op": "add", "path": "/liveData/plays/playsByPeriod/2/plays/74", "value": 245 }, { "op": "replace", "path": "/liveData/plays/playsByPeriod/2/endIndex", "value": 245 }, { "op": "remove", "path": "/liveData/plays/currentPlay/players" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/event", "value": "Goal" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/eventCode", "value": "BUF492" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/eventTypeId", "value": "GOAL" }, { "op": "replace", "path": "/liveData/plays/currentPlay/result/description", "value": "Goal" }, { "op": "add", "path": "/liveData/plays/currentPlay/result/strength", "value": { "code": "EVEN", "name": "Even" } }, { "op": "add", "path": "/liveData/plays/currentPlay/result/emptyNet", "value": true }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/eventIdx", "value": 245 }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/eventId", "value": 492 }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/periodTime", "value": "18:24" }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/periodTimeRemaining", "value": "01:36" }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/dateTime", "value": "2022-11-03T01:57:52Z" }, { "op": "replace", "path": "/liveData/plays/currentPlay/about/goals/home", "value": 5 }, { "op": "remove", "path": "/liveData/plays/currentPlay/coordinates/x" }, { "op": "remove", "path": "/liveData/plays/currentPlay/coordinates/y" }, { "op": "replace", "path": "/liveData/linescore/currentPeriodTimeRemaining", "value": "01:36" }, { "op": "replace", "path": "/liveData/linescore/periods/2/home/goals", "value": 4 }, { "op": "replace", "path": "/liveData/linescore/teams/home/goals", "value": 5 }, { "op": "replace", "path": "/liveData/linescore/powerPlayInfo/situationTimeRemaining", "value": 96 }, { "op": "replace", "path": "/liveData/linescore/powerPlayInfo/situationTimeElapsed", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "50.9" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476934/stats/skaterStats/timeOnIce", "value": "13:21" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476934/stats/skaterStats/evenTimeOnIce", "value": "9:31" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceOffPct", "value": 62 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceOffWins", "value": 13 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceoffTaken", "value": 21 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8480068/stats/skaterStats/timeOnIce", "value": "14:05" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8480068/stats/skaterStats/evenTimeOnIce", "value": "10:17" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8479193/stats/goalieStats/timeOnIce", "value": "57:32" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/0/shiftDuration", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/1/shiftDuration", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/2/shiftDuration", "value": 60 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/3/shiftDuration", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/4/shiftDuration", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/5/shiftDuration", "value": 52 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/goals", "value": 5 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "49.1" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/blocked", "value": 11 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/faceOffPct", "value": 54 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/faceoffTaken", "value": 13 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8477480/stats/goalieStats/timeOnIce", "value": "57:32" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/0/shiftDuration", "value": 22 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/1/shiftDuration", "value": 22 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/2/shiftDuration", "value": 257 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/3/shiftDuration", "value": 22 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/4/shiftDuration", "value": 44 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/onIcePlus/5/shiftDuration", "value": 22 } ] }, { "diff": [ { "op": "replace", "path": "/metaData/timeStamp", "value": "20221103_015822" }, { "op": "replace", "path": "/liveData/linescore/teams/away/goaliePulled", "value": false }, { "op": "replace", "path": "/liveData/linescore/teams/away/numSkaters", "value": 5 }, { "op": "replace", "path": "/liveData/linescore/powerPlayInfo/situationTimeElapsed", "value": 0 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "51.9" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471724/stats/skaterStats/timeOnIce", "value": "22:35" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471724/stats/skaterStats/blocked", "value": 3 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471724/stats/skaterStats/evenTimeOnIce", "value": "19:44" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476934/stats/skaterStats/timeOnIce", "value": "13:29" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476934/stats/skaterStats/evenTimeOnIce", "value": "9:39" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/timeOnIce", "value": "16:46" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceOffPct", "value": 64 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceOffWins", "value": 14 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceoffTaken", "value": 22 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/evenTimeOnIce", "value": "14:46" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8477404/stats/skaterStats/timeOnIce", "value": "18:37" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8477404/stats/skaterStats/evenTimeOnIce", "value": "16:40" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8475810/stats/skaterStats/timeOnIce", "value": "18:59" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8475810/stats/skaterStats/evenTimeOnIce", "value": "17:03" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471215/stats/skaterStats/timeOnIce", "value": "19:12" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471215/stats/skaterStats/evenTimeOnIce", "value": "17:06" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476483/stats/skaterStats/timeOnIce", "value": "16:05" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8476483/stats/skaterStats/evenTimeOnIce", "value": "15:44" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8480068/stats/skaterStats/timeOnIce", "value": "14:13" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8480068/stats/skaterStats/evenTimeOnIce", "value": "10:25" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIce/2", "value": 8473507 }, { "op": "remove", "path": "/liveData/boxscore/teams/away/onIce/3" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIce/4", "value": 8479193 }, { "op": "add", "path": "/liveData/boxscore/teams/away/onIce/5", "value": 8480058 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/2/playerId", "value": 8473507 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/2/shiftDuration", "value": 0 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/2/stamina", "value": 100 }, { "op": "remove", "path": "/liveData/boxscore/teams/away/onIcePlus/3" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/4/playerId", "value": 8479193 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/4/shiftDuration", "value": 0 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/onIcePlus/4/stamina", "value": 100 }, { "op": "add", "path": "/liveData/boxscore/teams/away/onIcePlus/5", "value": { "stamina": 100, "shiftDuration": 0, "playerId": 8480058 } }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "48.1" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/timeOnIce", "value": "23:24" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/blocked", "value": 1 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8482671/stats/skaterStats/evenTimeOnIce", "value": "21:15" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480196/stats/skaterStats/timeOnIce", "value": "21:18" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480196/stats/skaterStats/evenTimeOnIce", "value": "19:25" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/timeOnIce", "value": "15:58" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/faceOffPct", "value": 50 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/faceoffTaken", "value": 14 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479999/stats/skaterStats/evenTimeOnIce", "value": "12:43" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8478109/stats/skaterStats/timeOnIce", "value": "14:31" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8478109/stats/skaterStats/evenTimeOnIce", "value": "12:27" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479335/stats/skaterStats/timeOnIce", "value": "13:38" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8479335/stats/skaterStats/evenTimeOnIce", "value": "12:40" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480935/stats/skaterStats/timeOnIce", "value": "15:24" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480935/stats/skaterStats/evenTimeOnIce", "value": "14:28" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480839/stats/skaterStats/timeOnIce", "value": "27:56" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8480839/stats/skaterStats/evenTimeOnIce", "value": "23:16" } ] }, { "diff": [ { "op": "replace", "path": "/metaData/timeStamp", "value": "20221103_015837" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "50.9" }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceOffPct", "value": 61 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8471675/stats/skaterStats/faceoffTaken", "value": 23 }, { "op": "replace", "path": "/liveData/boxscore/teams/away/players/ID8479193/stats/goalieStats/timeOnIce", "value": "57:24" }, { "op": "remove", "path": "/liveData/boxscore/teams/away/onIce/1" }, { "op": "add", "path": "/liveData/boxscore/teams/away/onIce/5", "value": 8482055 }, { "op": "remove", "path": "/liveData/boxscore/teams/away/onIcePlus/1" }, { "op": "add", "path": "/liveData/boxscore/teams/away/onIcePlus/5", "value": { "stamina": 100, "shiftDuration": 0, "playerId": 8482055 } }, { "op": "replace", "path": "/liveData/boxscore/teams/home/teamStats/teamSkaterStats/faceOffWinPercentage", "value": "49.1" }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8481528/stats/skaterStats/faceOffPct", "value": 43 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8481528/stats/skaterStats/faceOffWins", "value": 6 }, { "op": "replace", "path": "/liveData/boxscore/teams/home/players/ID8481528/stats/skaterStats/faceoffTaken", "value": 14 } ] } ]