iracing-api
Version:
Javascript client for iracing API
332 lines (331 loc) • 14.2 kB
TypeScript
import { API } from './api';
import { GetDriverSeasonStandingsParams, GetMemberBestsParams, GetMemberCareerParams, GetMemberDivisionParams, GetMemberRecapParams, GetMemberRecentRacesParams, GetMemberSummaryParams, GetMemberYearlyStatsParams, GetQualifySeasonResultsParams, GetSupersessionSeasonStandingsParams, GetTeamSeasonStandingsParams, GetTimeTrialSeasonResultsParams, GetTimeTrialSeasonStandingsParams, GetWorldRecordsParams } from '../types';
/**
* Provides methods for interacting with member statistics endpoints.
*/
export declare class StatsAPI extends API {
/**
* Get member's best lap times for specified car at various tracks.
*
* @param {GetMemberBestsParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
* @param {number} [params.carId] - Car ID. First call should omit this; use `carsDriven` list in response for subsequent calls.
*
* @returns A promise resolving to the member's best lap times data, or undefined on error.
*/
getMemberBests: (params?: GetMemberBestsParams) => Promise<{
custId: number;
carId: number;
carsDriven: {
carId: number;
carName: string;
}[];
bests: {
endTime: string;
track: {
configName: string;
trackId: number;
trackName: string;
};
eventType: string;
subsessionId: number;
seasonYear: number;
seasonQuarter: number;
bestLapTime: number;
}[];
} | undefined>;
/**
* Get career statistics for a member across different categories.
*
* @param {GetMemberCareerParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
*
* @returns A promise resolving to the member's career stats, or undefined on error.
*/
getMemberCareer: (params?: GetMemberCareerParams) => Promise<{
custId: number;
stats: {
category: string;
categoryId: number;
laps: number;
lapsLed: number;
starts: number;
wins: number;
top5: number;
poles: number;
avgStartPosition: number;
avgFinishPosition: number;
avgIncidents: number;
avgPoints: number;
winPercentage: number;
top5Percentage: number;
lapsLedPercentage: number;
totalClubPoints: number;
}[];
} | undefined>;
/**
* Get the division for the **authenticated** member in a specific season and event type.
*
* Note: Divisions are 0-based (0=Division 1, 10=Rookie).
*
* @param {GetMemberDivisionParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.eventType - Event type code (4=Time Trial, 5=Race).
*
* @returns A promise resolving to the member's division data, or undefined on error.
*/
getMemberDivision: (params: GetMemberDivisionParams) => Promise<{
success: boolean;
eventType: number;
seasonId: number;
division: number;
projected: boolean;
} | undefined>;
/**
* Get a list of the member's most recent races.
*
* @param {GetMemberRecentRacesParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
*
* @returns A promise resolving to the list of recent races, or undefined on error.
*/
getMemberRecentRaces: (params?: GetMemberRecentRacesParams) => Promise<{
custId: number;
races: {
track: {
trackId: number;
trackName: string;
};
carId: number;
carClassId: number;
subsessionId: number;
seasonId: number;
seasonYear: number;
seasonQuarter: number;
licenseLevel: number;
seriesId: number;
seriesName: string;
finishPosition: number;
strengthOfField: number;
clubPoints: number;
dropRace: boolean;
incidents: number;
livery: {
pattern: number;
color1: string;
color2: string;
color3: string;
carId: number;
};
newSubLevel: number;
newiRating: number;
oldSubLevel: number;
oldiRating: number;
raceWeekNum: number;
winnerHelmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
winnerLicenseLevel: number;
winnerName: string;
sessionStartTime: string;
winnerGroupId: number;
startPosition: number;
qualifyingTime: number;
laps: number;
lapsLed: number;
points: number;
}[];
} | undefined>;
/**
* Get a recap of a member's statistics for a specific year or season.
*
* @param {GetMemberRecapParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
* @param {number} [params.year] - Year for the recap. Defaults to the current calendar year (UTC).
* @param {number} [params.season] - Season (quarter) within the year. If omitted, recap is for the entire year.
*
* @returns A promise resolving to the member recap data, or undefined on error.
*/
getMemberRecap: (params?: GetMemberRecapParams) => Promise<{
success: boolean;
year: number;
custId: number;
stats: {
laps: number;
lapsLed: number;
starts: number;
wins: number;
top5: number;
avgStartPosition: number;
avgFinishPosition: number;
favoriteCar: {
carId: number;
carName: string;
carImage: string;
};
favoriteTrack: {
configName: string;
trackId: number;
trackName: string;
trackLogo: string;
};
};
season: null;
} | undefined>;
/**
* Get a summary of a member's participation (official vs. league) for the current year.
*
* @param {GetMemberSummaryParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
*
* @returns A promise resolving to the member summary data, or undefined on error.
*/
getMemberSummary: (params?: GetMemberSummaryParams) => Promise<{
custId: number;
thisYear: {
numOfficialSessions: number;
numLeagueSessions: number;
numOfficialWins: number;
numLeagueWins: number;
};
} | undefined>;
/**
* Get yearly statistics for a member.
*
* @param {GetMemberYearlyStatsParams} [params] - Optional parameters.
* @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member.
*
* @returns A promise resolving to the member's yearly stats, or undefined on error.
*/
getMemberYearlyStats: (params?: GetMemberYearlyStatsParams) => Promise<{
custId: number;
stats: ({
category: string;
categoryId: number;
laps: number;
lapsLed: number;
starts: number;
wins: number;
top5: number;
poles: number;
avgStartPosition: number;
avgFinishPosition: number;
avgIncidents: number;
avgPoints: number;
winPercentage: number;
top5Percentage: number;
lapsLedPercentage: number;
totalClubPoints: number;
} & {
year: number;
})[];
} | undefined>;
/**
* Get the driver standings for a specific season.
*
* @param {GetDriverSeasonStandingsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.carClassId - The ID of the car class.
* @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all.
* @param {number} [params.division] - Filter by division (0-based). Defaults to all.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week.
*
* @returns A promise resolving to the driver season standings data, or undefined on error.
*/
getDriverSeasonStandings: (params: GetDriverSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the supersession standings for a specific season.
*
* @param {GetSupersessionSeasonStandingsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.carClassId - The ID of the car class.
* @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all.
* @param {number} [params.division] - Filter by division (0-based). Defaults to all.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week.
*
* @returns A promise resolving to the supersession standings data, or undefined on error.
*/
getSupersessionSeasonStandings: (params: GetSupersessionSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the team standings for a specific season.
*
* @param {GetTeamSeasonStandingsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.carClassId - The ID of the car class.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week.
*
* @returns A promise resolving to the team season standings data, or undefined on error.
*/
getTeamSeasonStandings: (params: GetTeamSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the time trial results for a specific season.
*
* @param {GetTimeTrialSeasonResultsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.carClassId - The ID of the car class.
* @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all.
* @param {number} [params.division] - Filter by division (0-based). Defaults to all.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week.
*
* @returns A promise resolving to the time trial results data, or undefined on error.
*/
getTimeTrialSeasonResults: (params: GetTimeTrialSeasonResultsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the time trial season standings.
*
* @param {GetTimeTrialSeasonStandingsParams} params - Parameters for the request.
* @param {number} params.seasonId - The season ID to get the standings for.
* @param {number} params.carClassId - The car class ID to get the standings for.
* @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all.
* @param {number} [params.division] - Filter by division (0-based). Defaults to all.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based).
*
* @returns A promise resolving to the time trial season standings, or undefined on error.
*/
getTimeTrialSeasonStandings: (params: GetTimeTrialSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the qualify results for a specific season.
*
* @param {GetQualifySeasonResultsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} params.carClassId - The ID of the car class.
* @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all.
* @param {number} [params.division] - Filter by division (0-based). Defaults to all.
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week.
*
* @returns A promise resolving to the qualify results data, or undefined on error.
*/
getQualifySeasonStandings: (params: GetQualifySeasonResultsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get world records for a specific car and track combination.
*
* @param {GetWorldRecordsParams} params - Parameters for the request.
* @param {number} params.carId - The ID of the car.
* @param {number} params.trackId - The ID of the track.
* @param {number} [params.seasonYear] - Optional year to limit results.
* @param {number} [params.seasonQuarter] - Optional quarter (1-4) to limit results (requires `seasonYear`).
*
* @returns A promise resolving to the world records data (chunked), or undefined on error.
*/
getWorldRecords: (params: GetWorldRecordsParams) => Promise<{
type: "stats_world_records";
data: {
success: boolean;
chunk_info: {
base_download_url: string;
chunk_file_names: string[];
rows: number;
chunk_size: number;
num_chunks: number;
};
car_id: number;
track_id: number;
last_updated: string;
};
} | undefined>;
}