iracing-api
Version:
Javascript client for iracing API
249 lines (248 loc) • 11.9 kB
TypeScript
import { API } from './api';
import { GetResultParams, GetResultResponse, GetResultsEventLogParams, GetResultsLapChartDataParams, GetResultsLapDataOptions, GetResultsLapDataParams, GetResultsLapDataResponse, GetResultsLapDataWithChunksResponse, GetSeasonResultsParams, SearchSeriesParams, SearchHostedParams, SearchHostedResponse, GetResultsEventLogResponse, GetResultsEventLogWithChunksResponse } from '../types/results';
/**
* Provides methods for interacting with session result endpoints.
*/
export declare class ResultsAPI extends API {
/**
* Get the results of a specific subsession.
*
* Note: `series_logo` image paths in response are relative to `https://images-static.iracing.com/img/logos/series/`.
*
* @param {GetResultParams} params - Parameters for the request.
* @param {number} params.subsessionId - The ID of the subsession.
* @param {boolean} [params.includeLicenses=false] - Include license information in the response.
*
* @returns A promise resolving to the race result data, or undefined on error.
*/
getResult: (params: GetResultParams) => Promise<GetResultResponse | undefined>;
/**
* Get the event log for a specific subsession and simsession.
*
* @param {GetResultsEventLogParams} params - Parameters for the request.
* @param {number} params.subsessionId - The ID of the subsession.
* @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.).
* @param {Object} [options] - Options for fetching data.
* @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable).
*
* @returns A promise resolving to the event log data, potentially combined from chunks, or throws an error if fetching fails.
*/
getResultsEventLog: (params: GetResultsEventLogParams, options?: {
getAllChunks?: boolean;
}) => Promise<GetResultsEventLogResponse | GetResultsEventLogWithChunksResponse>;
/**
* Get lap chart data for a specific subsession and simsession.
*
* @param {GetResultsLapChartDataParams} params - Parameters for the request.
* @param {number} params.subsessionId - The ID of the subsession.
* @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.).
* @param {Object} [options] - Options for fetching data.
* @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable).
*
* @returns A promise resolving to the lap chart data, potentially combined from chunks, or throws an error if fetching fails.
*/
getResultsLapChartData: (params: GetResultsLapChartDataParams, options?: {
getAllChunks?: boolean;
}) => Promise<{
success: boolean;
bestLapTime: number;
bestLapNum: number;
bestNlapsNum: number;
bestNlapsTime: number;
bestQualLapAt: string | null;
bestQualLapNum: number;
bestQualLapTime: number;
sessionInfo: {
startTime: string;
track: {
configName: string;
trackId: number;
trackName: string;
};
eventType: number;
privateSessionId: number;
sessionId: number;
subsessionId: number;
seriesName: string;
simsessionType: number;
simsessionNumber: number;
simsessionName: string;
eventTypeName: string;
numLapsForQualAverage: number;
numLapsForSoloAverage: number;
seasonName: string;
seasonShortName: string;
seriesShortName: string;
};
chunkInfo: {
chunkSize: number;
numChunks: number;
rows: number;
baseDownloadUrl: string;
chunkFileNames: string[];
};
lapChartData?: {
interval: number | null;
name: string;
displayName: string;
custId: number;
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
carNumber: string;
licenseLevel: number;
groupId: number;
flags: number;
ai: boolean;
lapNumber: number;
incident: boolean;
sessionTime: number;
sessionStartTime: string | null;
lapTime: number;
teamFastestLap: boolean;
personalBestLap: boolean;
lapEvents: string[];
lapPosition: number;
intervalUnits: string | null;
fastestLap: boolean;
}[] | undefined;
}>;
/**
* Get lap data for a driver or team in a specific subsession and simsession.
*
* @param {GetResultsLapDataParams} params - Parameters for the request.
* @param {number} params.subsessionId - The ID of the subsession.
* @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.).
* @param {number} [params.customerId] - Required for single-driver events. Optional for team events (returns all team laps if omitted).
* @param {number} [params.teamId] - Required for team events.
*
* @param {GetResultsLapDataOptions} [options] - Options for fetching data.
* @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable).
*
* @returns A promise resolving to the lap data, potentially combined from chunks, or throws an error if fetching fails.
*/
getResultsLapData: (params: GetResultsLapDataParams, options?: GetResultsLapDataOptions) => Promise<GetResultsLapDataResponse | GetResultsLapDataWithChunksResponse>;
/**
* Search for hosted and league session results.
*
* Note: Maximum time frame is 90 days. Results may be split into chunks.
* Requires one time range (`start_range_begin` or `finish_range_begin`).
* Requires one identifier (`custId`, `teamId`, `hostCustId`, `sessionName`).
*
* @param {SearchHostedParams} [params] - Search parameters.
* @param {string} [params.startRangeBegin] - Session start time range begin (ISO-8601 UTC).
* @param {string} [params.startRangeEnd] - Session start time range end (ISO-8601 UTC, exclusive).
* @param {string} [params.finishRangeBegin] - Session finish time range begin (ISO-8601 UTC).
* @param {string} [params.finishRangeEnd] - Session finish time range end (ISO-8601 UTC, exclusive).
* @param {number} [params.custId] - Participant's customer ID (ignored if `teamId` provided).
* @param {number} [params.teamId] - Team ID (takes priority over `custId`).
* @param {number} [params.hostCustId] - Host's customer ID.
* @param {string} [params.sessionName] - Partial or full session name.
* @param {number} [params.leagueId] - Filter by league ID.
* @param {number} [params.leagueSeasonId] - Filter by league season ID.
* @param {number} [params.carId] - Filter by car ID used in the session.
* @param {number} [params.trackId] - Filter by track ID used in the session.
* @param {number[]} [params.categoryIds] - Filter by track category IDs (defaults to all).
*
* @returns A promise resolving to the search results (possibly chunked), or undefined on error.
*/
searchHosted: (params?: SearchHostedParams) => Promise<SearchHostedResponse | undefined>;
/**
* Search for official series results.
*
* Note: Maximum time frame is 90 days. Results may be split into chunks.
* Requires at least one time filter (`season_year`/`season_quarter`, `start_range_begin`, or `finish_range_begin`).
*
* @param {SearchSeriesParams} [params] - Search parameters.
* @param {number} [params.seasonYear] - Season year (requires `seasonQuarter`).
* @param {number} [params.seasonQuarter] - Season quarter (requires `seasonYear`).
* @param {string} [params.startRangeBegin] - Session start time range begin (ISO-8601 UTC).
* @param {string} [params.startRangeEnd] - Session start time range end (ISO-8601 UTC, exclusive).
* @param {string} [params.finishRangeBegin] - Session finish time range begin (ISO-8601 UTC).
* @param {string} [params.finishRangeEnd] - Session finish time range end (ISO-8601 UTC, exclusive).
* @param {number} [params.customerId] - Participant's customer ID (ignored if `teamId` provided).
* @param {number} [params.teamId] - Team ID (takes priority over `customerId`).
* @param {number} [params.seriesId] - Filter by series ID.
* @param {number} [params.raceWeekNum] - Filter by race week number (0-based).
* @param {boolean} [params.officialOnly=false] - Include only official sessions earning points.
* @param {number[]} [params.eventTypes] - Filter by event type IDs (defaults to all).
* @param {number[]} [params.categoryIds] - Filter by license category IDs (defaults to all).
*
* @returns A promise resolving to the search results (potentially combined from chunks), or the raw chunk info response if chunk fetching is not implemented/fails.
*/
searchSeries: (params?: SearchSeriesParams) => Promise<unknown[] | {
data: {
success: boolean;
chunk_info: {
base_download_url: string;
chunk_file_names: string[];
};
};
} | undefined>;
/**
* Get results for a specific season, optionally filtered by event type and race week.
*
* @param {GetSeasonResultsParams} params - Parameters for the request.
* @param {number} params.seasonId - The ID of the season.
* @param {number} [params.eventType] - Filter by event type ID (2=Practice, 3=Qualify, 4=Time Trial, 5=Race).
* @param {number} [params.raceWeekNumber] - Filter by race week number (0-based).
*
* @returns A promise resolving to the season results data, or undefined on error.
*/
getSeasonResults: (params: GetSeasonResultsParams) => Promise<{
success: boolean;
eventType: number;
seasonId: number;
raceWeekNum: number;
resultsList: {
startTime: string;
track: {
configName: string;
trackId: number;
trackName: string;
};
eventType: number;
driverChanges: boolean;
farm: {
farmId: number;
displayName: string;
imagePath: string;
displayed: boolean;
};
sessionId: number;
subsessionId: number;
numDrivers: number;
numCautions: number;
numCautionLaps: number;
numLeadChanges: number;
eventStrengthOfField: number;
carClasses: {
name: string;
carClassId: number;
shortName: string;
strengthOfField: number;
numEntries: number;
}[];
eventBestLapTime: number;
eventTypeName: string;
officialSession: boolean;
raceWeekNum: number;
winnerHelmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
winnerId: number;
winnerLicenseLevel: number;
winnerName: string;
}[];
} | undefined>;
}