Événements
S'abonner
receiver.on('match.card', ({ match, team, booking }, context) => {
console.log(context.id, context.timestamp, booking.type)
})
receiver.on('*', (data, context) => log(context.event, data))
receiver.off('match.card')
Chaque gestionnaire reçoit le payload, typé d'après le nom de l'événement, et un contexte :
id: l'identifiant de livraison, stable entre les tentatives, à utiliser comme clé d'idempotence ;event: le nom de l'événement ;timestamp: la date d'émission déclarée par le service.
on('*', …) reçoit tous les événements, et off() retire tous les gestionnaires d'un événement. Tous les types sont exportés par @fca.gg/lfp-webhooks/types, dont LfpEventMap, la table qui associe chaque nom d'événement à son payload.
Calendrier
| Événement | Payload |
|---|---|
match.scheduled | match : le match annoncé (Fixture) |
match.rescheduled | match, previousDate, date |
match.schedule | match : le programme détaillé (ScheduledMatch), avec stade, diffuseurs et lien pour regarder |
match.broadcasters_update | match : le même, quand les diffuseurs changent |
Avant-match
| Événement | Payload |
|---|---|
match.lineup | match, official, assistants, et pour homeTeam / awayTeam : formation, kit, manager, players |
Périodes
match.kickoff, match.half_time, match.second_half, match.extra_time_first_half, match.extra_time_second_half, match.shootout, match.full_time, match.abandoned et match.postponed partagent le même payload :
match: le résumé du match ;stats: début, arrêt et durée de chaque période ;homeTeam/awayTeam:stats(possession, tirs, tirs non cadrés, arrêts, au total et par mi-temps),goals,bookings,substitutions.
Les listes sont complètes depuis le début du match : filtrez sur period si vous ne voulez que la dernière. De quoi publier un récapitulatif sans appeler l'API.
Faits de jeu
| Événement | Payload |
|---|---|
match.goal | match, team (home ou away), score, goal |
match.goal_confirmed | le même, une fois le but confirmé (par exemple après la vidéo) |
match.goal_cancelled | match, team, score, goal sous forme réduite |
match.card | match, team, booking |
match.card_confirmed | le même, une fois le carton confirmé |
match.card_cancelled | match, team, booking sous forme réduite |
match.substitution | match, team, substitution (subOff, subOn) |
Un but porte son type (goal, own ou penalty), sa minute, sa période, le buteur, les passeurs, et originalDecision quand il est passé par la vidéo. Un carton porte sa couleur (Yellow, Red), son type (Yellow, SecondYellow, StraightRed), sa raison, et le joueur ou l'entraîneur sanctionné.
Les joueurs d'un fait de jeu sont réduits à id, showName et number : le poste, le buste et les statistiques appartiennent à la composition. Relisez-les dans match.lineup ou avec le client de l'API.
La period d'un carton ou d'un remplacement est traduite depuis le code Opta quand il est connu, et laissée telle quelle sinon : ne la traitez pas comme une liste fermée.
État et classement
| Événement | Payload |
|---|---|
match.update | l'état complet du match (MatchSnapshot) : stade, résultat, arbitres, et pour chaque équipe score, entraîneur, buts, joueurs, cartons, remplacements et statistiques |
standings.update | competition, season, table : le classement, ligne par ligne |
Le résumé du match
Presque tous les événements portent match, un résumé du match : matchId, competition, season, matchDay, period, matchTime, watchUrl, et pour homeTeam / awayTeam : id, name, short, score et logo.