iracing-api
Version:
Javascript client for iracing API
389 lines (388 loc) • 16.7 kB
TypeScript
import { API } from './api';
import type { GetCustLeagueSessionsParams, GetLeagueDataParams, GetLeagueDirectoryParams, GetLeagueMembershipParams, GetLeaguePointSystemParams, GetLeagueRosterParams, GetLeagueSeasonSessionsParams, GetLeagueSeasonStandingsParams, GetLeagueSeasonsParams } from '../types';
/**
* Provides methods for interacting with league-related endpoints.
*/
export declare class LeagueAPI extends API {
/**
* Get a list of customer league sessions.
*
* @param {GetCustLeagueSessionsParams} [params] - Optional parameters to filter the sessions.
* @param {boolean} [params.mine] - If true, return only sessions created by the authenticated user.
* @param {number} [params.packageId] - If set, return only sessions using this car or track package ID.
* @returns A promise resolving to the customer league sessions data, or undefined on error.
*/
getCustLeagueSessions: (params?: GetCustLeagueSessionsParams) => Promise<{
success: boolean;
sequence: number;
subscribed: boolean;
sessions: {
endTime: string;
track: {
trackId: number;
trackName: string;
configName?: string | null | undefined;
};
host: {
displayName: string;
custId: number;
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
};
status: number;
sessionFull: boolean;
canSpot: boolean;
canWatch: boolean;
sessionType: number;
carTypes: {
carType: string;
}[];
admins: {
displayName: string;
custId: number;
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
}[];
aiAvoidPlayers: boolean;
allowedClubs: any[];
allowedLeagues: number[];
allowedTeams: any[];
cars: {
carId: number;
carName: string;
packageId: number;
carClassId: number;
carClassName: string;
maxDryTireSets: number;
maxPctFuelFill: number;
powerAdjustPct: number;
weightPenaltyKg: number;
qualSetupFilename?: string | null | undefined;
qualSetupId?: number | null | undefined;
raceSetupFilename?: string | null | undefined;
raceSetupId?: number | null | undefined;
}[];
carsLeft: number;
consecCautionsSingleFile: boolean;
countByCarClassId: Record<string, number>;
countByCarId: Record<string, number>;
damageModel: number;
disallowVirtualMirror: boolean;
doNotCountCautionLaps: boolean;
doNotPaintCars: boolean;
driverChangeRule: number;
driverChanges: boolean;
elig: {
sessionFull: boolean;
canSpot: boolean;
canWatch: boolean;
canDrive: boolean;
hasSessPassword: boolean;
needsPurchase: boolean;
ownCar: boolean;
ownTrack: boolean;
purchaseSkus: number[];
registered: boolean;
};
enablePitlaneCollisions: boolean;
entryCount: number;
eventTypes: {
eventType: number;
}[];
farm: {
farmId: number;
displayName: string;
imagePath: string;
displayed: boolean;
};
fixedSetup: boolean;
fullCourseCautions: boolean;
greenWhiteCheckeredLimit: number;
hardcoreLevel: number;
incidentLimit: number;
incidentWarnMode: number;
incidentWarnParam1: number;
incidentWarnParam2: number;
launchAt: string;
leagueId: number;
leagueSeasonId: number;
licenseGroupTypes: {
licenseGroupType: number;
}[];
loneQualify: boolean;
luckyDog: boolean;
maxAiDrivers: number;
maxDrivers: number;
maxIr: number;
maxLicenseLevel: number;
maxTeamDrivers: number;
minIr: number;
minLicenseLevel: number;
minTeamDrivers: number;
multiclassType: number;
mustUseDiffTireTypesInRace: boolean;
noLapperWaveArounds: boolean;
numFastTows: number;
numOptLaps: number;
openRegExpires: string;
orderId: number;
paceCarClassId: null;
paceCarId: null;
passwordProtected: boolean;
pitsInUse: number;
practiceLength: number;
privateSessionId: number;
qualifierMustStartRace: boolean;
qualifyLaps: number;
qualifyLength: number;
raceLaps: number;
raceLength: number;
restarts: number;
restrictResults: boolean;
restrictViewing: boolean;
rollingStarts: boolean;
sessionId: number;
sessionName: string;
sessionTypes: {
sessionType: number;
}[];
shortParadeLap: boolean;
startOnQualTire: boolean;
startZone: boolean;
subsessionId: number;
teamEntryCount: number;
telemetryForceToDisk: number;
telemetryRestriction: number;
timeLimit: number;
trackState: {
leaveMarbles: boolean;
practiceGripCompound: number;
practiceRubber: number;
qualifyGripCompound: number;
qualifyRubber: number;
raceGripCompound: number;
raceRubber: number;
warmupGripCompound: number;
warmupRubber: number;
};
trackTypes: {
trackType: "dirt_oval" | "dirt_road" | "oval" | "road";
}[];
unsportConductRuleMode: number;
warmupLength: number;
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;
};
admin: boolean;
availableReservedBroadcasterSlots: number;
availableSpectatorSlots: number;
broadcaster: boolean;
canBroadcast: boolean;
canJoin: boolean;
friends: any[];
isHeatRacing: boolean;
leagueName: string;
maxUsers: number;
numBroadcasters: number;
numDrivers: number;
numSpectatorSlots: number;
numSpectators: number;
numSpotters: number;
owner: boolean;
populated: boolean;
watched: any[];
aiMaxSkill?: number | null | undefined;
aiMinSkill?: number | null | undefined;
aiRosterName?: string | null | undefined;
image?: {
largeLogo: string | null;
smallLogo: string;
} | null | undefined;
leagueSeasonName?: string | null | undefined;
sessionDesc?: string | null | undefined;
}[];
mine: boolean;
} | undefined>;
/**
* Search the league directory.
*
* @param {GetLeagueDirectoryParams} [params] - Optional parameters to filter and sort the league directory.
* @param {string} [params.search] - Search term for league name, description, owner, and league ID.
* @param {string} [params.tag] - One or more tags, comma-separated.
* @param {boolean} [params.restrictToMember=false] - Include only leagues the customer is a member of.
* @param {boolean} [params.restrictToRecruiting=false] - Include only leagues which are recruiting.
* @param {boolean} [params.restrictToFriends=false] - Include only leagues owned by a friend.
* @param {boolean} [params.restrictToWatched=false] - Include only leagues owned by a watched member.
* @param {number} [params.minimumRosterCount] - Minimum number of members for included leagues.
* @param {number} [params.maximumRosterCount] - Maximum number of members for included leagues.
* @param {number} [params.lowerbound=1] - First row of results to return.
* @param {number} [params.upperbound] - Last row of results to return (defaults to lowerbound + 39).
* @param {string} [params.sort='relevance'] - Sort criteria: 'relevance', 'leaguename', 'displayname' (owner's name), 'rostercount'.
* @param {string} [params.order='asc'] - Sort order: 'asc' or 'desc'.
*
* @returns A promise resolving to the league directory search results, or undefined on error.
*/
getLeagueDirectory: (params?: GetLeagueDirectoryParams) => Promise<{
success: boolean;
resultsPage: {
created: string;
leagueId: number;
leagueName: string;
owner: {
displayName: string;
custId: number;
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
faceType: number;
helmetType: number;
};
carNumber: null;
nickName: null;
};
isAdmin: boolean;
isMember: boolean;
ownerId: number;
pendingApplication: boolean;
pendingInvitation: boolean;
recruiting: boolean;
rosterCount: number;
about?: string | null | undefined;
url?: string | null | undefined;
}[];
lowerbound: number;
upperbound: number;
rowCount: number;
} | undefined>;
/**
* Get detailed information about a specific league.
*
* @param {GetLeagueDataParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league to retrieve.
* @param {boolean} [params.includeLicenses=false] - Include license information for members (can slow down response).
*
* @returns A promise resolving to the league data, or undefined on error.
*/
getLeagueData: (params: GetLeagueDataParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the points systems available for a league, optionally filtered by season.
*
* @param {GetLeaguePointSystemParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league.
* @param {number} [params.seasonId] - If provided and the season uses custom points, include the custom option.
*
* @returns A promise resolving to the list of points systems, or undefined on error.
*/
getLeaguePointSystem: (params: GetLeaguePointSystemParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get league membership information for a customer.
*
* @param {GetLeagueMembershipParams} [params] - Optional parameters to specify the customer.
* @param {number} [params.customerId] - Customer ID to fetch membership for. Defaults to the authenticated user.
* Note: Restrictions apply if fetching for another user (see iRacing docs).
* @param {boolean} [params.includeLeague=false] - Include detailed league information in the response.
*
* @returns A promise resolving to the league membership data, or undefined on error.
*/
getLeagueMembership: (params?: GetLeagueMembershipParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the seasons for a specific league.
*
* @param {GetLeagueSeasonsParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league.
* @param {boolean} [params.retired=false] - If true, include inactive (retired) seasons.
*
* @returns A promise resolving to the list of league seasons, or undefined on error.
*/
getLeagueSeasons: (params: GetLeagueSeasonsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the season standings for a specific league season.
*
* @param {GetLeagueSeasonStandingsParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league.
* @param {number} params.seasonId - The ID of the season.
* @param {number} [params.carClassId] - Optional car class ID to filter standings.
* @param {number} [params.carId] - Optional car ID. If `carClassId` is included, filters within the class; otherwise, across classes.
*
* @returns A promise resolving to the league season standings, or undefined on error.
*/
getLeagueSeasonStandings: (params: GetLeagueSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the sessions for a specific league season.
*
* @param {GetLeagueSeasonSessionsParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league.
* @param {number} params.seasonId - The ID of the season.
* @param {boolean} [params.resultsOnly=false] - If true, include only sessions for which results are available.
*
* @returns A promise resolving to the list of league season sessions, or undefined on error.
*/
getLeagueSeasonSessions: (params: GetLeagueSeasonSessionsParams) => Promise<Record<string, unknown> | undefined>;
/**
* Get the roster for a specific league.
*
* @param {GetLeagueRosterParams} params - Parameters for the request.
* @param {number} params.leagueId - The ID of the league.
* @param {boolean} [params.includeLicenses=false] - Include license information for roster members (can slow down response).
*
* @returns A promise resolving to the league roster, or undefined on error.
*/
getLeagueRoster: (params: GetLeagueRosterParams) => Promise<Record<string, unknown> | undefined>;
}