Webhooks Response


#1

Hi There!

Is there any documentation available on what kind of structure can we expect as the body of the POST request sent by the FACEIT Webhook? Specifically, we are interested in what gets posted on the ‘Match Finished’ event.

Thanks


#2

Not sure if you are still looking, but it might be useful for others.

Here is an example of the data sent from a match_finished webhook that I got from an FPL EU match:

{
"transaction_id": "<transaction_guid>",
"event": "match_status_finished",
"event_id": "<event_id>",
"third_party_id": "<my_guid>",
"app_id": "<my_app_id>",
"timestamp": "2018-12-10T20:39:09Z",
"retry_count": 0,
"version": 1,
"payload": {
    "id": "1-66c23f96-3866-4a8d-ad47-f9dc8cfd96f5",
    "organizer_id": "228c0eef-f33d-4320-a477-e8e4ab8d6584",
    "region": "EU",
    "game": "csgo",
    "version": 46,
    "entity": {
    "id": "74caad23-077b-4ef3-8b1d-c6a2254dfa75",
    "name": "FPL CSGO Europe",
    "type": "hub"
    },
    "teams": [
        {
        "id": "8f5be263-c0cf-48b8-8f8c-f79e386bbd6b",
        "name": "team_brokyy",
        "type": "",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/8f5be263-c0cf-48b8-8f8c-f79e386bbd6b_1528916301701",
        "leader_id": "8f5be263-c0cf-48b8-8f8c-f79e386bbd6b",
        "co_leader_id": "",
        "roster": [
        {
        "id": "8f5be263-c0cf-48b8-8f8c-f79e386bbd6b",
        "nickname": "brokyy",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/8f5be263-c0cf-48b8-8f8c-f79e386bbd6b_1528916301701",
        "game_id": "76561198201620490",
        "game_name": "broky",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        },
        {
        "id": "ddfa4144-fae5-48cd-9534-cd444abe4d38",
        "nickname": "cajunb",
        "avatar": "",
        "game_id": "76561197978328043",
        "game_name": "76561197978328043",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": false
        },
        {
        "id": "c07ad1a0-e879-4f01-97d9-a3e21c0b04d0",
        "nickname": "suNny-",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/c07ad1a0-e879-4f01-97d9-a3e21c0b04d0_1530022858340",
        "game_id": "76561198017671061",
        "game_name": "suNny",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        },
        {
        "id": "fa59bd46-eaf7-4f75-a16a-7047ad64e224",
        "nickname": "NlKO",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/fa59bd46-eaf7-4f75-a16a-7047ad64e224_1535750000525",
        "game_id": "76561197989736583",
        "game_name": "~_~ ☂ ✈",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        },
        {
        "id": "5ac5c933-09c3-4a72-ab42-057fe99df7f5",
        "nickname": "Snappi",
        "avatar": "",
        "game_id": "76561197989423065",
        "game_name": "Snappi GL DSP",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        }
        ],
        "substitutions": 0,
        "substitutes": null,
        "score": 1,
        "winner": true
        },
        {
        "id": "096db586-8841-41a6-94a4-dde5b7d887b6",
        "name": "team_Maikelele",
        "type": "",
        "avatar": "",
        "leader_id": "096db586-8841-41a6-94a4-dde5b7d887b6",
        "co_leader_id": "",
        "roster": [
        {
        "id": "096db586-8841-41a6-94a4-dde5b7d887b6",
        "nickname": "Maikelele",
        "avatar": "",
        "game_id": "76561197961191700",
        "game_name": "Kinguin.MaikeleleRAGNAR",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": false
        },
        {
        "id": "866e3c32-6a8b-48ac-b1eb-3afbfdfb2432",
        "nickname": "kreaz",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/866e3c32-6a8b-48ac-b1eb-3afbfdfb2432_1531670644160",
        "game_id": "76561198077245619",
        "game_name": "kreaz=DDD",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        },
        {
        "id": "8b89eee4-59ac-4523-85f4-64172244d5e2",
        "nickname": "fitchM",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/8b89eee4-59ac-4523-85f4-64172244d5e2_1470250538057",
        "game_id": "76561197993474578",
        "game_name": "fitchzZz-",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        },
        {
        "id": "617a5a63-7386-4ce9-a3ba-81c3c3a18596",
        "nickname": "yzn",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/617a5a63-7386-4ce9-a3ba-81c3c3a18596_1531774140036",
        "game_id": "76561198070668128",
        "game_name": "yzn",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": false
        },
        {
        "id": "2f946776-5117-4132-bf92-dbc874f13214",
        "nickname": "Mir",
        "avatar": "https://d50m6q67g4bn3.cloudfront.net/avatars/2f946776-5117-4132-bf92-dbc874f13214_1464199850541",
        "game_id": "76561198000827804",
        "game_name": "mir",
        "game_skill_level": 10,
        "membership": "",
        "anticheat_required": true
        }
        ],
        "substitutions": 0,
        "substitutes": null,
        "score": 0,
        "winner": false
        }
    ],
    "created_at": "2018-12-10T20:06:24Z",
    "updated_at": "2018-12-10T20:39:08Z",
    "started_at": "2018-12-10T20:11:01Z",
    "finished_at": "2018-12-10T20:39:08Z"
    }
}

#3

Hi Osbar,

Can we get the livescore about the match from webhook ? Or can we get with Data API ?


#4

I don’t think this is possible but I haven’t looked,

Perhaps it would be possible to use the match_ready webhook to know when a match will start, then use the SteamIDs of the players and see if rich presence is available to retrieve somehow (Like in steam when you see a friend is playing de_overpass competitive and the score is 11:7)

I don’t think it’s possible to see in-depth stats about a live match


#5

Hi again,

Actually I want to give information about the livescore of the ongoing match. There are lots of Organizers have this option in their website or somewhere. I want to learn how they can :slight_smile: So you said there is no livescore in Data API’s and the webhook right ? :confused:


#6

I might be wrong about it, would you be able to give some examples of Organizers that do this?


#7

If its ok to share a link : https://www.mythicleague.com/matches
There are a few variables coming from DataApi but the livescore is not.


#8

I reckon they might use game state integration https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Game_State_Integration

I don’t really know much about it but from a quick look at the docs I think Mythic League could have a ‘bot’ spectator client running that receives the game state and pipes it out to their website? I might be totally wrong on this. Sounds like it could be a possibility if Mythic League are running their own servers


#9

But there is not only Mythic League. This is the other example : https://bit.ly/2LqPPBR
I think, they have no bots or something.


#10

On that website there are public GOTV links for the matches, perhaps this can be used

I think the Organizer could make the GOTV links available and other settings that would allow for the livescore to be retrieved, but I don’t have experience with this myself


#11

So if you have the public GOTV ip such as on Turkish Community League, you could run csgo client for each match and use Game State Integration with this

I’m not really sure what running a CSGO server entails, but I imagine these leagues could have a cfg file either on the server or a spectator client that uses Game State Integration and points to one of their endpoints.

I don’t think it is possible from our side, the organizer needs to make it available. Again, I could be wrong about this