iracing-api
Version:
Javascript client for iracing API
408 lines (407 loc) • 15.2 kB
TypeScript
import { API } from './api';
import { GetSeriesPastSeasonsParams, GetSeriesSeasonsParams } from '../types';
/**
* Provides methods for interacting with series-related endpoints.
*/
export declare class SeriesAPI extends API {
/**
* Get assets for all series (logos, images, copy).
*
* Note: Image paths are relative to `https://images-static.iracing.com/`.
*
* @returns A promise resolving to the series assets data, or undefined on error.
*/
getSeriesAssets: () => Promise<Record<string, {
largeImage: null;
logo: string;
smallImage: null;
seriesId: number;
seriesCopy: string;
}> | undefined>;
/**
* Get basic data for all series.
*
* @returns A promise resolving to an array of series data objects, or undefined on error.
*/
getSeriesData: () => Promise<{
category: "dirt_oval" | "dirt_road" | "formula_car" | "oval" | "sports_car";
categoryId: number;
seriesId: number;
seriesName: string;
allowedLicenses: {
groupName: "Class A" | "Class B" | "Class C" | "Class D" | "Pro" | "Pro/WC" | "Rookie";
maxLicenseLevel: number;
minLicenseLevel: number;
licenseGroup: number;
parentId?: number | undefined;
}[];
seriesShortName: string;
eligible: boolean;
maxStarters: number;
minStarters: number;
ovalCautionType: number;
roadCautionType: number;
forumUrl?: string | null | undefined;
searchFilters?: string | null | undefined;
}[] | undefined>;
/**
* Get all past seasons for a specific series.
*
* Note: Filter the response list by `official: true` for seasons with standings.
*
* @param {GetSeriesPastSeasonsParams} params - Parameters for the request.
* @param {number} params.seriesId - The ID of the series.
*
* @returns A promise resolving to the past seasons data for the series, or undefined on error.
*/
getSeriesPastSeasons: (params: GetSeriesPastSeasonsParams) => Promise<{
success: boolean;
seriesId: number;
series: {
active: boolean;
logo: string | null;
category: "dirt_oval" | "dirt_road" | "formula_car" | "oval" | "sports_car";
categoryId: number;
fixedSetup: boolean;
licenseGroupTypes: {
licenseGroupType: number;
}[];
licenseGroup: number;
seriesId: number;
seriesName: string;
allowedLicenses: {
groupName: "Class A" | "Class B" | "Class C" | "Class D" | "Pro" | "Pro/WC" | "Rookie";
maxLicenseLevel: number;
minLicenseLevel: number;
licenseGroup: number;
parentId?: number | undefined;
}[];
seriesShortName: string;
official: boolean;
seasons: {
active: boolean;
driverChanges: boolean;
fixedSetup: boolean;
licenseGroupTypes: {
licenseGroupType: number;
}[];
seasonId: number;
licenseGroup: number;
seasonYear: number;
seasonQuarter: number;
seriesId: number;
carClasses: {
name: string;
carClassId: number;
relativeSpeed: number;
shortName: string;
}[];
seasonName: string;
seasonShortName: string;
official: boolean;
raceWeeks: {
track: {
trackId: number;
trackName: string;
configName?: string | null | undefined;
categoryId?: number | null | undefined;
category?: string | null | undefined;
};
seasonId: number;
raceWeekNum: number;
}[];
hasSupersessions?: boolean | undefined;
}[];
searchFilters?: string | null | undefined;
};
} | undefined>;
/**
* Get the current seasons for all series.
*
* @param {GetSeriesSeasonsParams} [params] - Optional parameters.
* @param {boolean} [params.includeSeries=false] - Include detailed series information within each season object.
*
* @returns A promise resolving to an array of current series season objects, or undefined on error.
*/
getSeriesSeasons: (params?: GetSeriesSeasonsParams) => Promise<{
active: boolean;
complete: boolean;
carTypes: {
carType: string;
}[];
driverChangeRule: number;
driverChanges: boolean;
enablePitlaneCollisions: boolean;
fixedSetup: boolean;
greenWhiteCheckeredLimit: number;
hardcoreLevel: number;
incidentLimit: number;
incidentWarnMode: number;
incidentWarnParam1: number;
incidentWarnParam2: number;
licenseGroupTypes: {
licenseGroupType: number;
}[];
luckyDog: boolean;
maxTeamDrivers: number;
minTeamDrivers: number;
mustUseDiffTireTypesInRace: boolean;
numOptLaps: number;
qualifierMustStartRace: boolean;
restrictViewing: boolean;
shortParadeLap: boolean;
startOnQualTire: boolean;
startZone: boolean;
trackTypes: {
trackType: "dirt_oval" | "dirt_road" | "oval" | "road";
}[];
unsportConductRuleMode: number;
isHeatRacing: boolean;
seasonId: number;
licenseGroup: number;
seasonYear: number;
seasonQuarter: number;
seriesId: number;
maxWeeks: number;
seasonName: string;
seasonShortName: string;
official: boolean;
startDate: string;
allowedSeasonMembers: Record<string, {
displayName: string;
custId: number;
carId: number;
seasonId: number;
carNum: string;
}> | null;
carClassIds: number[];
cautionLapsDoNotCount: boolean;
crossLicense: boolean;
drops: number;
gridByClass: boolean;
ignoreLicenseForPractice: boolean;
multiclass: boolean;
nextRaceSession: null;
opDuration: number;
openPracticeSessionTypeId: number;
raceWeek: number;
raceWeekToMakeDivisions: number;
regUserCount: number;
regionCompetition: boolean;
restrictByMember: boolean;
restrictToCar: boolean;
scheduleDescription: string;
schedules: {
track: {
trackId: number;
trackName: string;
configName?: string | null | undefined;
categoryId?: number | null | undefined;
category?: string | null | undefined;
};
simulatedTimeMultiplier: number;
category: "dirt_oval" | "dirt_road" | "formula_car" | "oval" | "sports_car";
categoryId: number;
enablePitlaneCollisions: boolean;
fullCourseCautions: boolean;
shortParadeLap: boolean;
startZone: boolean;
trackState: {
leaveMarbles: boolean;
practiceRubber?: number | null | undefined;
};
weather: {
type: number;
skies: number;
windDir: number;
tempUnits: number;
windUnits: number;
allowFog: boolean;
fog: number;
humidityUnits: number;
precipOption: number;
relHumidity: number;
simulatedStartTime: string;
simulatedStartUtcTime: string;
simulatedTimeMultiplier: number;
simulatedTimeOffsets: number[];
tempValue: number;
timeOfDay: number;
version: number;
weatherVarInitial: number;
weatherVarOngoing: number;
windValue: number;
forecastOptions?: {
forecastType: number;
precipitation: number;
skies: number;
stopPrecip: number;
temperature: number;
windDir: number;
windSpeed: number;
} | null | undefined;
trackWater?: number | null | undefined;
weatherSummary?: {
maxPrecipRateDesc: "Heavy" | "Light" | "Moderate" | "None";
precipChance: number;
maxPrecipRate?: number | null | undefined;
skiesHigh?: number | null | undefined;
skiesLow?: number | null | undefined;
tempHigh?: number | null | undefined;
tempLow?: number | null | undefined;
tempUnits?: number | null | undefined;
windHigh?: number | null | undefined;
windLow?: number | null | undefined;
windUnits?: number | null | undefined;
} | null | undefined;
weatherUrl?: string | null | undefined;
};
seasonId: number;
seriesId: number;
seriesName: string;
specialEventType: null;
raceWeekNum: number;
seasonName: string;
startDate: string;
carRestrictions: {
carId: number;
maxDryTireSets: number;
maxPctFuelFill: number;
powerAdjustPct: number;
weightPenaltyKg: number;
raceSetupId?: number | null | undefined;
qualSetupId?: number | null | undefined;
}[];
qualAttached: boolean;
raceLapLimit: number | null;
raceTimeDescriptors: {
superSession: boolean;
repeating: boolean;
sessionMinutes: number;
sessionTimes?: string[] | null | undefined;
startDate?: string | null | undefined;
dayOffset?: number[] | null | undefined;
firstSessionTime?: string | null | undefined;
repeatMinutes?: number | null | undefined;
}[];
raceTimeLimit: number | null;
restartType: string;
scheduleName: string;
startType: string;
}[];
sendToOpenPractice: boolean;
heatSesInfo?: ({
hidden: boolean;
custId: number;
consolationDeltaMaxFieldSize: number;
consolationDeltaSessionLaps: number;
consolationDeltaSessionLengthMinutes: number;
consolationFirstMaxFieldSize: number;
consolationFirstSessionLaps: number;
consolationFirstSessionLengthMinutes: number;
consolationNumPositionToInvert: number;
consolationNumToConsolation: number;
consolationNumToMain: number;
consolationRunAlways: boolean;
consolationScoresChampPoints: boolean;
created: string;
heatCautionType: number;
heatInfoId: number;
heatInfoName: string;
heatLaps: number;
heatLengthMinutes: number;
heatMaxFieldSize: number;
heatNumFromEachToMain: number;
heatNumPositionToInvert: number;
heatScoresChampPoints: boolean;
heatSessionMinutesEstimate: number;
mainLaps: number;
mainLengthMinutes: number;
mainMaxFieldSize: number;
mainNumPositionToInvert: number;
maxEntrants: number;
openPractice: boolean;
preMainPracticeLengthMinutes: number;
preQualNumToMain: number;
preQualPracticeLengthMinutes: number;
qualCautionType: number;
qualLaps: number;
qualLengthMinutes: number;
qualNumToMain: number;
qualOpenDelaySeconds: number;
qualScoresChampPoints: boolean;
qualScoring: number;
qualStyle: number;
raceStyle: number;
} & {
description: string;
}) | null | undefined;
racePoints?: number | null | undefined;
regOpenMinutes?: number | null | undefined;
rookieSeason?: string | null | undefined;
}[] | undefined>;
/**
* Get statistical data for all series, including associated seasons.
*
* Note: To get series and seasons for which standings should be available, filter the list by `official: true`.
*
* @returns A promise resolving to an array of series statistics objects, or undefined on error.
*/
getSeriesStats: () => Promise<{
active: boolean;
logo: string | null;
category: "dirt_oval" | "dirt_road" | "formula_car" | "oval" | "sports_car";
categoryId: number;
fixedSetup: boolean;
licenseGroupTypes: {
licenseGroupType: number;
}[];
licenseGroup: number;
seriesId: number;
seriesName: string;
allowedLicenses: {
groupName: "Class A" | "Class B" | "Class C" | "Class D" | "Pro" | "Pro/WC" | "Rookie";
maxLicenseLevel: number;
minLicenseLevel: number;
licenseGroup: number;
parentId?: number | undefined;
}[];
seriesShortName: string;
official: boolean;
seasons: {
active: boolean;
driverChanges: boolean;
fixedSetup: boolean;
licenseGroupTypes: {
licenseGroupType: number;
}[];
seasonId: number;
licenseGroup: number;
seasonYear: number;
seasonQuarter: number;
seriesId: number;
carClasses: {
name: string;
carClassId: number;
relativeSpeed: number;
shortName: string;
}[];
seasonName: string;
seasonShortName: string;
official: boolean;
raceWeeks: {
track: {
trackId: number;
trackName: string;
configName?: string | null | undefined;
categoryId?: number | null | undefined;
category?: string | null | undefined;
};
seasonId: number;
raceWeekNum: number;
}[];
hasSupersessions?: boolean | undefined;
}[];
searchFilters?: string | null | undefined;
}[] | undefined>;
}