@matveymirman/iracing-node-api
Version:
A nodejs wrapper for Iracing's data api.
722 lines (721 loc) • 18.7 kB
TypeScript
export type AuthResponse = {
authcode: string;
autoLoginSeries: null;
autoLoginToken: null;
custId: number;
email: string;
ssoCookieDomain: string;
ssoCookieName: string;
ssoCookiePath: string;
ssoCookieValue: string;
};
export type SignedUrl = {
data_url: string | undefined;
link: string;
expires: string | Date;
};
export type CarAsset = {
car_id: number;
car_rules: string[];
detail_copy: string;
detail_techspecs_copy: string;
folder: string;
gallery_images: string;
gallery_prefix: string | null;
group_image: string | null;
group_name: string | null;
large_image: string;
logo: string;
small_image: string;
sponsor_logo: string;
template_path: string;
};
export type CarAssetResponse = Record<string, CarAsset>;
export type TrackAsset = {
coordinates: string;
detail_copy: string;
detail_techspecs_copy: string | null;
detail_video: string | null;
folder: string;
gallery_images: string;
gallery_prefix: string;
large_image: string;
logo: string;
north: string;
num_svg_images: number;
small_image: string;
track_map: string;
track_map_layers: {
background: string;
inactive: string;
active: string;
pitroad: string;
"start-finish": string;
turns: string;
};
};
export type TrackAssetResponse = Record<string, TrackAsset>;
export type CarType = {
car_type: string;
};
export type CarDataResponse = {
ai_enabled: boolean;
allow_number_colors: boolean;
allow_number_font: boolean;
allow_sponsor1: boolean;
allow_sponsor2: boolean;
allow_wheel_color: boolean;
award_exempt: boolean;
car_dirpath: "string";
car_id: number;
car_name: string;
car_name_abbreviated: string;
car_types: CarType[];
car_weight: number;
categories: string[];
created: string | Date;
first_sale: string | Date;
forum_url: string;
free_with_subscription: boolean;
has_headlights: boolean;
has_multiple_dry_tire_types: boolean;
has_rain_capable_tire_types: boolean;
hp: number;
is_ps_purchasable: boolean;
max_power_adjust_pct: number;
max_weight_penalty_kg: number;
min_power_adjust_pct: number;
package_id: number;
patterns: number;
price: number;
price_display: string;
rain_enabled: boolean;
retired: boolean;
search_filters: string;
sku: number;
};
export type Track = {
track_id: number;
track_name: string;
config_name: string;
category_id: number;
category: string;
};
export type Weather = {
version: number;
type: number;
temp_units: number;
temp_value: number;
rel_humidity: number;
fog: number;
wind_dir: number;
wind_units: number;
wind_value: number;
skies: number;
weather_var_initial: number;
weather_var_ongoing: number;
allow_fog: boolean;
track_water: number;
precip_option: number;
time_of_day: number;
simulated_start_utc_time: string | Date;
simulated_start_utc_offset: number;
precip_time_pct: number;
precip_mm_final_session: number;
precip_mm2hr_before_final_session: number;
};
export type WeatherResult = {
avg_skies: number;
avg_cloud_cover_pct: number;
min_cloud_cover_pct: number;
max_cloud_cover_pct: number;
temp_units: number;
avg_temp: number;
min_temp: number;
max_temp: number;
avg_rel_humidity: number;
wind_units: number;
avg_wind_speed: number;
min_wind_speed: number;
max_wind_speed: number;
avg_wind_dir: number;
max_fog: number;
fog_time_pct: number;
precip_time_pct: number;
precip_mm: number;
precip_mm2hr_before_session: number;
simulated_start_time: string | Date;
};
export type DriverResult = {
cust_id: number;
display_name: string;
finish_position: number;
finish_position_in_class: number;
laps_lead: number;
laps_complete: number;
opt_laps_complete: number;
interval: number;
class_interval: number;
country_code: string;
average_lap: number;
best_lap_num: number;
best_lap_time: number;
best_nlaps_num: number;
best_nlaps_time: number;
best_qual_lap_at: string;
best_qual_lap_num: number;
best_qual_lap_time: number;
reason_out_id: number;
reason_out: string;
champ_points: number;
drop_race: boolean;
club_points: number;
position: number;
qual_lap_time: number;
starting_position: number;
starting_position_in_class: number;
car_class_id: number;
car_class_name: string;
car_class_short_name: string;
club_id: number;
club_name: string;
club_shortname: string;
division: number;
division_name: string;
old_license_level: number;
old_sub_level: number;
old_cpi: number;
oldi_rating: number;
old_ttrating: number;
new_license_level: number;
new_sub_level: number;
new_cpi: number;
newi_rating: number;
new_ttrating: number;
multiplier: number;
license_change_oval: number;
license_change_road: number;
incidents: number;
max_pct_fuel_fill: number;
weight_penalty_kg: number;
league_points: number;
league_agg_points: number;
car_id: number;
car_name: string;
aggregate_champ_points: number;
livery: {
car_id: number;
pattern: number;
color1: string;
color2: string;
color3: string;
number_font: number;
number_color1: string;
number_color2: string;
number_color3: string;
number_slant: number;
sponsor1: number;
sponsor2: number;
car_number: string;
wheel_color: string;
rim_type: number;
};
suit: {
pattern: number;
color1: string;
color2: string;
color3: string;
};
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
face_type: number;
helmet_type: number;
};
watched: boolean;
friend: boolean;
ai: boolean;
};
export type TrackState = {
leave_marbles: boolean;
practice_rubber: number;
qualify_rubber: number;
warmup_rubber: number;
race_rubber: number;
practice_grip_compound: number;
qualify_grip_compound: number;
warmup_grip_compound: number;
race_grip_compound: number;
};
export type AllowedLicence = {
parent_id: number;
license_group: number;
min_license_level: number;
max_license_level: number;
group_name: string;
};
export type CarClass = {
car_class_id: number;
cars_in_class: {
car_id: number;
}[];
name: string;
short_name: string;
};
export type SessionResult = {
subsession_id: number;
season_id: number;
season_name: string;
season_short_name: string;
season_year: number;
season_quarter: number;
series_id: number;
series_name: number;
series_short_name: string;
series_logo: string;
race_week_num: number;
session_id: number;
license_category_id: number;
license_category: string;
private_session_id: number;
start_time: string | Date;
end_time: string | Date;
num_laps_for_qual_average: number;
num_laps_for_solo_average: number;
corners_per_lap: number;
caution_type: number;
event_type: number;
event_type_name: string;
driver_changes: boolean;
min_team_drivers: number;
max_team_drivers: number;
driver_change_rule: number;
driver_change_param1: number;
driver_change_param2: number;
max_weeks: number;
points_type: string;
event_strength_of_field: number;
event_average_lap: number;
event_laps_complete: number;
num_cautions: number;
num_caution_laps: number;
num_lead_changes: number;
official_session: boolean;
heat_info_id: number;
special_event_type: number;
damage_model: number;
can_protest: boolean;
cooldown_minutes: number;
limit_minutes: number;
track: Track;
weather: Weather;
track_state: TrackState;
session_results: [
{
simsession_number: number;
simsession_type: number;
simsession_type_name: string;
simsession_subtype: number;
simsession_name: string;
weather_result: WeatherResult;
results: DriverResult[];
}
];
car_classes: CarClass[];
allowed_licenses: AllowedLicence[];
results_restricted: boolean;
associated_subsession_ids: number[];
};
export type EventLogResponse = {
success: boolean;
session_info: {
subsession_id: number;
session_id: number;
simsession_number: number;
simsession_type: number;
simsession_name: string;
event_type: number;
event_type_name: string;
private_session_id: number;
season_name: string;
season_short_name: string;
series_name: string;
series_short_name: string;
start_time: string | Date;
track: Track;
};
chunk_info: {
chunk_size: number;
num_chunks: number;
rows: number;
base_download_url: string;
chunk_file_names: string[];
};
};
export type LapDataResponse = {
success: boolean;
session_info: {
subsession_id: number;
session_id: number;
simsession_number: number;
simsession_type: number;
simsession_name: string;
num_laps_for_qual_average: number;
num_laps_for_solo_average: number;
event_type: number;
event_type_name: string;
private_session_id: number;
season_name: string;
season_short_name: string;
series_short_name: string;
start_time: string | Date;
track: Track;
};
best_lap_num: number;
best_lap_time: number;
best_nlaps_num: number;
best_nlaps_time: number;
best_qual_lap_num: number;
best_qual_lap_time: number;
best_qual_lap_at: string | Date | null;
chunk_info: {
chunk_size: number;
num_chunks: number;
rows: string;
base_download_url: string;
chunk_file_names: string[];
};
};
export type LapData = {
group_id: number;
name: string;
cust_id: number;
display_name: string;
lap_number: number;
flags: number;
incident: boolean;
session_time: number;
session_start_time: string | Date | null;
lap_time: number;
team_fastest_lap: boolean;
personal_best_lap: boolean;
helmet: {
pattern: number;
color1: string;
color2: string;
color3: string;
face_type: number;
helmet_type: number;
};
license_level: number;
car_number: string;
lap_events: string[];
lap_position: number;
interval: number | null;
interval_units: string | null;
fastest_lap: boolean;
ai: boolean;
};
export type TrackData = {
ai_enabled: boolean;
allow_pitlane_collisions: boolean;
allow_rolling_start: boolean;
allow_standing_start: boolean;
award_exempt: boolean;
category: string;
category_id: number;
closes: string;
config_name: string;
corners_per_lap: number;
created: string | Date;
first_sale: string | Date;
free_with_subscription: boolean;
fully_lit: boolean;
grid_stalls: number;
has_opt_path: boolean;
has_short_parade_lap: boolean;
has_start_zone: boolean;
has_svg_map: boolean;
is_dirt: boolean;
is_oval: boolean;
is_ps_purchasable: boolean;
lap_scoring: number;
latitude: number;
location: string;
longitude: number;
max_cars: number;
night_lighting: boolean;
nominal_lap_time: number;
number_pitstalls: string;
opens: string;
package_id: number;
pit_road_speed_limit: number;
price: number;
price_display: string;
priority: number;
purchasable: boolean;
qualify_laps: number;
rain_enabled: boolean;
restart_on_left: boolean;
retired: boolean;
search_filters: string;
site_url: string;
sku: number;
solo_laps: number;
start_on_left: boolean;
supports_grip_compound: boolean;
tech_track: boolean;
time_zone: String;
track_config_length: number;
track_dirpath: string;
track_id: number;
track_name: string;
track_types: {
track_type: string;
}[];
};
export interface MemberStatHistory {
blackout: boolean;
category_id: number;
chart_type: number;
data: MemberStats[];
success: boolean;
cust_id: number;
}
export interface MemberStats {
when: string;
value: number;
}
export interface MemberResponse {
success: boolean;
cust_ids: number[];
members: Member[];
}
export interface Member {
cust_id: number;
display_name: string;
helmet: Helmet;
last_login: string;
member_since: string;
club_id: number;
club_name: string;
ai: boolean;
}
export interface Helmet {
pattern: number;
color1: string;
color2: string;
color3: string;
face_type: number;
helmet_type: number;
}
export interface League {
league_id: number;
owner_id: number;
league_name: string;
created: string;
hidden: boolean;
message: string;
about: string;
url: string;
recruiting: boolean;
private_wall: boolean;
private_roster: boolean;
private_schedule: boolean;
private_results: boolean;
is_owner: boolean;
is_admin: boolean;
roster_count: number;
owner: {
cust_id: number;
display_name: string;
helmet: Helmet;
};
image: LeagueImage;
tags: {
categorized: [];
not_categorized: [];
};
league_applications: [];
pending_requests: [];
is_member: boolean;
is_applicant: boolean;
is_invite: boolean;
is_ignored: boolean;
roster: LeagueRoster;
}
export interface LeagueImage {
small_logo: string;
large_logo: string;
}
export interface LeagueRoster {
cust_id: number;
display_name: string;
helmet: Helmet;
owner: boolean;
admin: boolean;
league_mail_opt_out: boolean;
league_pm_opt_out: boolean;
league_member_since: boolean;
car_number: string;
nick_name: string;
}
export interface LeagueRosterResponse {
private_roster: boolean;
roster: LeagueRoster[];
}
export interface SeasonsResponse {
subscribed: boolean;
seasons: Season[];
success: boolean;
retired: boolean;
league_id: number;
}
export interface Season {
league_id: number;
season_id: number;
points_system_id: number;
season_name: string;
active: boolean;
hidden: boolean;
num_drops: number;
no_drops_on_or_after_race_num: number;
points_cars: {
car_id: number;
car_name: string;
}[];
driver_points_car_classes: SeasonCarClass[];
team_points_car_classes: SeasonCarClass[];
points_system_name: string;
points_system_desc: string;
}
export interface SeasonCarClass {
car_class_id: number;
name: string;
cars_in_class: {
car_id: number;
car_name: string;
}[];
}
export interface LeagueSeasonSessionsResponse {
sessions: LeagueSeasonSession[];
success: boolean;
season_id: number;
league_id: number;
}
export interface LeagueSeasonSession {
cars: {
car_id: number;
car_name: string;
car_class_id: number;
car_class_name: string;
}[];
driver_changes: boolean;
entry_count: number;
has_results: boolean;
heat_ses_info: HeatSessionInfo;
launch_at: string;
league_id: number;
league_season_id: number;
lone_qualify: boolean;
pace_car_class_id: number | null;
pace_car_id: number | null;
password_protected: boolean;
practice_length: number;
private_session_id: number;
qualify_laps: number;
qualify_length: number;
race_laps: number;
race_length: number;
session_id: number;
status: number;
subsession_id: number;
team_entry_count: number;
time_limit: number;
track: {
config_name: string;
track_id: number;
track_name: string;
};
track_state: TrackState;
weather: LeagueSeasonSessionWeather;
winner_id: number;
winner_name: string;
}
export interface HeatSessionInfo {
consolation_delta_max_field_size: number;
consolation_delta_session_laps: number;
consolation_delta_session_length_minutes: number;
consolation_first_max_field_size: number;
consolation_first_session_laps: number;
consolation_first_session_length_minutes: number;
consolation_num_position_to_invert: number;
consolation_num_to_consolation: number;
consolation_num_to_main: number;
consolation_run_always: boolean;
consolation_scores_champ_points: boolean;
created: string;
cust_id: number;
heat_caution_type: number;
heat_info_id: number;
heat_info_name: string;
heat_laps: number;
heat_length_minuts: number;
heat_max_field_size: number;
heat_num_for_each_to_main: number;
heat_num_position_to_invert: number;
heat_scores_champ_points: boolean;
heat_session_minutes_estimate: number;
hidden: boolean;
main_laps: number;
main_length_minutes: number;
main_max_field_size: number;
main_num_position_to_invert: number;
max_enterants: number;
open_practice: boolean;
pre_main_practice_length_minutes: number;
pre_qual_num_to_main: number;
pre_qual_practice_length_minutes: number;
qual_caution_type: number;
qual_laps: number;
qual_length_minutes: number;
qual_num_to_main: number;
qual_open_delay_seconds: number;
qual_scores_champ_points: boolean;
qual_scoring: number;
qual_style: number;
race_style: number;
}
export interface LeagueSeasonSessionWeather {
allow_fog: boolean;
fog: number;
precip_option: number;
rel_humidity: number;
skies: number;
temp_units: number;
temp_value: number;
track_water: number;
type: number;
version: number;
weather_summary: LeagueSeasonSessionWeatherSummary;
weather_val_initial: number;
weather_var_ongoing: number;
wind_dir: number;
wind_units: number;
wind_value: number;
}
export interface LeagueSeasonSessionWeatherSummary {
max_percip_rate: number;
max_percip_rate_desc: string;
percip_chance: number;
skies_high: number;
skies_low: number;
temp_high: number;
temp_low: number;
temp_units: number;
wind_high: number;
wind_low: number;
wind_units: number;
}