UNPKG

iracing-api

Version:

Javascript client for iracing API

389 lines (388 loc) 16.7 kB
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>; }