Aller au contenu principal

Rattrapage

Un événement peut manquer : bot arrêté, point de réception injoignable au-delà des tentatives. L'API du service rend l'état courant, et son client vit dans son propre module, qui ne charge ni node:http ni node:crypto.

import { createClient } from '@fca.gg/lfp-webhooks/client'

const api = createClient({
baseUrl: process.env.LFP_API_URL,
token: process.env.LFP_API_TOKEN,
})

const state = await api.match('2640560')
const live = await api.matches({ season: '2026', matchday: 3 })
const table = await api.standings('24', '2026')
const stats = await api.player('54321', { season: '2026' })
const lineup = await api.lineupImage('2640560', { side: 'home' })

Options​

  • baseUrl : la racine de l'API du service ;
  • token : le jeton de l'API ; sans lui, les requêtes partent sans en-tête d'autorisation ;
  • timeout : abandon d'une requête, en millisecondes (10 000 par défaut).

Méthodes​

MéthodeRend
match(matchId)l'état complet d'un match : infos, équipes, composition, buts, cartons, remplacements ; null si inconnu
matches({ competition, season, matchday })la liste des matchs correspondants
standings(competitionId, season)le classement d'une compétition
players({ search, team })les joueurs trouvés
player(playerId, { season, competition })les statistiques cumulées d'un joueur et le détail de ses matchs ; null si inconnu
lineupImage(matchId, { side, etag })l'image de la composition, en PNG transparent : { image, etag }
health()l'état du service

side vaut home, away ou both. Passez l'etag d'une image déjà reçue : si elle n'a pas changé, le service répond 304 et la méthode rend null, sans retélécharger l'image.

Erreurs​

Une réponse 404 devient null. Toute autre erreur lève une ApiError qui porte son status, ce qui distingue une réponse du service d'une panne réseau :

import { ApiError } from '@fca.gg/lfp-webhooks/client'

try {
await api.standings('24', '2026')
} catch (error) {
if (error instanceof ApiError && error.status === 401) console.error('Jeton refusé')
else throw error
}

Deux jetons, deux sens​

CanalSensJeton
Webhooksservice → botvérifié par createReceiver({ token })
APIbot → serviceprésenté par createClient({ token })

Ce sont deux secrets distincts : celui des webhooks part chez le destinataire à chaque livraison, l'autre ouvre l'API en lecture. Leur donner la même valeur ferait d'une fuite de l'un une fuite de l'autre.