@spacemolt/lib 12.2.1 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,7 +53,13 @@ export type ActiveBattleInfo = {
53
53
  };
54
54
  export type ActiveBattleParticipantInfo = {
55
55
  faction_id?: string;
56
+ /**
57
+ * True for automated combatants: pirates, police, drones, creatures, stations, and intact prizes
58
+ */
56
59
  is_npc?: boolean;
60
+ /**
61
+ * Combatant type: player/pirate/police/drone/creature/station/prize
62
+ */
57
63
  kind?: string;
58
64
  player_id: string;
59
65
  ship_class?: string;
@@ -67,6 +73,41 @@ export type ActiveBuff = {
67
73
  stat: string;
68
74
  ticks_left: number;
69
75
  };
76
+ export type ActiveMissionInfo = {
77
+ accepted_at: string;
78
+ /**
79
+ * True for community/faction-wide missions
80
+ */
81
+ community?: boolean;
82
+ /**
83
+ * Community missions only
84
+ */
85
+ community_percent?: number;
86
+ /**
87
+ * item_id → "current/target" (community missions only)
88
+ */
89
+ community_progress?: {
90
+ [key: string]: string;
91
+ };
92
+ description: string;
93
+ difficulty: number;
94
+ expires_in_ticks: number;
95
+ /**
96
+ * Present only when the mission has a named NPC giver
97
+ */
98
+ giver?: MissionGiverInfo;
99
+ issuing_base: string;
100
+ issuing_base_id?: string;
101
+ issuing_system_id?: string;
102
+ issuing_system_name?: string;
103
+ mission_id: string;
104
+ objectives?: Array<ObjectiveProgressInfo>;
105
+ percent_complete: number;
106
+ rewards: MissionRewardsInfo;
107
+ template_id?: string;
108
+ title: string;
109
+ type: string;
110
+ };
70
111
  export type Alternate = {
71
112
  efficiency: string;
72
113
  name: string;
@@ -93,7 +134,6 @@ export type AmmoStats = {
93
134
  shield_damage_mod?: number;
94
135
  splash_pct?: number;
95
136
  untraceable?: boolean;
96
- wear_per_shot?: number;
97
137
  };
98
138
  export type AnalysisInput = {
99
139
  item_id: string;
@@ -125,24 +165,44 @@ export type AnalyzeMarketResponse = {
125
165
  export type AttackLogEntry = {
126
166
  after_def_buff?: number;
127
167
  after_stance?: number;
168
+ aoe_radius?: number;
169
+ armor_melt_applied_pct?: number;
128
170
  attacker_id: string;
129
171
  capital_bonus_pct?: number;
172
+ chain_targets?: number;
173
+ cpu_damage_pct?: number;
130
174
  damage_type: string;
131
175
  def_buff_pct?: number;
176
+ defense_components?: Array<DefenseComponentLog>;
132
177
  disrupted?: boolean;
178
+ dot_damage?: number;
179
+ dot_duration?: number;
180
+ dot_source_id?: string;
181
+ emergency_cloak_activated?: boolean;
182
+ emergency_cloak_duration?: number;
183
+ emergency_cloak_strength?: number;
133
184
  final_damage: number;
134
185
  flat_reduction_pct?: number;
135
186
  hit_chance: number;
136
187
  hit_roll: number;
137
188
  hit_success: boolean;
138
189
  hull_damage: number;
190
+ ignored_resistance_pct?: number;
191
+ lifesteal_pct?: number;
192
+ mine_duration?: number;
139
193
  off_buff_pct?: number;
140
194
  pre_hit_damage: number;
141
195
  raw_damage: number;
196
+ secondary_kind?: string;
142
197
  shield_damage: number;
198
+ shield_drain_requested?: number;
199
+ shield_drained?: number;
143
200
  shield_resist_pct?: number;
201
+ shield_transfer_pct?: number;
202
+ shield_transferred?: number;
144
203
  splash?: boolean;
145
204
  stance_mult?: number;
205
+ system_disable_ticks?: number;
146
206
  target_id: string;
147
207
  type_resist_pct?: number;
148
208
  weapon_skill_pct: number;
@@ -156,6 +216,9 @@ export type AttackNpcResponse = {
156
216
  kind: 'npc';
157
217
  target: string;
158
218
  target_name: string;
219
+ /**
220
+ * Target combatant type: pirate/empire_npc/creature/station/prize
221
+ */
159
222
  target_type: string;
160
223
  warning?: string;
161
224
  };
@@ -249,7 +312,7 @@ export type Base = {
249
312
  name: string;
250
313
  owner_id?: string;
251
314
  /**
252
- * Minimum pirate reputation required to dock; 0 means no requirement
315
+ * Non-zero marks this base as a pirate stronghold. Docking is gated on non-negative standing with that stronghold's crew, not on this number.
253
316
  */
254
317
  pirate_rep_required?: number;
255
318
  poi_id: string;
@@ -283,7 +346,7 @@ export type BaseCostResponse = {
283
346
  };
284
347
  export type BattleCombatState = {
285
348
  /**
286
- * Whether you can flee at all. False only when warp disruption is holding you in place.
349
+ * Whether your ship can make escape progress. False when warp-disrupted or when no fit crew can operate the ship. True still requires flee stance and the required escape ticks.
287
350
  */
288
351
  can_escape: boolean;
289
352
  /**
@@ -291,7 +354,7 @@ export type BattleCombatState = {
291
354
  */
292
355
  disruption_ticks?: number;
293
356
  /**
294
- * Your ship speed after disruption penalties. Higher than your pursuers means you can disengage; lower means you are pinned.
357
+ * Your ship speed after EM disruption penalties. Webifier penalties are reported separately and affect escape timing.
295
358
  */
296
359
  effective_speed: number;
297
360
  /**
@@ -307,7 +370,11 @@ export type BattleCombatState = {
307
370
  */
308
371
  flee_required?: number;
309
372
  /**
310
- * Largest zone distance any of your fitted weapons can fire across. An enemy whose zone_distance exceeds this is out of your range.
373
+ * Always present in the requesting participant's combat_state. True means no fit crew can operate your ship; false means personnel can operate it. Independent of warp_disrupted: both may be true. When true can_escape is false and the ship cannot fire or move. Not included for observers or other participants. Injured crew may recover automatically while the ship remains intact and uncaptured; ship status reports the recovery timing.
374
+ */
375
+ incapacitated: boolean;
376
+ /**
377
+ * Largest zone distance any fitted weapon can fire against your selected target after its targeting-range reductions. A target whose zone_distance exceeds this is out of range.
311
378
  */
312
379
  max_weapon_reach: number;
313
380
  /**
@@ -319,21 +386,27 @@ export type BattleCombatState = {
319
386
  */
320
387
  warp_disrupted: boolean;
321
388
  /**
322
- * An enemy stasis webifier is reducing your effective speed (slower escape and easier for enemies to hit you).
389
+ * Combined escape-speed penalty from enemy webifiers as a percentage. Webifier penalties add and cap at 75%.
390
+ */
391
+ web_strength_pct?: number;
392
+ /**
393
+ * An enemy stasis webifier is increasing the time you need to escape.
323
394
  */
324
395
  webbed: boolean;
325
396
  };
326
397
  export type BattleCommandResponse = ({
327
- action: 'advance' | 'engage' | 'retreat' | 'stance' | 'target';
398
+ action: 'advance' | 'engage' | 'retreat' | 'self_destruct' | 'stance' | 'target';
328
399
  } & BattleResponse) | ({
329
400
  action: 'help';
330
401
  } & CommandHelpResponse);
331
402
  export type BattleEndLogEntry = {
403
+ captures?: Array<CaptureLogEntry>;
332
404
  category: string;
333
405
  duration: number;
334
406
  outcome: string;
335
407
  participant_names?: Array<string>;
336
408
  participants: Array<ParticipantSummary>;
409
+ ships_captured?: number;
337
410
  ships_destroyed: number;
338
411
  total_damage: number;
339
412
  winning_side: number;
@@ -341,7 +414,9 @@ export type BattleEndLogEntry = {
341
414
  export type BattleEndedParticipantInfo = {
342
415
  damage_dealt: number;
343
416
  damage_taken: number;
417
+ is_npc?: boolean;
344
418
  kill_count: number;
419
+ kind?: string;
345
420
  player_id: string;
346
421
  side_id: number;
347
422
  survived: boolean;
@@ -352,12 +427,15 @@ export type BattleLogEntry = {
352
427
  autopilot?: Array<AutoPilotLogEntry>;
353
428
  battle_ended?: BattleEndLogEntry;
354
429
  battle_id: string;
430
+ boarding?: Array<BoardingStateLogEntry>;
355
431
  burns?: Array<BurnLogEntry>;
432
+ captures?: Array<CaptureLogEntry>;
356
433
  commands?: Array<CommandLogEntry>;
357
434
  flee?: Array<FleeLogEntry>;
358
435
  fuel?: Array<FuelLogEntry>;
359
436
  joins?: Array<JoinLogEntry>;
360
437
  kills?: Array<KillLogEntry>;
438
+ personnel_casualties?: Array<PersonnelCasualtyLogEntry>;
361
439
  regen?: Array<RegenLogEntry>;
362
440
  snapshots: Array<ParticipantSnapshot>;
363
441
  system_id: string;
@@ -378,10 +456,18 @@ export type BattleParticipant = {
378
456
  * Hull integrity as a percentage of max (0-100)
379
457
  */
380
458
  hull_pct?: number;
459
+ /**
460
+ * True for automated combatants: pirates, police, drones, creatures, stations, and intact prizes
461
+ */
462
+ is_npc?: boolean;
381
463
  /**
382
464
  * Ships you have destroyed this battle (self only)
383
465
  */
384
466
  kill_count?: number;
467
+ /**
468
+ * Combatant type: player/pirate/police/drone/creature/station/prize
469
+ */
470
+ kind?: string;
385
471
  player_id: string;
386
472
  /**
387
473
  * Shield strength as a percentage of max (0-100)
@@ -391,7 +477,7 @@ export type BattleParticipant = {
391
477
  ship_name?: string;
392
478
  side_id: number;
393
479
  /**
394
- * Combat stance this tick (self only): fire/evade/brace/flee
480
+ * Combat stance this tick (self only): fire/evade/brace/flee/board
395
481
  */
396
482
  stance?: string;
397
483
  /**
@@ -404,12 +490,20 @@ export type BattleParticipant = {
404
490
  */
405
491
  zone?: string;
406
492
  /**
407
- * Zone separation from the requesting player (0 = same ring; higher = farther). Compare against your combat_state.max_weapon_reach to see if you can fire. Omitted when the requester is not a participant.
493
+ * Zone separation from the requesting player (0 = both ships at point blank; higher = farther). Compare against your combat_state.max_weapon_reach to see if you can fire. Omitted when the requester is not a participant.
408
494
  */
409
495
  zone_distance?: number;
410
496
  };
411
497
  export type BattleParticipantInfo = {
412
498
  hull_pct?: number;
499
+ /**
500
+ * True for server-controlled combatants including pirates
501
+ */
502
+ is_npc?: boolean;
503
+ /**
504
+ * Combatant kind: player
505
+ */
506
+ kind?: string;
413
507
  player_id: string;
414
508
  shield_pct?: number;
415
509
  ship_class?: string;
@@ -420,12 +514,25 @@ export type BattleParticipantInfo = {
420
514
  zone: string;
421
515
  };
422
516
  export type BattleResponse = {
423
- action: 'advance' | 'retreat' | 'stance' | 'target' | 'engage';
517
+ action: 'advance' | 'retreat' | 'stance' | 'target' | 'engage' | 'self_destruct';
424
518
  battle_id?: string;
519
+ marines_requested?: number;
425
520
  message: string;
521
+ operation_id?: string;
522
+ phase?: string;
523
+ progress?: string;
524
+ self_destruct_countdown?: number;
525
+ /**
526
+ * Resulting combat stance: fire/evade/brace/flee/board
527
+ */
426
528
  stance?: string;
427
529
  target_id?: string;
428
530
  };
531
+ export type BattleSelfDestructState = {
532
+ battle_id: string;
533
+ detonate_tick: number;
534
+ started_tick: number;
535
+ };
429
536
  export type BattleSide = {
430
537
  faction_id?: string;
431
538
  faction_name?: string;
@@ -446,14 +553,17 @@ export type BattleSideSummary = {
446
553
  };
447
554
  export type BattleSummaryResponse = {
448
555
  battle_id: string;
556
+ captures?: Array<CaptureLogEntry>;
449
557
  category?: string;
450
558
  destroyed_names?: Array<string>;
451
559
  duration_ticks: number;
452
560
  ended_at?: string;
561
+ has_station: boolean;
453
562
  origin_poi?: string;
454
563
  outcome: string;
455
564
  participant_count: number;
456
565
  player_names?: Array<string>;
566
+ ships_captured?: number;
457
567
  ships_destroyed: number;
458
568
  sides: Array<BattleSideSummary>;
459
569
  start_tick: number;
@@ -469,14 +579,51 @@ export type BattleTopDamage = {
469
579
  username: string;
470
580
  };
471
581
  export type BerthCount = {
582
+ /**
583
+ * Berths of this class still free once citizens aboard are seated
584
+ */
472
585
  free: number;
586
+ /**
587
+ * Berths of this class on the hull plus fitted cabins
588
+ */
473
589
  total: number;
474
590
  };
475
591
  export type BerthsView = {
592
+ /**
593
+ * Total and free business berths
594
+ */
476
595
  business: BerthCount;
596
+ /**
597
+ * Total and free economy berths
598
+ */
477
599
  economy: BerthCount;
600
+ /**
601
+ * Total and free first berths
602
+ */
478
603
  first: BerthCount;
479
604
  };
605
+ export type BoardingPublicStatus = {
606
+ attacker_id?: string;
607
+ operation_id: string;
608
+ phase: string;
609
+ progress?: string;
610
+ self_destruct_countdown?: number;
611
+ target_id?: string;
612
+ };
613
+ export type BoardingStateLogEntry = {
614
+ actor_id?: string;
615
+ attacker_casualties?: boolean;
616
+ casualties_occurred?: boolean;
617
+ defender_casualties?: boolean;
618
+ destroyed?: boolean;
619
+ event: string;
620
+ hull_damage?: number;
621
+ operation_id: string;
622
+ phase: string;
623
+ reason?: string;
624
+ self_destruct_countdown?: number;
625
+ target_id?: string;
626
+ };
480
627
  export type BrowseShipsResponse = {
481
628
  base_id: string;
482
629
  base_name: string;
@@ -696,7 +843,7 @@ export type BulkSellOrderResult = {
696
843
  total_earned?: number;
697
844
  };
698
845
  /**
699
- * The single-item storage response for this entry (deposit, withdraw, gift, or faction/empire variant).
846
+ * The single-item storage response for this entry (deposit, withdraw, gift, or faction/empire variant). Successful station gifts use action=send_gift and canonical recipient=station:<base ID>; remaining source inventory reflects the completed bulk batch, including zero.
700
847
  */
701
848
  export type BulkStorageItemData = {
702
849
  [key: string]: unknown;
@@ -721,6 +868,9 @@ export type BulkStorageResponse = {
721
868
  requested: number;
722
869
  results: Array<BulkStorageItemResult>;
723
870
  succeeded: number;
871
+ /**
872
+ * Storage destination or source. Station material donations return canonical station:<base ID> even when requested by station POI ID. Omitted when not applicable.
873
+ */
724
874
  target?: string;
725
875
  };
726
876
  export type BulkSummary = {
@@ -731,6 +881,7 @@ export type BulkSummary = {
731
881
  export type BurnLogEntry = {
732
882
  damage: number;
733
883
  destroyed?: boolean;
884
+ source_id?: string;
734
885
  target_id: string;
735
886
  ticks_remaining: number;
736
887
  };
@@ -841,6 +992,15 @@ export type CaptainsLogListResponse = {
841
992
  max_entries: number;
842
993
  total_count: number;
843
994
  };
995
+ export type CaptureLogEntry = {
996
+ boarding_operation_id: string;
997
+ captor_id: string;
998
+ captor_username: string;
999
+ former_owner_id: string;
1000
+ former_owner_username: string;
1001
+ ship_class: string;
1002
+ ship_id: string;
1003
+ };
844
1004
  /**
845
1005
  * An item stack in cargo or storage.
846
1006
  */
@@ -875,6 +1035,7 @@ export type CarrierProfile = {
875
1035
  delivered_value: number;
876
1036
  last_consequence_at?: string;
877
1037
  last_recovery_at?: string;
1038
+ late_deliveries: number;
878
1039
  outstanding_debt: number;
879
1040
  priority_deliveries: number;
880
1041
  returns: number;
@@ -950,12 +1111,16 @@ export type CatalogShipSummary = {
950
1111
  base_shield_recharge: number;
951
1112
  base_speed: number;
952
1113
  based_on?: string;
1114
+ boarding_defense_bonus_pct?: number;
953
1115
  build_materials?: Array<RecipeInput>;
954
1116
  build_time: number;
1117
+ capture_policy?: string;
1118
+ capture_policy_reason?: string;
955
1119
  cargo_capacity: number;
956
1120
  category?: string;
957
1121
  class: string;
958
1122
  cpu_capacity: number;
1123
+ crew_capacity: number;
959
1124
  default_loadout_version?: number;
960
1125
  default_modules?: Array<string>;
961
1126
  defense_slots: number;
@@ -965,8 +1130,11 @@ export type CatalogShipSummary = {
965
1130
  hidden?: boolean;
966
1131
  id: string;
967
1132
  inherent_capabilities?: Array<InherentCapability>;
1133
+ latch_resistance?: number;
968
1134
  legacy?: boolean;
969
1135
  lore?: string;
1136
+ marine_capacity: number;
1137
+ minimum_crew: number;
970
1138
  name: string;
971
1139
  npc_role?: string;
972
1140
  passive_recipes?: Array<string>;
@@ -1065,6 +1233,15 @@ export type ClaimInsuranceResponse = {
1065
1233
  message: string;
1066
1234
  policies: Array<InsurancePolicy>;
1067
1235
  };
1236
+ export type ClaimPrizeResponse = {
1237
+ crew_assigned: number;
1238
+ crew_disposition: string;
1239
+ destination_base_id: string;
1240
+ idempotent: boolean;
1241
+ prize_id: string;
1242
+ ship_id: string;
1243
+ status: string;
1244
+ };
1068
1245
  export type ClientConnectionInfo = {
1069
1246
  distance?: number;
1070
1247
  name: string;
@@ -1117,6 +1294,42 @@ export type CombatLogSummary = {
1117
1294
  [key: string]: number;
1118
1295
  };
1119
1296
  };
1297
+ export type CombatSpecialEffects = {
1298
+ anti_drone_pct?: number;
1299
+ anti_missile_pct?: number;
1300
+ aoe_radius?: number;
1301
+ armor_melt_pct?: number;
1302
+ auto_cloak_on_shield_failure?: boolean;
1303
+ chain_targets?: number;
1304
+ cpu_damage_pct?: number;
1305
+ damage_boost_on_hit?: boolean;
1306
+ dot_damage?: number;
1307
+ dot_duration?: number;
1308
+ duration_ticks?: number;
1309
+ energy_damage_pct?: number;
1310
+ hull_damage_pct?: number;
1311
+ ignore_all_defense?: boolean;
1312
+ ignore_resistance_pct?: number;
1313
+ lifesteal_pct?: number;
1314
+ low_cpu_requirement?: boolean;
1315
+ mine_capacity?: number;
1316
+ mine_detection?: number;
1317
+ mine_duration?: number;
1318
+ mine_tracking_speed?: number;
1319
+ module_disable_ticks?: number;
1320
+ phase_dodge_pct?: number;
1321
+ phase_strike_pct?: number;
1322
+ rage_damage_scaling?: boolean;
1323
+ random_damage_pct?: number;
1324
+ reflect_energy_pct?: number;
1325
+ repair_from_salvage?: boolean;
1326
+ shield_damage_pct?: number;
1327
+ shield_drain?: number;
1328
+ shield_phase?: boolean;
1329
+ shield_transfer_pct?: number;
1330
+ shock_damage?: number;
1331
+ system_disable_ticks?: number;
1332
+ };
1120
1333
  export type CommandHelpAction = {
1121
1334
  action: string;
1122
1335
  description: string;
@@ -1165,6 +1378,7 @@ export type CommissionActive = {
1165
1378
  ticks_remaining?: number;
1166
1379
  };
1167
1380
  export type CommissionEntry = {
1381
+ bare_hull: boolean;
1168
1382
  base_id?: string;
1169
1383
  base_name?: string;
1170
1384
  build_complete_tick?: number;
@@ -1175,59 +1389,100 @@ export type CommissionEntry = {
1175
1389
  credits_paid?: number;
1176
1390
  earmarked_credits?: number;
1177
1391
  material_cost_estimate?: number;
1392
+ /**
1393
+ * Present on sourcing entries once at least one unit has been acquired. This cumulative count includes materials_initially_supplied plus later player donations and yard purchases. An absent item ID means zero. During sourcing each value is greater than or equal to materials_initially_supplied for the same item.
1394
+ */
1178
1395
  materials_gathered?: {
1179
1396
  [key: string]: number;
1180
1397
  };
1398
+ /**
1399
+ * Present when the commission began with player-supplied materials. Values are the units contributed at placement and never include later donations or yard purchases. An absent item ID means zero. During sourcing each value is less than or equal to materials_gathered for the same item.
1400
+ */
1401
+ materials_initially_supplied?: {
1402
+ [key: string]: number;
1403
+ };
1181
1404
  materials_provided: boolean;
1405
+ /**
1406
+ * Present on sourcing entries while materials remain missing. Each quantity equals max(required_materials[item_id] - materials_gathered[item_id], 0). An omitted item or omitted field means 0 units remain missing. Item names are display metadata.
1407
+ */
1408
+ materials_to_source?: Array<CargoItem>;
1409
+ /**
1410
+ * Present on sourcing entries. Values are the total units required for the commissioned hull and its default loadout unless bare_hull is true. An absent item ID means zero.
1411
+ */
1182
1412
  required_materials?: {
1183
1413
  [key: string]: number;
1184
1414
  };
1185
1415
  ship_class_id: string;
1186
1416
  ship_name?: string;
1417
+ source_missing_materials?: boolean;
1187
1418
  status: string;
1188
1419
  ticks_remaining?: number;
1189
1420
  };
1190
1421
  export type CommissionMaterialStatus = {
1422
+ /**
1423
+ * True exactly when gathered is greater than or equal to needed.
1424
+ */
1191
1425
  complete: boolean;
1426
+ /**
1427
+ * Cumulative quantity allocated to the commission from all sources.
1428
+ */
1192
1429
  gathered: number;
1193
1430
  item_id: string;
1194
1431
  name: string;
1432
+ /**
1433
+ * Total quantity required for this material; this is not the remaining deficit.
1434
+ */
1195
1435
  needed: number;
1196
1436
  };
1197
1437
  export type CommissionQuoteResponse = {
1198
1438
  auto_docked?: boolean;
1199
1439
  auto_undocked?: boolean;
1440
+ bare_hull: boolean;
1200
1441
  blockers?: Array<string>;
1201
1442
  build_materials?: Array<CargoItem>;
1202
1443
  build_time?: number;
1203
1444
  can_afford_credits_only: boolean;
1445
+ can_afford_partial_sourcing: boolean;
1204
1446
  can_afford_provide_materials: boolean;
1205
1447
  can_commission: boolean;
1206
1448
  credits_only_available: boolean;
1207
1449
  credits_only_total: number;
1450
+ faction_funded_only?: boolean;
1208
1451
  labor_cost?: number;
1209
1452
  material_cost?: number;
1453
+ materials_supplied?: Array<CargoItem>;
1454
+ materials_to_source?: Array<CargoItem>;
1210
1455
  message: string;
1456
+ partial_sourcing_total?: number;
1211
1457
  player_credits?: number;
1212
1458
  provide_materials_total: number;
1459
+ sales_tax?: number;
1213
1460
  ship_class: string;
1214
1461
  ship_name?: string;
1215
1462
  shipyard_tier_here?: number;
1216
1463
  shipyard_tier_required?: number;
1464
+ source_missing_materials: boolean;
1465
+ sourcing_material_cost?: number;
1217
1466
  yard_margin?: number;
1218
1467
  };
1219
1468
  export type CommissionShipResponse = {
1220
1469
  auto_docked?: boolean;
1221
1470
  auto_undocked?: boolean;
1471
+ bare_hull: boolean;
1222
1472
  build_time?: number;
1223
1473
  commission_id: string;
1224
1474
  credits_left: number;
1225
1475
  credits_paid: number;
1226
1476
  labor_cost?: number;
1227
1477
  material_cost?: number;
1478
+ materials_supplied?: Array<CargoItem>;
1479
+ materials_to_source?: Array<CargoItem>;
1228
1480
  message: string;
1481
+ sales_tax?: number;
1229
1482
  ship_class: string;
1230
1483
  ship_name?: string;
1484
+ source_missing_materials: boolean;
1485
+ sourcing_material_cost?: number;
1231
1486
  status: string;
1232
1487
  yard_margin?: number;
1233
1488
  };
@@ -1247,11 +1502,16 @@ export type CompleteMissionResponse = {
1247
1502
  [key: string]: string;
1248
1503
  };
1249
1504
  credits_earned: number;
1505
+ credits_promised?: number;
1506
+ credits_shortfall?: number;
1250
1507
  items_received?: {
1251
1508
  [key: string]: number;
1252
1509
  };
1253
1510
  message: string;
1254
1511
  mission_id: string;
1512
+ reputation_changes?: {
1513
+ [key: string]: number;
1514
+ };
1255
1515
  skill_xp_gained?: {
1256
1516
  [key: string]: number;
1257
1517
  };
@@ -1284,6 +1544,8 @@ export type CraftCommandResponse = ({
1284
1544
  } & JobCancelResponse) | ({
1285
1545
  kind: 'bulk_cancel';
1286
1546
  } & BulkJobCancelResponse) | ({
1547
+ kind: 'retarget';
1548
+ } & JobRetargetResponse) | ({
1287
1549
  kind: 'package';
1288
1550
  } & PackageJobResponse);
1289
1551
  export type CraftJobResponse = {
@@ -1453,6 +1715,27 @@ export type DeclineMissionResponse = {
1453
1715
  template_id: string;
1454
1716
  title: string;
1455
1717
  };
1718
+ export type DefenseComponentLog = {
1719
+ after_flat_reduction: number;
1720
+ after_shield_resist: number;
1721
+ after_type_resist: number;
1722
+ armor_bypass_pct: number;
1723
+ damage_type: string;
1724
+ final_damage: number;
1725
+ flat_reduction_pct: number;
1726
+ hull_damage: number;
1727
+ ignore_all_defense: boolean;
1728
+ ignored_resistance_pct?: number;
1729
+ incoming_damage: number;
1730
+ lifesteal_heal?: number;
1731
+ lifesteal_pct?: number;
1732
+ shield_bypass_pct: number;
1733
+ shield_damage: number;
1734
+ shield_resist_pct: number;
1735
+ type_resist_pct: number;
1736
+ weapon_instance_id: string;
1737
+ weapon_name: string;
1738
+ };
1456
1739
  export type DeleteNoteResponse = {
1457
1740
  message: string;
1458
1741
  note_id: string;
@@ -1552,6 +1835,37 @@ export type DockResponse = {
1552
1835
  unread_chat_note?: string;
1553
1836
  your_facilities?: Array<FacilitySummary>;
1554
1837
  };
1838
+ export type DroneBaySlot = {
1839
+ id: string;
1840
+ name?: string;
1841
+ type: string;
1842
+ };
1843
+ export type DroneBayView = {
1844
+ /**
1845
+ * Total drone bandwidth available
1846
+ */
1847
+ bandwidth_total: number;
1848
+ /**
1849
+ * Bandwidth consumed by deployed drones
1850
+ */
1851
+ bandwidth_used: number;
1852
+ /**
1853
+ * Bay slots granted by fitted modules
1854
+ */
1855
+ bay_capacity: number;
1856
+ /**
1857
+ * Drones owned, in bay plus deployed
1858
+ */
1859
+ bay_count: number;
1860
+ /**
1861
+ * Drones currently deployed
1862
+ */
1863
+ deployed_count: number;
1864
+ /**
1865
+ * Drones racked in the bay, not deployed
1866
+ */
1867
+ in_bay: Array<DroneBaySlot>;
1868
+ };
1555
1869
  export type DroneInfo = {
1556
1870
  cargo_pct: number;
1557
1871
  has_script: boolean;
@@ -1644,6 +1958,24 @@ export type EmpirePolicySnapshot = {
1644
1958
  stateless_sales_tax_bps: number;
1645
1959
  tax_delinquency_bounty_per_credit: number;
1646
1960
  };
1961
+ export type EmpireStanding = {
1962
+ /**
1963
+ * Decay target; rep drifts toward this over time
1964
+ */
1965
+ baseline: number;
1966
+ /**
1967
+ * Time detained until by this empire; omitted when not jailed
1968
+ */
1969
+ jailed_until?: string;
1970
+ /**
1971
+ * Sum of uncleaned crime bounties with this empire (credits)
1972
+ */
1973
+ outstanding_bounty: number;
1974
+ /**
1975
+ * Current rep score, range -100 to +100
1976
+ */
1977
+ reputation: number;
1978
+ };
1647
1979
  export type EnrichedWreck = {
1648
1980
  cargo: Array<ShipCargoItem>;
1649
1981
  created_at: string;
@@ -1757,6 +2089,12 @@ export type FacilityDefSummary = {
1757
2089
  category: string;
1758
2090
  description: string;
1759
2091
  faction_cap?: number;
2092
+ faction_crew_capacity?: number;
2093
+ faction_marine_capacity?: number;
2094
+ faction_medical_capacity?: number;
2095
+ faction_medical_refill_per_cycle?: number;
2096
+ faction_medical_supply_item?: string;
2097
+ faction_medical_units_per_item?: number;
1760
2098
  faction_service?: string;
1761
2099
  labor_cost: number;
1762
2100
  level: number;
@@ -1775,6 +2113,7 @@ export type FacilityDefinition = {
1775
2113
  build_materials?: Array<RecipeInput>;
1776
2114
  build_time: number;
1777
2115
  category: string;
2116
+ combat_repair_rate?: number;
1778
2117
  degraded_description?: string;
1779
2118
  deposit_to_empire_reserves?: boolean;
1780
2119
  description: string;
@@ -1784,6 +2123,12 @@ export type FacilityDefinition = {
1784
2123
  expansion_of?: string;
1785
2124
  expansion_scale?: number;
1786
2125
  faction_cap?: number;
2126
+ faction_crew_capacity?: number;
2127
+ faction_marine_capacity?: number;
2128
+ faction_medical_capacity?: number;
2129
+ faction_medical_refill_per_cycle?: number;
2130
+ faction_medical_supply_item?: string;
2131
+ faction_medical_units_per_item?: number;
1787
2132
  faction_service_type?: string;
1788
2133
  fleet_upkeep?: boolean;
1789
2134
  fuel_capacity?: number;
@@ -1819,6 +2164,10 @@ export type FacilityDefinition = {
1819
2164
  scan_falloff?: number;
1820
2165
  scan_power?: number;
1821
2166
  self_repair_rate?: number;
2167
+ service_pool_capacity?: number;
2168
+ service_pool_refill_per_cycle?: number;
2169
+ service_pool_supply_item?: string;
2170
+ service_pool_units_per_item?: number;
1822
2171
  service_type?: string;
1823
2172
  station_armor?: number;
1824
2173
  station_hull_hp?: number;
@@ -1828,6 +2177,7 @@ export type FacilityDefinition = {
1828
2177
  transit_deadline_bonus?: number;
1829
2178
  unique?: boolean;
1830
2179
  upgrades_from?: string;
2180
+ weapon_accuracy_bonus?: number;
1831
2181
  weapon_cooldown?: number;
1832
2182
  weapon_damage?: number;
1833
2183
  weapon_damage_type?: string;
@@ -1858,8 +2208,17 @@ export type FacilityEntry = {
1858
2208
  damaged?: boolean;
1859
2209
  description: string;
1860
2210
  dining_points?: number;
2211
+ /**
2212
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
2213
+ */
2214
+ dismantling?: boolean;
1861
2215
  facility_id: string;
2216
+ faction_crew_capacity?: number;
1862
2217
  faction_id?: string;
2218
+ faction_marine_capacity?: number;
2219
+ faction_medical_capacity?: number;
2220
+ faction_medical_refill_per_cycle?: number;
2221
+ faction_medical_supply_item?: string;
1863
2222
  faction_service?: string;
1864
2223
  is_recycler?: boolean;
1865
2224
  labor_per_cycle?: number;
@@ -1876,6 +2235,9 @@ export type FacilityEntry = {
1876
2235
  production?: FacilityProduction;
1877
2236
  recipe_id?: string;
1878
2237
  rent_paid_until_tick?: number;
2238
+ /**
2239
+ * Stored rent rate in credits per facility cycle (100 ticks). Visible only for your or your faction's facilities; omitted means zero or not disclosed. No rent is billed while damaged or under_construction or dismantling. The stored rate applies after repair or construction subject to repricing. Legacy inactive facilities remain billable.
2240
+ */
1879
2241
  rent_per_cycle?: number;
1880
2242
  repair_complete_tick?: number;
1881
2243
  service?: string;
@@ -1902,15 +2264,31 @@ export type FacilityFactionBuildResponse = {
1902
2264
  };
1903
2265
  export type FacilityFactionEntry = {
1904
2266
  capacity?: number;
2267
+ crew_capacity?: number;
1905
2268
  custom_name?: string;
2269
+ /**
2270
+ * Set when this facility was knocked out in battle. It does nothing until repaired (facility action repair). A station rebuilds its own faction's facilities automatically out of that faction's storage at the station
2271
+ */
2272
+ damaged?: boolean;
1906
2273
  facility_id: string;
1907
2274
  faction_service: string;
1908
2275
  level: number;
2276
+ marine_capacity?: number;
2277
+ medical_capacity?: number;
2278
+ medical_refill_per_cycle?: number;
2279
+ medical_supply_item?: string;
1909
2280
  missed_rent_cycles?: number;
1910
2281
  name: string;
2282
+ /**
2283
+ * Stored rent rate in credits per facility cycle (100 ticks). Rent is billed only when status is active; paused while damaged or repairing or under_construction or dismantling. The stored rate applies after repair or construction subject to repricing. Zero means no recurring rent; existing missed_rent_cycles remain owed while paused.
2284
+ */
1911
2285
  rent_per_cycle: number;
1912
2286
  rental_fee_per_run?: number;
1913
- status: string;
2287
+ repair_complete_tick?: number;
2288
+ /**
2289
+ * Only active facilities produce or provide their service; damaged ones need facility action repair; repairing ones are already paid for and come back at repair_complete_tick. Dismantling facilities are offline and will be removed. Rent is paused for every status except active.
2290
+ */
2291
+ status: 'under_construction' | 'damaged' | 'repairing' | 'active' | 'dismantling';
1914
2292
  ticks_until_complete?: number;
1915
2293
  type: string;
1916
2294
  };
@@ -1924,12 +2302,18 @@ export type FacilityFactionListResponse = {
1924
2302
  };
1925
2303
  export type FacilityFactionOwnedResponse = {
1926
2304
  action: 'faction_owned';
2305
+ /**
2306
+ * Credits owed across all facilities: sum rent_per_cycle multiplied by missed_rent_cycles including paused facilities. Pausing billing does not erase existing arrears. Omitted means zero.
2307
+ */
1927
2308
  arrears_owed?: number;
1928
2309
  facilities: Array<FactionOwnedFacilityEntry>;
1929
2310
  faction_id: string;
1930
2311
  grace_cycles?: number;
1931
2312
  hint?: string;
1932
2313
  note?: string;
2314
+ /**
2315
+ * Current faction rent in credits per facility cycle (100 ticks): sum rent_per_cycle for facilities where damaged and under_construction and dismantling are all false. Missing pause flags mean false. Zero means no current recurring rent; excludes existing arrears. Legacy inactive facilities remain billable.
2316
+ */
1933
2317
  total_rent_per_cycle: number;
1934
2318
  };
1935
2319
  export type FacilityFactionStorage = {
@@ -1976,15 +2360,31 @@ export type FacilityListForSaleResponse = {
1976
2360
  };
1977
2361
  export type FacilityListResponse = {
1978
2362
  action: 'list';
2363
+ /**
2364
+ * Canonical ID of the station containing every listed facility and both per-station rent summaries.
2365
+ */
1979
2366
  base_id: string;
1980
2367
  construction?: StationConstructionResponse;
2368
+ /**
2369
+ * Your faction's facilities at this base including paused facilities. Per-facility rent_per_cycle is the stored rate; faction_rent totals only currently billable facilities. Empty means your faction owns none here.
2370
+ */
1981
2371
  faction_facilities: Array<FacilityEntry>;
2372
+ /**
2373
+ * Current recurring rent and existing arrears for faction_facilities. Omitted when your faction owns no facilities here; present with zero recurring rent when all its facilities have paused billing.
2374
+ */
1982
2375
  faction_rent?: FacilityRentSummary;
1983
2376
  life_support?: StationLifeSupportStatus;
2377
+ /**
2378
+ * Your facilities at this base including damaged and constructing and dismantling facilities. Per-facility rent_per_cycle is the stored rate; player_rent totals only currently billable facilities. Empty means you own none here.
2379
+ */
1984
2380
  player_facilities: Array<FacilityEntry>;
2381
+ /**
2382
+ * Current recurring rent and existing arrears for player_facilities. Omitted when you own no facilities here; present with zero recurring rent when all your facilities have paused billing.
2383
+ */
1985
2384
  player_rent?: FacilityRentSummary;
1986
2385
  power?: StationPowerStatus;
1987
2386
  public_facilities?: Array<FacilityEntry>;
2387
+ service_pools?: StationServicePools;
1988
2388
  station_facilities: Array<FacilityEntry>;
1989
2389
  };
1990
2390
  export type FacilityListingEntry = {
@@ -2072,11 +2472,23 @@ export type FacilityRecipeInfo = {
2072
2472
  outputs: Array<ItemQuantity>;
2073
2473
  };
2074
2474
  export type FacilityRentSummary = {
2475
+ /**
2476
+ * Credits owed across all facilities: sum rent_per_cycle multiplied by missed_rent_cycles including paused facilities. Pausing billing does not erase existing arrears. Omitted means zero.
2477
+ */
2075
2478
  arrears_owed?: number;
2479
+ /**
2480
+ * Approximate credits per day at the default 10-second tick: total_rent_per_cycle multiplied by 86 cycles. Zero means no current recurring rent; excludes arrears and future rate changes.
2481
+ */
2076
2482
  est_rent_per_day: number;
2483
+ /**
2484
+ * Number of owned facilities in this summary including facilities whose billing is paused.
2485
+ */
2077
2486
  facilities: number;
2078
2487
  grace_cycles?: number;
2079
2488
  note?: string;
2489
+ /**
2490
+ * Current rent in credits per facility cycle (100 ticks): sum rent_per_cycle for facilities where damaged and under_construction and dismantling are all false. Missing pause flags mean false. Zero means no current recurring rent; excludes existing arrears. Legacy inactive facilities remain billable.
2491
+ */
2080
2492
  total_rent_per_cycle: number;
2081
2493
  };
2082
2494
  export type FacilityRepairMaterial = {
@@ -2099,7 +2511,13 @@ export type FacilitySummary = {
2099
2511
  missed_rent_cycles?: number;
2100
2512
  name: string;
2101
2513
  recipe_id?: string;
2514
+ /**
2515
+ * Stored rent rate in credits per facility cycle (100 ticks). Rent is paused when status is damaged or under_construction or dismantling. The stored rate applies after repair or construction subject to repricing. Zero means no recurring rent; existing missed_rent_cycles remain owed while paused.
2516
+ */
2102
2517
  rent_per_cycle: number;
2518
+ /**
2519
+ * Facility status: enabled or legacy disabled facilities are billable; damaged or under_construction or dismantling facilities have paused rent. Dismantling facilities will be removed.
2520
+ */
2103
2521
  status: string;
2104
2522
  ticks_until_complete?: number;
2105
2523
  type: string;
@@ -2138,6 +2556,10 @@ export type FacilityTypeDetailResponse = {
2138
2556
  requires_service_name?: string;
2139
2557
  requires_service_type?: string;
2140
2558
  satisfied_description?: string;
2559
+ service_pool_capacity?: number;
2560
+ service_pool_refill_per_cycle?: number;
2561
+ service_pool_supply_item?: string;
2562
+ service_pool_units_per_item?: number;
2141
2563
  type_id: string;
2142
2564
  upgrades_from?: string;
2143
2565
  upgrades_from_name?: string;
@@ -2469,6 +2891,7 @@ export type FactionInfoResponse = {
2469
2891
  name: string;
2470
2892
  owned_bases: number;
2471
2893
  peace_proposals?: Array<FactionPeaceProposal>;
2894
+ personnel?: FactionPersonnelEmployment;
2472
2895
  primary_color: string;
2473
2896
  roles?: Array<FactionRoleInfo>;
2474
2897
  secondary_color: string;
@@ -2549,11 +2972,18 @@ export type FactionOwnedFacilityEntry = {
2549
2972
  base_name: string;
2550
2973
  custom_name?: string;
2551
2974
  damaged?: boolean;
2975
+ /**
2976
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
2977
+ */
2978
+ dismantling?: boolean;
2552
2979
  facility_id: string;
2553
2980
  labor_per_run: number;
2554
2981
  missed_rent_cycles?: number;
2555
2982
  name: string;
2556
2983
  power_throttled?: boolean;
2984
+ /**
2985
+ * Stored rent rate in credits per facility cycle (100 ticks). No rent is billed while damaged or under_construction or dismantling. The stored rate applies after repair or construction subject to repricing. Zero means no recurring rent. Legacy inactive facilities remain billable.
2986
+ */
2557
2987
  rent_per_cycle: number;
2558
2988
  rental_fee_per_run?: number;
2559
2989
  repair_complete_tick?: number;
@@ -2567,6 +2997,42 @@ export type FactionPeaceProposal = {
2567
2997
  proposed_at: string;
2568
2998
  terms?: string;
2569
2999
  };
3000
+ export type FactionPersonnelEmployment = {
3001
+ assigned_prize_crew: number;
3002
+ assigned_prize_marines: number;
3003
+ fit_crew: number;
3004
+ fit_marines: number;
3005
+ inbound_crew: number;
3006
+ injured_crew: number;
3007
+ injured_marines: number;
3008
+ owned_ship_crew: number;
3009
+ owned_ship_marines: number;
3010
+ reserve_crew: number;
3011
+ reserve_marines: number;
3012
+ total_crew: number;
3013
+ total_marines: number;
3014
+ };
3015
+ export type FactionPersonnelResponse = {
3016
+ action: string;
3017
+ auto_docked?: boolean;
3018
+ auto_undocked?: boolean;
3019
+ base_id: string;
3020
+ cost?: number;
3021
+ crew_capacity: number;
3022
+ crew_moved?: number;
3023
+ crew_pool_remaining?: number;
3024
+ fit_crew: number;
3025
+ fit_marines: number;
3026
+ inbound_crew: number;
3027
+ inbound_prizes: number;
3028
+ injured_crew: number;
3029
+ injured_marines: number;
3030
+ marine_capacity: number;
3031
+ marine_pool_remaining?: number;
3032
+ marines_moved?: number;
3033
+ medical_available: number;
3034
+ medical_capacity: number;
3035
+ };
2570
3036
  export type FactionPostMissionResponse = {
2571
3037
  auto_docked?: boolean;
2572
3038
  auto_undocked?: boolean;
@@ -2619,9 +3085,21 @@ export type FactionQueryTradeIntelResponse = {
2619
3085
  total: number;
2620
3086
  };
2621
3087
  export type FactionRemoveAllyResponse = {
3088
+ /**
3089
+ * Always present. Human-readable result explaining ally removal or that any pending alliance proposals between the factions have been cleared.
3090
+ */
2622
3091
  message: string;
3092
+ /**
3093
+ * Always present. True if an ally link was removed from either faction. False means neither ally link existed; pending alliance proposals in both directions (incoming and outgoing) are still cleared. This flag reports ally-link removal only and does not indicate whether proposals changed.
3094
+ */
2623
3095
  removed: boolean;
3096
+ /**
3097
+ * Always present. Canonical ID of the target faction after resolving the requested faction ID or tag.
3098
+ */
2624
3099
  target_faction_id: string;
3100
+ /**
3101
+ * Always present. Display name of the target faction.
3102
+ */
2625
3103
  target_name: string;
2626
3104
  };
2627
3105
  export type FactionRemoveEnemyResponse = {
@@ -3099,6 +3577,7 @@ export type GetBaseResponse = {
3099
3577
  fuel_tax_per_unit?: number;
3100
3578
  life_support?: StationLifeSupportStatus;
3101
3579
  power?: StationPowerStatus;
3580
+ repairs?: StationRepairResponse;
3102
3581
  services: Array<string>;
3103
3582
  };
3104
3583
  export type GetBattleLogResponse = {
@@ -3119,7 +3598,14 @@ export type GetBattleLogResponse = {
3119
3598
  };
3120
3599
  export type GetBattleStatusResponse = {
3121
3600
  battle_id: string;
3601
+ boarding?: Array<BoardingPublicStatus>;
3602
+ /**
3603
+ * The requesting participant's own tactical state. Present only when is_participant is true; omitted for observers. Never describes another participant.
3604
+ */
3122
3605
  combat_state?: BattleCombatState;
3606
+ /**
3607
+ * True when the requesting player participates in this battle and receives their own combat_state; false for an observer.
3608
+ */
3123
3609
  is_participant: boolean;
3124
3610
  participants?: Array<BattleParticipant>;
3125
3611
  sides?: Array<BattleSide>;
@@ -3207,6 +3693,8 @@ export type GetNearbyResponse = {
3207
3693
  pirate_count: number;
3208
3694
  pirates: Array<PirateInfo>;
3209
3695
  poi_id: string;
3696
+ prize_count: number;
3697
+ prizes: Array<PrizeInfo>;
3210
3698
  unknown_signature?: boolean;
3211
3699
  };
3212
3700
  export type GetNotesResponse = {
@@ -3370,6 +3858,7 @@ export type InspectPackageData = {
3370
3858
  label: string;
3371
3859
  owner: InspectPackageOwner;
3372
3860
  package_id: string;
3861
+ shipment?: InspectPackageShipment;
3373
3862
  size: number;
3374
3863
  };
3375
3864
  export type InspectPackageOwner = {
@@ -3378,6 +3867,21 @@ export type InspectPackageOwner = {
3378
3867
  tag?: string;
3379
3868
  type: 'player' | 'faction';
3380
3869
  };
3870
+ export type InspectPackageShipment = {
3871
+ base_reward: number;
3872
+ destination_base_id: string;
3873
+ destination_name?: string;
3874
+ destination_system?: string;
3875
+ failure_debt: number;
3876
+ late: boolean;
3877
+ late_fee_if_delivered_now?: number;
3878
+ payout_if_delivered_now: number;
3879
+ role: 'carrier' | 'shipper' | 'recipient' | 'invited_carrier';
3880
+ shipment_id: string;
3881
+ status: string;
3882
+ ticks_to_deadline: number;
3883
+ ticks_to_recovery_deadline: number;
3884
+ };
3381
3885
  export type InspectResponse = {
3382
3886
  base?: GetBaseResponse;
3383
3887
  catalog?: {
@@ -3477,6 +3981,7 @@ export type IntelResource = {
3477
3981
  export type Item = {
3478
3982
  base_value: number;
3479
3983
  category: string;
3984
+ compression?: string;
3480
3985
  description: string;
3481
3986
  effect?: ItemEffect;
3482
3987
  extracted_by?: string;
@@ -3572,9 +4077,21 @@ export type JobReorderResponse = {
3572
4077
  message: string;
3573
4078
  position: number;
3574
4079
  };
4080
+ export type JobRetargetResponse = {
4081
+ action: 'job_retarget';
4082
+ auto_docked?: boolean;
4083
+ auto_undocked?: boolean;
4084
+ deliver_to: string;
4085
+ job_id: string;
4086
+ kind: 'retarget';
4087
+ message: string;
4088
+ previous_deliver_to: string;
4089
+ runs_remaining: number;
4090
+ };
3575
4091
  export type JobView = {
3576
4092
  base_id?: string;
3577
4093
  base_name?: string;
4094
+ deliver_to?: string;
3578
4095
  eta_ticks: number;
3579
4096
  external?: boolean;
3580
4097
  facility_id: string;
@@ -3621,6 +4138,7 @@ export type JumpResponse = {
3621
4138
  system_id: string;
3622
4139
  };
3623
4140
  export type KillLogEntry = {
4141
+ cause?: string;
3624
4142
  killer_id: string;
3625
4143
  killer_username: string;
3626
4144
  victim_id: string;
@@ -3734,7 +4252,6 @@ export type LootWreckResponse = {
3734
4252
  module_id?: string;
3735
4253
  module_type_id?: string;
3736
4254
  quantity: number;
3737
- wear?: number;
3738
4255
  wreck_empty: boolean;
3739
4256
  xp_gained?: {
3740
4257
  [key: string]: number;
@@ -3749,7 +4266,6 @@ export type LootedModule = {
3749
4266
  name: string;
3750
4267
  type: string;
3751
4268
  type_id: string;
3752
- wear: number;
3753
4269
  };
3754
4270
  export type LoungeCheckInResponse = {
3755
4271
  auto_docked?: boolean;
@@ -3775,7 +4291,24 @@ export type MapData = {
3775
4291
  empires: {
3776
4292
  [key: string]: string;
3777
4293
  };
3778
- systems: Array<MapSystem>;
4294
+ /**
4295
+ * Every system in the galaxy, with static position and connection data.
4296
+ */
4297
+ systems: Array<MapDataSystem>;
4298
+ };
4299
+ export type MapDataSystem = {
4300
+ battle_id?: string;
4301
+ connections: Array<string>;
4302
+ empire?: string;
4303
+ empire_color?: string;
4304
+ has_battle?: boolean;
4305
+ id: string;
4306
+ is_home?: boolean;
4307
+ is_stronghold?: boolean;
4308
+ name: string;
4309
+ online: number;
4310
+ x: number;
4311
+ y: number;
3779
4312
  };
3780
4313
  /**
3781
4314
  * A system entry from the player's discovered map.
@@ -3920,11 +4453,21 @@ export type MissionInfo = {
3920
4453
  };
3921
4454
  export type MissionRewardsInfo = {
3922
4455
  credits: number;
4456
+ /**
4457
+ * item_id → quantity
4458
+ */
3923
4459
  items?: {
3924
4460
  [key: string]: number;
3925
4461
  };
4462
+ /**
4463
+ * Stronghold crew the pirate_rep reward is paid to (e.g. pirate_kael). Empty means the standing is granted with every pirate crew.
4464
+ */
4465
+ pirate_faction?: string;
3926
4466
  pirate_rep?: number;
3927
4467
  reputation?: number;
4468
+ /**
4469
+ * skill_id → XP
4470
+ */
3928
4471
  skill_xp?: {
3929
4472
  [key: string]: number;
3930
4473
  };
@@ -3955,11 +4498,17 @@ export type Module = {
3955
4498
  armor_bypass_bonus?: number;
3956
4499
  armor_repair_rate?: number;
3957
4500
  base_value: number;
4501
+ boarding_capability?: boolean;
4502
+ boarding_contact_defense?: boolean;
4503
+ boarding_defense_bonus_pct?: number;
3958
4504
  cargo_bonus?: number;
3959
4505
  cloak_strength?: number;
4506
+ combat_effects?: CombatSpecialEffects;
3960
4507
  cooldown?: number;
3961
4508
  cpu_bonus?: number;
3962
4509
  cpu_usage: number;
4510
+ crew_capacity_bonus?: number;
4511
+ crew_combat_bonus_pct?: number;
3963
4512
  current_cool?: number;
3964
4513
  damage?: number;
3965
4514
  damage_reduction?: number;
@@ -3969,14 +4518,21 @@ export type Module = {
3969
4518
  disruptor_power?: number;
3970
4519
  drone_bandwidth?: number;
3971
4520
  drone_capacity?: number;
4521
+ fleet_triage_pct?: number;
3972
4522
  fuel_efficiency?: number;
3973
4523
  hidden?: boolean;
3974
4524
  hull_bonus?: number;
3975
4525
  hull_penalty?: number;
3976
4526
  id: string;
4527
+ jam_strength?: number;
4528
+ latch_resistance?: number;
4529
+ latch_strength?: number;
3977
4530
  leisure_points?: number;
3978
4531
  magazine_size?: number;
4532
+ marine_capacity_bonus?: number;
4533
+ marine_combat_bonus_pct?: number;
3979
4534
  max_fuel_bonus?: number;
4535
+ medical_treatment_rate?: number;
3980
4536
  mining_power?: number;
3981
4537
  name: string;
3982
4538
  passenger_business_berths?: number;
@@ -3984,11 +4540,15 @@ export type Module = {
3984
4540
  passenger_economy_berths?: number;
3985
4541
  passenger_first_berths?: number;
3986
4542
  passive_recipe?: string;
4543
+ passive_repair?: number;
3987
4544
  power_bonus?: number;
3988
4545
  power_usage: number;
3989
4546
  precision_factor?: number;
3990
4547
  quest_item?: boolean;
3991
4548
  reach?: number;
4549
+ reactive_resistance?: number;
4550
+ refit_capability?: boolean;
4551
+ remote_medical_treatment?: boolean;
3992
4552
  remote_repair_power?: number;
3993
4553
  required_skills?: {
3994
4554
  [key: string]: number;
@@ -3997,6 +4557,7 @@ export type Module = {
3997
4557
  [key: string]: number;
3998
4558
  };
3999
4559
  salvage_bonus?: number;
4560
+ scan_reduction?: number;
4000
4561
  scanner_power?: number;
4001
4562
  scramble_power?: number;
4002
4563
  shield_bonus?: number;
@@ -4009,6 +4570,7 @@ export type Module = {
4009
4570
  speed_bonus?: number;
4010
4571
  speed_penalty?: number;
4011
4572
  survey_power?: number;
4573
+ targeting_reduction?: number;
4012
4574
  tow_speed_penalty?: number;
4013
4575
  tracking_bonus?: number;
4014
4576
  type: string;
@@ -4117,6 +4679,7 @@ export type NotificationBattleDamage = {
4117
4679
  attacker_id: string;
4118
4680
  attacker_name?: string;
4119
4681
  damage_type: string;
4682
+ effect_kind?: string;
4120
4683
  hit_success: boolean;
4121
4684
  hull_hit: number;
4122
4685
  shield_hit: number;
@@ -4133,9 +4696,11 @@ export type NotificationBattleDamage = {
4133
4696
  };
4134
4697
  export type NotificationBattleEnded = {
4135
4698
  battle_id: string;
4699
+ captures?: Array<CaptureLogEntry>;
4136
4700
  duration: number;
4137
4701
  participants?: Array<BattleEndedParticipantInfo>;
4138
4702
  reason: string;
4703
+ ships_captured?: number;
4139
4704
  ships_destroyed: number;
4140
4705
  total_damage: number;
4141
4706
  winning_side: number;
@@ -4159,6 +4724,7 @@ export type NotificationBattleStarted = {
4159
4724
  export type NotificationBattleUpdate = {
4160
4725
  auto_pilot: boolean;
4161
4726
  battle_id: string;
4727
+ boarding?: Array<BoardingPublicStatus>;
4162
4728
  participants: Array<BattleParticipantInfo>;
4163
4729
  sides: Array<BattleSideInfo>;
4164
4730
  tick: number;
@@ -4209,6 +4775,13 @@ export type NotificationCraftingUpdate = {
4209
4775
  jobs: Array<CraftingJobUpdate>;
4210
4776
  tick: number;
4211
4777
  };
4778
+ export type NotificationDroneAdrift = {
4779
+ drone_id: string;
4780
+ drone_type: string;
4781
+ owner_id: string;
4782
+ poi_id: string;
4783
+ system_id: string;
4784
+ };
4212
4785
  export type NotificationDroneDestroyed = {
4213
4786
  drone_id: string;
4214
4787
  drone_type: string;
@@ -4319,23 +4892,66 @@ export type NotificationFacilityRentWarning = {
4319
4892
  */
4320
4893
  missed_cycles?: number;
4321
4894
  };
4322
- export type NotificationMarketUpdate = {
4323
- base_id: string;
4324
- base_name?: string;
4325
- items: Array<MarketItemBook>;
4326
- tick: number;
4895
+ export type NotificationFactionAllianceBroken = {
4896
+ by_faction_id: string;
4897
+ by_faction_name: string;
4898
+ by_faction_tag: string;
4899
+ message: string;
4327
4900
  };
4328
- export type NotificationMiningYield = {
4329
- auto_docked?: boolean;
4330
- auto_undocked?: boolean;
4331
- depletion_percent?: number;
4332
- drone_id?: string;
4333
- kind: 'yield';
4334
- max_remaining?: number;
4335
- quantity: number;
4336
- remaining: number;
4337
- remaining_display: string;
4338
- resource_id: string;
4901
+ export type NotificationFactionAllianceFormed = {
4902
+ message: string;
4903
+ with_faction_id: string;
4904
+ with_faction_name: string;
4905
+ with_faction_tag: string;
4906
+ };
4907
+ export type NotificationFactionAllianceProposal = {
4908
+ from_faction_id: string;
4909
+ from_faction_name: string;
4910
+ from_faction_tag: string;
4911
+ message: string;
4912
+ };
4913
+ /**
4914
+ * Sent to the proposing faction's members when the other faction accepts their peace proposal.
4915
+ */
4916
+ export type NotificationFactionPeaceAccepted = {
4917
+ /**
4918
+ * Faction that accepted the proposal.
4919
+ */
4920
+ faction_id: string;
4921
+ faction_name: string;
4922
+ message: string;
4923
+ };
4924
+ export type NotificationFactionPeaceProposal = {
4925
+ from_faction_id: string;
4926
+ from_faction_name: string;
4927
+ message: string;
4928
+ terms?: string;
4929
+ };
4930
+ export type NotificationFactionWarDeclared = {
4931
+ aggressor_faction_id: string;
4932
+ aggressor_faction_name: string;
4933
+ defender_faction_id: string;
4934
+ defender_faction_name: string;
4935
+ message: string;
4936
+ reason?: string;
4937
+ };
4938
+ export type NotificationMarketUpdate = {
4939
+ base_id: string;
4940
+ base_name?: string;
4941
+ items: Array<MarketItemBook>;
4942
+ tick: number;
4943
+ };
4944
+ export type NotificationMiningYield = {
4945
+ auto_docked?: boolean;
4946
+ auto_undocked?: boolean;
4947
+ depletion_percent?: number;
4948
+ drone_id?: string;
4949
+ kind: 'yield';
4950
+ max_remaining?: number;
4951
+ quantity: number;
4952
+ remaining: number;
4953
+ remaining_display: string;
4954
+ resource_id: string;
4339
4955
  resource_name?: string;
4340
4956
  xp_gained?: {
4341
4957
  [key: string]: number;
@@ -4345,15 +4961,40 @@ export type NotificationObservationUpdate = {
4345
4961
  active_scan?: boolean;
4346
4962
  cloaked_lost?: Array<string>;
4347
4963
  cloaked_resolved?: Array<ScanContact>;
4964
+ creatures_changed?: Array<CreatureInfo>;
4965
+ creatures_departed?: Array<string>;
4966
+ empire_npcs_changed?: Array<EmpireNpcInfo>;
4967
+ empire_npcs_departed?: Array<string>;
4348
4968
  nearby_changed?: Array<NearbyPlayer>;
4349
4969
  nearby_departed?: Array<string>;
4970
+ pirates_changed?: Array<PirateInfo>;
4971
+ pirates_departed?: Array<string>;
4350
4972
  poi_id: string;
4973
+ prizes_changed?: Array<PrizeInfo>;
4974
+ prizes_departed?: Array<string>;
4351
4975
  system_changed?: Array<NearbyPlayer>;
4352
4976
  system_departed?: Array<string>;
4353
4977
  system_id: string;
4354
4978
  tick: number;
4355
4979
  unknown_signature: boolean;
4356
4980
  };
4981
+ export type NotificationPersonnelUpdate = {
4982
+ action: string;
4983
+ crew_capacity: number;
4984
+ crew_treated?: number;
4985
+ fit_crew_transferred?: number;
4986
+ fit_marines_transferred?: number;
4987
+ injured_crew_swapped?: number;
4988
+ injured_crew_transferred?: number;
4989
+ injured_marines_swapped?: number;
4990
+ injured_marines_transferred?: number;
4991
+ marine_capacity: number;
4992
+ marines_treated?: number;
4993
+ personnel: PersonnelState;
4994
+ ship_id: string;
4995
+ source_player_id: string;
4996
+ source_username: string;
4997
+ };
4357
4998
  export type NotificationPilotlessShip = {
4358
4999
  expire_tick: number;
4359
5000
  player_id: string;
@@ -4452,6 +5093,19 @@ export type NotificationPlayerKill = {
4452
5093
  */
4453
5094
  wreck_id?: string;
4454
5095
  };
5096
+ export type NotificationPrizeUpdate = {
5097
+ destination_base_id?: string;
5098
+ message: string;
5099
+ poi_id?: string;
5100
+ prize_id: string;
5101
+ ship_class: string;
5102
+ ship_id: string;
5103
+ ship_name?: string;
5104
+ status: string;
5105
+ system_id?: string;
5106
+ wait_reason?: string;
5107
+ wreck_id?: string;
5108
+ };
4455
5109
  export type NotificationRanchPoached = {
4456
5110
  herd_left: number;
4457
5111
  killer_id: string;
@@ -4477,6 +5131,22 @@ export type NotificationScanDetected = {
4477
5131
  scanner_ship_class?: string;
4478
5132
  scanner_username: string;
4479
5133
  };
5134
+ export type NotificationServerRestartWarning = {
5135
+ message: string;
5136
+ seconds_until_restart: number;
5137
+ target_version?: string;
5138
+ };
5139
+ export type NotificationShipCaptured = {
5140
+ battle_id: string;
5141
+ boarding_operation_id: string;
5142
+ captor_id: string;
5143
+ captor_username: string;
5144
+ former_owner_id: string;
5145
+ former_owner_username: string;
5146
+ ship_class: string;
5147
+ ship_id: string;
5148
+ tick: number;
5149
+ };
4480
5150
  export type NotificationShipCommissionComplete = {
4481
5151
  base_id: string;
4482
5152
  base_name: string;
@@ -4559,6 +5229,29 @@ export type ObjectiveInfo = {
4559
5229
  target_base_name?: string;
4560
5230
  type: string;
4561
5231
  };
5232
+ export type ObjectiveProgressInfo = {
5233
+ completed: boolean;
5234
+ current: number;
5235
+ description: string;
5236
+ /**
5237
+ * player_threshold objectives only
5238
+ */
5239
+ eligible_players?: Array<string>;
5240
+ in_cargo?: number;
5241
+ in_storage?: number;
5242
+ item_id?: string;
5243
+ item_name?: string;
5244
+ /**
5245
+ * player_threshold objectives only
5246
+ */
5247
+ participants?: Array<string>;
5248
+ required: number;
5249
+ system_id?: string;
5250
+ system_name?: string;
5251
+ target_base?: string;
5252
+ target_base_name?: string;
5253
+ type: string;
5254
+ };
4562
5255
  export type OpenOrderSummary = {
4563
5256
  item_id: string;
4564
5257
  item_name: string;
@@ -4580,11 +5273,18 @@ export type OwnedFacilityEntry = {
4580
5273
  base_name: string;
4581
5274
  custom_name?: string;
4582
5275
  damaged?: boolean;
5276
+ /**
5277
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
5278
+ */
5279
+ dismantling?: boolean;
4583
5280
  facility_id: string;
4584
5281
  labor_per_run?: number;
4585
5282
  missed_rent_cycles?: number;
4586
5283
  name: string;
4587
5284
  power_throttled?: boolean;
5285
+ /**
5286
+ * Stored rent rate in credits per facility cycle (100 ticks). No rent is billed while damaged or under_construction or dismantling. The stored rate applies after repair or construction subject to repricing. Zero means no recurring rent. Legacy inactive facilities remain billable.
5287
+ */
4588
5288
  rent_per_cycle: number;
4589
5289
  rental_fee_per_run?: number;
4590
5290
  repair_complete_tick?: number;
@@ -4605,6 +5305,7 @@ export type OwnedShipInfo = {
4605
5305
  listing_price?: number;
4606
5306
  location?: string;
4607
5307
  location_base_id?: string;
5308
+ module_type_ids?: Array<string>;
4608
5309
  modules?: number;
4609
5310
  ship_id: string;
4610
5311
  };
@@ -4735,6 +5436,7 @@ export type ParticipantSummary = {
4735
5436
  damage_dealt: number;
4736
5437
  damage_taken: number;
4737
5438
  is_boss?: boolean;
5439
+ is_npc?: boolean;
4738
5440
  kill_count: number;
4739
5441
  kind?: string;
4740
5442
  player_id: string;
@@ -4773,6 +5475,25 @@ export type PathfinderJumpResponse = {
4773
5475
  origin_x?: number;
4774
5476
  origin_y?: number;
4775
5477
  };
5478
+ export type PayBountyOutstandingRow = {
5479
+ /**
5480
+ * Credits still owed to this empire
5481
+ */
5482
+ bounty: number;
5483
+ empire: string;
5484
+ };
5485
+ export type PayBountyResponse = {
5486
+ action: string;
5487
+ amount_paid: number;
5488
+ credits: number;
5489
+ empire: string;
5490
+ faction_credits?: number;
5491
+ message: string;
5492
+ outstanding_bounties: Array<PayBountyOutstandingRow>;
5493
+ paid_from: string;
5494
+ released_from_detention: boolean;
5495
+ reputation_after: number;
5496
+ };
4776
5497
  export type PendingActionResponse = {
4777
5498
  auto_docked?: boolean;
4778
5499
  auto_undocked?: boolean;
@@ -4785,12 +5506,36 @@ export type PendingTradeItemView = {
4785
5506
  name?: string;
4786
5507
  quantity: number;
4787
5508
  };
5509
+ export type PersonnelCasualtyLogEntry = {
5510
+ casualties_occurred: boolean;
5511
+ incapacitated: boolean;
5512
+ target_id: string;
5513
+ triage_applied?: boolean;
5514
+ triage_converted?: boolean;
5515
+ triage_provider_id?: string;
5516
+ triage_provider_ship_id?: string;
5517
+ };
5518
+ export type PersonnelState = {
5519
+ fit_crew: number;
5520
+ fit_marines: number;
5521
+ injured_crew: number;
5522
+ injured_marines: number;
5523
+ version: number;
5524
+ };
4788
5525
  export type PetitionResponse = {
4789
5526
  empire_id: string;
4790
5527
  empire_name: string;
4791
5528
  message: string;
4792
5529
  };
4793
5530
  export type PirateInfo = {
5531
+ /**
5532
+ * Stronghold crew this pirate flies for, e.g. pirate_kael. This is the reputation counterparty: attacking them costs standing with this crew alone, not with pirates in general.
5533
+ */
5534
+ faction?: string;
5535
+ /**
5536
+ * Human-readable name of the stronghold crew, e.g. Admiral Kael.
5537
+ */
5538
+ faction_name?: string;
4794
5539
  hull?: number;
4795
5540
  is_boss: boolean;
4796
5541
  max_hull?: number;
@@ -4934,9 +5679,26 @@ export type Player = {
4934
5679
  * Lifetime player statistics.
4935
5680
  */
4936
5681
  export type PlayerStats = {
5682
+ /**
5683
+ * Injured personnel treated aboard another player's ship
5684
+ */
5685
+ allied_personnel_treated?: number;
4937
5686
  bases_destroyed?: number;
4938
5687
  battles_fled?: number;
4939
5688
  battles_started?: number;
5689
+ /**
5690
+ * Boarding latch rolls attempted
5691
+ */
5692
+ boarding_attempts?: number;
5693
+ boarding_marine_deaths?: number;
5694
+ boarding_marine_injuries?: number;
5695
+ boarding_marines_deployed?: number;
5696
+ /**
5697
+ * Boarding combats successfully initiated
5698
+ */
5699
+ boarding_operations_started?: number;
5700
+ boarding_victories?: number;
5701
+ boarding_withdrawals?: number;
4940
5702
  captains_log_entries?: number;
4941
5703
  chat_messages_sent?: number;
4942
5704
  cloak_activations?: number;
@@ -4965,6 +5727,11 @@ export type PlayerStats = {
4965
5727
  credits_earned_taxable_snapshot?: number;
4966
5728
  credits_gifted?: number;
4967
5729
  credits_spent?: number;
5730
+ crew_deaths?: number;
5731
+ crew_hired?: number;
5732
+ crew_injuries?: number;
5733
+ crew_injuries_healed?: number;
5734
+ crew_transferred?: number;
4968
5735
  customs_evaded?: number;
4969
5736
  damage_dealt?: number;
4970
5737
  damage_taken?: number;
@@ -4999,6 +5766,11 @@ export type PlayerStats = {
4999
5766
  * Unix timestamp of the most recent property-tax assessment
5000
5767
  */
5001
5768
  last_property_tax_assessed_at?: number;
5769
+ marine_deaths?: number;
5770
+ marine_injuries?: number;
5771
+ marine_injuries_healed?: number;
5772
+ marines_hired?: number;
5773
+ marines_transferred?: number;
5002
5774
  /**
5003
5775
  * Lifetime credits spent acquiring resaleable goods on the market, deducted from market sale income so trading is taxed on margin
5004
5776
  */
@@ -5017,18 +5789,34 @@ export type PlayerStats = {
5017
5789
  modules_installed?: number;
5018
5790
  npcs_destroyed?: number;
5019
5791
  ore_mined?: number;
5792
+ pirate_boss_prizes_delivered?: number;
5793
+ pirate_prizes_delivered?: number;
5020
5794
  pirates_destroyed?: number;
5021
5795
  /**
5022
5796
  * Cumulative distance flown in a Prayer-class hull
5023
5797
  */
5024
5798
  prayer_distance_traveled?: number;
5799
+ /**
5800
+ * Base value of delivered prize hulls, installed modules, and cargo
5801
+ */
5802
+ prize_value_recovered?: number;
5803
+ prizes_claimed?: number;
5804
+ prizes_delivered?: number;
5025
5805
  refuels_given?: number;
5026
5806
  repairs_given?: number;
5027
5807
  scans_performed?: number;
5028
5808
  self_destructs?: number;
5809
+ /**
5810
+ * Intact ships captured through boarding; does not count as destruction
5811
+ */
5812
+ ships_captured?: number;
5029
5813
  ships_commissioned?: number;
5030
5814
  ships_destroyed?: number;
5031
5815
  ships_lost?: number;
5816
+ /**
5817
+ * Owned ships lost intact through boarding; does not count as a death or destruction loss
5818
+ */
5819
+ ships_lost_to_capture?: number;
5032
5820
  ships_purchased?: number;
5033
5821
  systems_explored?: number;
5034
5822
  /**
@@ -5041,6 +5829,10 @@ export type PlayerStats = {
5041
5829
  time_played?: number;
5042
5830
  times_docked?: number;
5043
5831
  trades_completed?: number;
5832
+ /**
5833
+ * Fatal casualties prevented by fleet medical capability
5834
+ */
5835
+ triage_lives_saved?: number;
5044
5836
  /**
5045
5837
  * Times a Pathfinder course was plotted into open space
5046
5838
  */
@@ -5061,6 +5853,57 @@ export type PrepayTaxResponse = {
5061
5853
  message: string;
5062
5854
  tax_prepaid_balance: number;
5063
5855
  };
5856
+ export type PrizeInfo = {
5857
+ actor_id: string;
5858
+ hull: number;
5859
+ in_combat: boolean;
5860
+ max_hull: number;
5861
+ max_shield: number;
5862
+ prize_id: string;
5863
+ shield: number;
5864
+ ship_class: string;
5865
+ ship_id: string;
5866
+ ship_name?: string;
5867
+ status: string;
5868
+ wait_reason?: string;
5869
+ };
5870
+ export type PrizeRecoveryInfo = {
5871
+ actor_id: string;
5872
+ crew_disposition: string;
5873
+ destination_base_id: string;
5874
+ fuel: number;
5875
+ hull: number;
5876
+ max_fuel: number;
5877
+ max_hull: number;
5878
+ poi_id?: string;
5879
+ prize_crew_fit: number;
5880
+ prize_id: string;
5881
+ return_crew_faction_id?: string;
5882
+ ship_class: string;
5883
+ ship_id: string;
5884
+ ship_name?: string;
5885
+ status: string;
5886
+ system_id?: string;
5887
+ transit_arrival_tick?: number;
5888
+ transit_from_poi_id?: string;
5889
+ transit_from_system_id?: string;
5890
+ transit_kind?: string;
5891
+ transit_to_poi_id?: string;
5892
+ transit_to_system_id?: string;
5893
+ wait_reason?: string;
5894
+ };
5895
+ export type PrizeServiceResponse = {
5896
+ action: string;
5897
+ crew_disposition?: string;
5898
+ destination_base_id?: string;
5899
+ fuel_transferred?: number;
5900
+ hull_repaired?: number;
5901
+ prize_id: string;
5902
+ repair_kits_used?: number;
5903
+ ship_id: string;
5904
+ status: string;
5905
+ wait_reason?: string;
5906
+ };
5064
5907
  export type RanchFeedInfo = {
5065
5908
  cycles_left: number;
5066
5909
  per_cycle: number;
@@ -5152,6 +5995,15 @@ export type RecipeOutput = {
5152
5995
  item_id: string;
5153
5996
  quantity: number;
5154
5997
  };
5998
+ export type RecruitPersonnelResponse = {
5999
+ auto_docked?: boolean;
6000
+ auto_undocked?: boolean;
6001
+ cost: number;
6002
+ crew_pool_remaining?: number;
6003
+ crew_recruited: number;
6004
+ marine_pool_remaining?: number;
6005
+ marines_recruited: number;
6006
+ };
5155
6007
  export type RecycleJobResponse = ({
5156
6008
  kind: 'job';
5157
6009
  } & CraftJobResponse) | ({
@@ -5162,7 +6014,9 @@ export type RecycleJobResponse = ({
5162
6014
  kind: 'cancel';
5163
6015
  } & JobCancelResponse) | ({
5164
6016
  kind: 'bulk_cancel';
5165
- } & BulkJobCancelResponse);
6017
+ } & BulkJobCancelResponse) | ({
6018
+ kind: 'retarget';
6019
+ } & JobRetargetResponse);
5166
6020
  export type RefitShipResponse = {
5167
6021
  auto_docked?: boolean;
5168
6022
  auto_undocked?: boolean;
@@ -5204,6 +6058,7 @@ export type RegenLogEntry = {
5204
6058
  armor_repair: number;
5205
6059
  hull_after: number;
5206
6060
  hull_before: number;
6061
+ passive_repair?: number;
5207
6062
  player_id: string;
5208
6063
  remote_repair?: number;
5209
6064
  shield_after: number;
@@ -5247,19 +6102,6 @@ export type ReloadResponse = {
5247
6102
  weapon_id: string;
5248
6103
  weapon_name: string;
5249
6104
  };
5250
- export type RepairModuleResponse = {
5251
- auto_docked?: boolean;
5252
- auto_undocked?: boolean;
5253
- message: string;
5254
- module_id: string;
5255
- repair_amount: number;
5256
- wear_after: number;
5257
- wear_before: number;
5258
- wear_status: string;
5259
- xp_gained: {
5260
- [key: string]: number;
5261
- };
5262
- };
5263
6105
  export type RepairResponse = {
5264
6106
  action: string;
5265
6107
  cost?: number;
@@ -5331,6 +6173,7 @@ export type ScanResponse = {
5331
6173
  cargo_types?: Array<string>;
5332
6174
  cloaked?: boolean;
5333
6175
  contacts?: Array<ScanContact>;
6176
+ description?: string;
5334
6177
  faction_id?: string;
5335
6178
  hull?: number;
5336
6179
  message?: string;
@@ -5419,18 +6262,51 @@ export type SellWreckResponse = {
5419
6262
  wreck_id: string;
5420
6263
  };
5421
6264
  export type SendGiftResponse = {
6265
+ /**
6266
+ * Completed gift operation including station material donations.
6267
+ */
5422
6268
  action: 'send_gift';
5423
6269
  auto_docked?: boolean;
5424
6270
  auto_undocked?: boolean;
6271
+ /**
6272
+ * Canonical Base ID where gifted items were deposited. A station gift always names the station at which the donor is docked.
6273
+ */
5425
6274
  base_id: string;
6275
+ /**
6276
+ * Units of this item remaining in sender cargo after a cargo gift. Zero is omitted; not applicable to storage-source gifts.
6277
+ */
5426
6278
  cargo_remaining?: number;
6279
+ /**
6280
+ * Credits gifted to a player; omitted when none. Station material gifts never transfer credits.
6281
+ */
5427
6282
  credits_sent?: number;
6283
+ /**
6284
+ * Gifted item ID; omitted for credit-only player gifts. Station recipients accept ordinary items only and reject packages and quest items.
6285
+ */
5428
6286
  item_id?: string;
6287
+ /**
6288
+ * Gift note or confirmation; omitted when empty.
6289
+ */
5429
6290
  message?: string;
6291
+ /**
6292
+ * Number of item units donated without payment; omitted when no items were sent.
6293
+ */
5430
6294
  quantity?: number;
6295
+ /**
6296
+ * Recipient player name or canonical station:<base ID> for a station material gift. Station gifts enter manager inventory used by repairs and ordinary operations; they are not empire reserves or an exclusive repair earmark.
6297
+ */
5431
6298
  recipient: string;
6299
+ /**
6300
+ * Item source: cargo or personal storage. Omitted means cargo. Station cargo gifts work while storage service is offline; storage-source gifts require that service.
6301
+ */
5432
6302
  source?: string;
6303
+ /**
6304
+ * Units of this item remaining in sender personal storage after a storage-source gift. Zero is omitted; not applicable to cargo gifts.
6305
+ */
5433
6306
  storage_remaining?: number;
6307
+ /**
6308
+ * Sender wallet after a credit gift; omitted when not applicable or zero.
6309
+ */
5434
6310
  wallet_remaining?: number;
5435
6311
  };
5436
6312
  export type SetAccessResponse = {
@@ -5491,6 +6367,14 @@ export type Ship = {
5491
6367
  * Ticks of armor melt remaining (from plasma/corrosive ammo)
5492
6368
  */
5493
6369
  armor_melt_ticks_remaining?: number;
6370
+ /**
6371
+ * Durable in-battle self-destruct countdown state
6372
+ */
6373
+ battle_self_destruct?: {
6374
+ battle_id?: string;
6375
+ detonate_tick?: number;
6376
+ started_tick?: number;
6377
+ };
5494
6378
  /**
5495
6379
  * Hull damage applied each battle tick while burning
5496
6380
  */
@@ -5510,6 +6394,10 @@ export type Ship = {
5510
6394
  cpu_capacity?: number;
5511
6395
  cpu_used?: number;
5512
6396
  created_at?: string;
6397
+ /**
6398
+ * Effective crew capacity after fitted-module effects
6399
+ */
6400
+ crew_capacity?: number;
5513
6401
  /**
5514
6402
  * Player-assigned custom ship name (globally unique)
5515
6403
  */
@@ -5545,6 +6433,10 @@ export type Ship = {
5545
6433
  * Default-loadout version this ship was built or last refitted against; a lower value than the class's default_loadout_version means refit_ship is offered
5546
6434
  */
5547
6435
  loadout_version?: number;
6436
+ /**
6437
+ * Effective marine capacity after fitted-module effects
6438
+ */
6439
+ marine_capacity?: number;
5548
6440
  max_fuel: number;
5549
6441
  max_hull: number;
5550
6442
  max_shield?: number;
@@ -5554,26 +6446,64 @@ export type Ship = {
5554
6446
  modules?: Array<string>;
5555
6447
  name: string;
5556
6448
  /**
5557
- * % of normal cargo space for ores/crystals (0=normal, 50=half)
6449
+ * % of normal cargo space for mined ores and minerals (0=normal, 50=half)
5558
6450
  */
5559
6451
  ore_cargo_efficiency?: number;
5560
6452
  owner_id?: string;
6453
+ /**
6454
+ * Current crew and marine complement; version is a persistence migration sentinel
6455
+ */
6456
+ personnel?: {
6457
+ fit_crew?: number;
6458
+ fit_marines?: number;
6459
+ injured_crew?: number;
6460
+ injured_marines?: number;
6461
+ version?: number;
6462
+ };
6463
+ /**
6464
+ * Absolute game tick when an incapacitated ship's protected injured survivor can return to fit duty; zero when no recovery is scheduled
6465
+ */
6466
+ personnel_recovery_tick?: number;
5561
6467
  power_capacity?: number;
5562
6468
  power_used?: number;
5563
6469
  shield?: number;
5564
6470
  shield_recharge?: number;
6471
+ /**
6472
+ * Unique named-hull instance identity; absent for ordinary ships and preserved through custody changes
6473
+ */
6474
+ singleton_instance_key?: string;
5565
6475
  /**
5566
6476
  * AU per tick
5567
6477
  */
5568
6478
  speed?: number;
5569
6479
  speed_penalty?: number;
6480
+ /**
6481
+ * POI containing this unpiloted ship after it was unloaded in space; paired with stranded_system_id
6482
+ */
6483
+ stranded_poi_id?: string;
6484
+ /**
6485
+ * System containing this unpiloted ship after it was unloaded in space; paired with stranded_poi_id
6486
+ */
6487
+ stranded_system_id?: string;
5570
6488
  utility_slots?: number;
5571
6489
  weapon_slots?: number;
5572
6490
  };
5573
6491
  export type ShipActiveBuff = {
6492
+ /**
6493
+ * Bonus amount (percentage for most stats, absolute for hull_regen)
6494
+ */
5574
6495
  amount: number;
6496
+ /**
6497
+ * Engine tick when the buff expires
6498
+ */
5575
6499
  expires_at: number;
6500
+ /**
6501
+ * Item that created this buff
6502
+ */
5576
6503
  item_id: string;
6504
+ /**
6505
+ * Effect stat name, e.g. weapon_damage
6506
+ */
5577
6507
  stat: string;
5578
6508
  };
5579
6509
  export type ShipBuyOrderInfo = {
@@ -5608,6 +6538,10 @@ export type ShipClass = {
5608
6538
  * Source empire ship class ID this pirate design is converted from
5609
6539
  */
5610
6540
  based_on?: string;
6541
+ /**
6542
+ * Built-in percentage multiplier to defending crew and marine strength
6543
+ */
6544
+ boarding_defense_bonus_pct?: number;
5611
6545
  /**
5612
6546
  * Materials required to build
5613
6547
  */
@@ -5619,6 +6553,14 @@ export type ShipClass = {
5619
6553
  * Ticks required to build this ship
5620
6554
  */
5621
6555
  build_time?: number;
6556
+ /**
6557
+ * Capture disposition; omission means standard, while starter hulls resolve to reclaim_only
6558
+ */
6559
+ capture_policy?: 'standard' | 'immune' | 'reclaim_only';
6560
+ /**
6561
+ * Required explanation for explicitly capture-immune hulls
6562
+ */
6563
+ capture_policy_reason?: string;
5622
6564
  cargo_capacity?: number;
5623
6565
  /**
5624
6566
  * Ship role category: Combat, Industrial, Exploration, etc.
@@ -5629,6 +6571,10 @@ export type ShipClass = {
5629
6571
  */
5630
6572
  class: string;
5631
6573
  cpu_capacity?: number;
6574
+ /**
6575
+ * Base crew capacity before fitted-module effects
6576
+ */
6577
+ crew_capacity?: number;
5632
6578
  /**
5633
6579
  * Bumped whenever the canonical default loadout changes; existing ships below this version are offered refit_ship
5634
6580
  */
@@ -5658,7 +6604,7 @@ export type ShipClass = {
5658
6604
  */
5659
6605
  flag?: string;
5660
6606
  /**
5661
- * Capability type: ore_yield_bonus, ice_yield_bonus, gas_yield_bonus, integrated_cloak, integrated_scanner, scan_resistance, integrated_survey_scanner, ship_bay_capacity, passenger_economy_berths, passenger_business_berths, passenger_first_berths, passenger_dining_points, passenger_leisure_points, passenger_comfort, fleet_command_capacity, special_flag
6607
+ * Capability type: ore_yield_bonus, ice_yield_bonus, gas_yield_bonus, integrated_cloak, integrated_scanner, scan_resistance, integrated_survey_scanner, ship_bay_capacity, passenger_economy_berths, passenger_business_berths, passenger_first_berths, passenger_dining_points, passenger_leisure_points, passenger_comfort, fleet_command_capacity, personnel_casualty_multiplier_pct, remote_medical_treatment, medical_treatment_bonus, fleet_triage_bonus_pct, special_flag
5662
6608
  */
5663
6609
  type?: string;
5664
6610
  /**
@@ -5666,6 +6612,10 @@ export type ShipClass = {
5666
6612
  */
5667
6613
  value?: number;
5668
6614
  }>;
6615
+ /**
6616
+ * Built-in reduction to hostile boarding latch progress per round
6617
+ */
6618
+ latch_resistance?: number;
5669
6619
  /**
5670
6620
  * Legacy ship class kept for existing players, hidden from catalog
5671
6621
  */
@@ -5674,6 +6624,14 @@ export type ShipClass = {
5674
6624
  * Flavor text and lore description
5675
6625
  */
5676
6626
  lore?: string;
6627
+ /**
6628
+ * Base marine capacity before fitted-module effects
6629
+ */
6630
+ marine_capacity?: number;
6631
+ /**
6632
+ * Fit crew required for full operational efficiency
6633
+ */
6634
+ minimum_crew?: number;
5677
6635
  name: string;
5678
6636
  /**
5679
6637
  * Recipe IDs automatically processed from cargo
@@ -5795,6 +6753,7 @@ export type ShipmentContract = {
5795
6753
  posted_at: string;
5796
6754
  premium?: number;
5797
6755
  recipient: ShipmentActor;
6756
+ recovery_deadline_tick?: number;
5798
6757
  reputation_eligible?: boolean;
5799
6758
  reserved_exposure: number;
5800
6759
  reward_escrow: number;
@@ -5827,6 +6786,30 @@ export type ShipmentTrackingEvent = {
5827
6786
  shipment_id: string;
5828
6787
  system_id?: string;
5829
6788
  };
6789
+ export type ShippingActiveContract = {
6790
+ contract: ShipmentContract;
6791
+ destination_name?: string;
6792
+ destination_system?: string;
6793
+ failure_debt: number;
6794
+ last_known_location?: string;
6795
+ late: boolean;
6796
+ late_fee_if_delivered_now?: number;
6797
+ next_step: string;
6798
+ origin_name?: string;
6799
+ origin_system?: string;
6800
+ package_in_your_cargo: boolean;
6801
+ payout_if_delivered_now: number;
6802
+ role: 'carrier' | 'shipper' | 'recipient' | 'invited_carrier';
6803
+ ticks_to_deadline: number;
6804
+ ticks_to_recovery_deadline: number;
6805
+ ticks_to_target: number;
6806
+ };
6807
+ export type ShippingActiveResponse = {
6808
+ action: 'active';
6809
+ message?: string;
6810
+ shipments: Array<ShippingActiveContract>;
6811
+ tick: number;
6812
+ };
5830
6813
  export type ShippingContractResponse = {
5831
6814
  action: 'post' | 'get' | 'accept';
5832
6815
  contract: ShipmentContract;
@@ -5853,8 +6836,11 @@ export type ShippingListResponse = {
5853
6836
  };
5854
6837
  export type ShippingListing = {
5855
6838
  contract: ShipmentContract;
6839
+ deadline_ticks: number;
5856
6840
  eligible: boolean;
5857
6841
  reason?: string;
6842
+ recovery_ticks: number;
6843
+ target_ticks: number;
5858
6844
  };
5859
6845
  export type ShippingProfileResponse = {
5860
6846
  action: 'profile';
@@ -5884,6 +6870,7 @@ export type ShippingQuote = {
5884
6870
  package_id: string;
5885
6871
  premium: number;
5886
6872
  recipient: ShipmentActor;
6873
+ recovery_ticks: number;
5887
6874
  required_carrier_tier: 'probationary' | 'licensed' | 'trusted' | 'prime';
5888
6875
  reserved_exposure: number;
5889
6876
  risk_band: 'probationary' | 'licensed' | 'trusted' | 'prime' | 'unpriced';
@@ -5907,6 +6894,8 @@ export type ShippingResponse = ({
5907
6894
  } & ShippingContractResponse) | ({
5908
6895
  action: 'list';
5909
6896
  } & ShippingListResponse) | ({
6897
+ action: 'active';
6898
+ } & ShippingActiveResponse) | ({
5910
6899
  action: 'track';
5911
6900
  } & ShippingTrackResponse) | ({
5912
6901
  action: 'profile';
@@ -5921,6 +6910,7 @@ export type ShippingSettlementResponse = {
5921
6910
  claim_paid?: number;
5922
6911
  contract: ShipmentContract;
5923
6912
  debt_created?: number;
6913
+ late?: boolean;
5924
6914
  shipper_refund?: number;
5925
6915
  };
5926
6916
  export type ShippingTrackResponse = {
@@ -5954,13 +6944,29 @@ export type SkillDefinition = {
5954
6944
  training_source?: string;
5955
6945
  xp_per_level: Array<number>;
5956
6946
  };
6947
+ export type SkillProgress = {
6948
+ /**
6949
+ * Skill category
6950
+ */
6951
+ category: string;
6952
+ level: number;
6953
+ /**
6954
+ * Maximum attainable level for this skill
6955
+ */
6956
+ max_level: number;
6957
+ /**
6958
+ * Display name of the skill
6959
+ */
6960
+ name: string;
6961
+ next_level_xp: number;
6962
+ xp: number;
6963
+ };
5957
6964
  export type SkippedModule = {
5958
6965
  id: string;
5959
6966
  name: string;
5960
6967
  reason: string;
5961
6968
  type: string;
5962
6969
  type_id: string;
5963
- wear: number;
5964
6970
  };
5965
6971
  export type SoldCargoItem = {
5966
6972
  item_id: string;
@@ -6073,6 +7079,48 @@ export type StationPowerStatus = {
6073
7079
  remediation?: string;
6074
7080
  supply: number;
6075
7081
  };
7082
+ export type StationRepairEntry = {
7083
+ category: string;
7084
+ definition_id: string;
7085
+ instance_id: string;
7086
+ materials?: Array<StationRepairMaterial>;
7087
+ name: string;
7088
+ status: string;
7089
+ ticks_until_complete?: number;
7090
+ };
7091
+ export type StationRepairMaterial = {
7092
+ item_id: string;
7093
+ name?: string;
7094
+ quantity_in_storage: number;
7095
+ quantity_missing?: number;
7096
+ quantity_required: number;
7097
+ };
7098
+ export type StationRepairResponse = {
7099
+ damaged_count: number;
7100
+ facilities?: Array<StationRepairEntry>;
7101
+ hull_current?: number;
7102
+ hull_missing?: number;
7103
+ hull_required?: number;
7104
+ materials?: Array<StationRepairMaterial>;
7105
+ next_blocked?: StationRepairEntry;
7106
+ remediation?: string;
7107
+ repairing_count: number;
7108
+ supply_method: string;
7109
+ waiting_count: number;
7110
+ wrecked: boolean;
7111
+ };
7112
+ export type StationServicePoolStatus = {
7113
+ capacity: number;
7114
+ next_cycle_supply_required?: number;
7115
+ refill_per_cycle: number;
7116
+ remaining: number;
7117
+ supply_item?: string;
7118
+ };
7119
+ export type StationServicePools = {
7120
+ marine_training?: StationServicePoolStatus;
7121
+ medical?: StationServicePoolStatus;
7122
+ personnel?: StationServicePoolStatus;
7123
+ };
6076
7124
  export type StorageGift = {
6077
7125
  credits?: number;
6078
7126
  items?: Array<StorageGiftItem>;
@@ -6093,6 +7141,14 @@ export type StorageGiftShip = {
6093
7141
  custom_name?: string;
6094
7142
  ship_id: string;
6095
7143
  };
7144
+ export type StorageLocation = {
7145
+ base_id: string;
7146
+ base_name: string;
7147
+ item_count: number;
7148
+ ship_count: number;
7149
+ system: string;
7150
+ system_name: string;
7151
+ };
6096
7152
  export type StorageMessage = {
6097
7153
  body: string;
6098
7154
  from: string;
@@ -6123,9 +7179,13 @@ export type SubscribeObservationResponse = {
6123
7179
  action: string;
6124
7180
  active_scan: boolean;
6125
7181
  cloaked_contacts?: Array<ScanContact>;
7182
+ creatures?: Array<CreatureInfo>;
7183
+ empire_npcs?: Array<EmpireNpcInfo>;
6126
7184
  message?: string;
6127
7185
  nearby: Array<NearbyPlayer>;
7186
+ pirates?: Array<PirateInfo>;
6128
7187
  poi_id: string;
7188
+ prizes?: Array<PrizeInfo>;
6129
7189
  system_agents: Array<NearbyPlayer>;
6130
7190
  system_id: string;
6131
7191
  unknown_signature: boolean;
@@ -6414,6 +7474,15 @@ export type TransferPassengersResponse = {
6414
7474
  target_ship_name: string;
6415
7475
  transferred: Array<PassengerView>;
6416
7476
  };
7477
+ export type TransferPersonnelResponse = {
7478
+ fit_crew_transferred: number;
7479
+ fit_marines_transferred: number;
7480
+ injured_crew_swapped: number;
7481
+ injured_crew_transferred: number;
7482
+ injured_marines_swapped: number;
7483
+ injured_marines_transferred: number;
7484
+ target: string;
7485
+ };
6417
7486
  export type TransitLoungeView = {
6418
7487
  capacity: number;
6419
7488
  lounge: string;
@@ -6443,6 +7512,15 @@ export type TravelResponse = {
6443
7512
  [key: string]: number;
6444
7513
  };
6445
7514
  };
7515
+ export type TreatPersonnelResponse = {
7516
+ cost?: number;
7517
+ crew_treated: number;
7518
+ marines_treated: number;
7519
+ medical_pool_remaining?: number;
7520
+ source: string;
7521
+ supplies_used?: number;
7522
+ target: string;
7523
+ };
6446
7524
  export type TrimmedBase = {
6447
7525
  allow_outsider_facilities?: boolean;
6448
7526
  armor: number;
@@ -6480,14 +7558,9 @@ export type UninstallModResponse = {
6480
7558
  auto_docked?: boolean;
6481
7559
  auto_undocked?: boolean;
6482
7560
  cpu_used: number;
6483
- damaged: boolean;
6484
- destroyed?: boolean;
6485
7561
  message: string;
6486
7562
  module_id: string;
6487
7563
  power_used: number;
6488
- uninstall_count?: number;
6489
- wear?: number;
6490
- wear_status?: string;
6491
7564
  };
6492
7565
  export type UnloadAllPassengersResponse = {
6493
7566
  auto_docked?: boolean;
@@ -6573,6 +7646,27 @@ export type UseItemResponse = {
6573
7646
  shield?: number;
6574
7647
  shield_restored?: number;
6575
7648
  stat?: string;
7649
+ weapons_reset?: number;
7650
+ };
7651
+ export type V2CargoItem = {
7652
+ item_id: string;
7653
+ /**
7654
+ * Resolved display name of the item
7655
+ */
7656
+ item_name: string;
7657
+ quantity: number;
7658
+ /**
7659
+ * Cargo space one unit occupies
7660
+ */
7661
+ size: number;
7662
+ };
7663
+ export type V2CarriedShip = {
7664
+ class_id: string;
7665
+ class_name: string;
7666
+ name: string;
7667
+ scale: number;
7668
+ ship_id: string;
7669
+ slots_used: number;
6576
7670
  };
6577
7671
  export type V2CommandActionEntry = {
6578
7672
  action: string;
@@ -6595,29 +7689,11 @@ export type V2GameState = {
6595
7689
  /**
6596
7690
  * Full cargo manifest. In mutation deltas the array replaces prior client state wholesale: an absent key means unchanged, an explicit empty array means the hold emptied.
6597
7691
  */
6598
- cargo?: Array<{
6599
- item_id?: string;
6600
- /**
6601
- * Resolved display name of the item
6602
- */
6603
- item_name?: string;
6604
- quantity?: number;
6605
- /**
6606
- * Cargo space one unit occupies
6607
- */
6608
- size?: number;
6609
- }>;
7692
+ cargo?: Array<V2CargoItem>;
6610
7693
  /**
6611
7694
  * Ships loaded in the current ship's carrier bay (v2_get_cargo only; present only on carrier ships)
6612
7695
  */
6613
- carried_ships?: Array<{
6614
- class_id?: string;
6615
- class_name?: string;
6616
- name?: string;
6617
- scale?: number;
6618
- ship_id?: string;
6619
- slots_used?: number;
6620
- }>;
7696
+ carried_ships?: Array<V2CarriedShip>;
6621
7697
  /**
6622
7698
  * Current credit balance, surfaced by lean query endpoints (get_ship, get_cargo, get_location) that omit the full player blob
6623
7699
  */
@@ -6628,569 +7704,327 @@ export type V2GameState = {
6628
7704
  details?: {
6629
7705
  [key: string]: unknown;
6630
7706
  };
7707
+ /**
7708
+ * Drone bay counters and in-bay drones (v2_get_ship only; omitted when the player has no bay and no drones)
7709
+ */
7710
+ drone_bay?: DroneBayView;
6631
7711
  hints?: Array<string>;
6632
- location?: {
6633
- /**
6634
- * System IDs adjacent to the current system
6635
- */
6636
- connections?: Array<string>;
6637
- /**
6638
- * Base ID docked at; null when undocked
6639
- */
6640
- docked_at?: string | null;
6641
- empire?: string;
6642
- /**
6643
- * True when actively jumping or traveling
6644
- */
6645
- in_transit?: boolean;
6646
- /**
6647
- * Count of nearby empire NPCs before the response cap is applied
6648
- */
6649
- nearby_empire_npc_count?: number;
6650
- /**
6651
- * Empire NPCs at the current POI
6652
- */
6653
- nearby_empire_npcs?: Array<{
6654
- empire?: string;
6655
- /**
6656
- * Set for empire fleet member NPCs
6657
- */
6658
- fleet_name?: string;
6659
- in_combat?: boolean;
6660
- name?: string;
6661
- npc_id?: string;
6662
- role?: string;
6663
- ship_class?: string;
6664
- ship_name?: string;
6665
- }>;
6666
- /**
6667
- * Count of nearby pirates before the response cap is applied
6668
- */
6669
- nearby_pirate_count?: number;
6670
- /**
6671
- * Pirate NPCs at the current POI
6672
- */
6673
- nearby_pirates?: Array<{
6674
- hull?: number;
6675
- is_boss?: boolean;
6676
- max_hull?: number;
6677
- max_shield?: number;
6678
- name?: string;
6679
- pirate_id?: string;
6680
- shield?: number;
6681
- status?: string;
6682
- tier?: string;
6683
- }>;
6684
- /**
6685
- * Count of nearby players before the response cap is applied
6686
- */
6687
- nearby_player_count?: number;
6688
- /**
6689
- * Other (non-cloaked) players at the current POI
6690
- */
6691
- nearby_players?: Array<{
6692
- clan_tag?: string;
6693
- faction_tag?: string;
6694
- in_combat?: boolean;
6695
- offline?: boolean;
6696
- player_id?: string;
6697
- ship_class?: string;
6698
- /**
6699
- * Custom ship name
6700
- */
6701
- ship_name?: string;
6702
- username?: string;
6703
- }>;
6704
- /**
6705
- * Number of offline nearby players collapsed into a count when the POI is crowded (omitted when zero)
6706
- */
6707
- offline_collapsed?: number;
6708
- poi_id?: string;
6709
- poi_name?: string;
6710
- poi_type?: string;
6711
- /**
6712
- * Mineable resources at the current POI
6713
- */
6714
- resources?: Array<{
6715
- item_id?: string;
6716
- item_name?: string;
6717
- remaining?: number;
6718
- richness?: number;
6719
- /**
6720
- * Beam power this deposit supports at full extraction rate (standard precision); omitted when depleted or unlimited
6721
- */
6722
- supported_power?: number;
6723
- }>;
6724
- security_status?: string;
6725
- system_id?: string;
6726
- system_name?: string;
6727
- /**
6728
- * Engine tick when transit completes
6729
- */
6730
- transit_arrival_tick?: number;
6731
- /**
6732
- * Plotted compass bearing in degrees (pathfinder only)
6733
- */
6734
- transit_bearing?: number;
6735
- /**
6736
- * Destination POI ID (travel only)
6737
- */
6738
- transit_dest_poi_id?: string;
6739
- /**
6740
- * Destination POI name (travel only)
6741
- */
6742
- transit_dest_poi_name?: string;
6743
- /**
6744
- * Destination system ID (jump only)
6745
- */
6746
- transit_dest_system_id?: string;
6747
- /**
6748
- * Destination system name (jump only)
6749
- */
6750
- transit_dest_system_name?: string;
6751
- /**
6752
- * Ticks since the pathfinder drift began (pathfinder only)
6753
- */
6754
- transit_ticks_elapsed?: number;
6755
- /**
6756
- * "jump", "travel", or "pathfinder"
6757
- */
6758
- transit_type?: string;
6759
- /**
6760
- * Current galactic X coordinate (pathfinder only)
6761
- */
6762
- transit_x?: number;
6763
- /**
6764
- * Current galactic Y coordinate (pathfinder only)
6765
- */
6766
- transit_y?: number;
6767
- /**
6768
- * True when a cloaked ship at this POI is near your sensor threshold. Presence only — run an area scan (scan with no target_id) to resolve it (omitted when false)
6769
- */
6770
- unknown_signature?: boolean;
6771
- /**
6772
- * Navigation flavour text; present only when drifting beyond the galaxy edge (pathfinder void transit only)
6773
- */
6774
- void_message?: string;
6775
- };
7712
+ location?: V2Location;
6776
7713
  message?: string;
6777
7714
  /**
6778
7715
  * Active missions and mission capacity
6779
7716
  */
6780
- missions?: {
6781
- /**
6782
- * Currently active mission objects
6783
- */
6784
- active?: Array<{
6785
- accepted_at?: string;
6786
- /**
6787
- * True for community/faction-wide missions
6788
- */
6789
- community?: boolean;
6790
- /**
6791
- * Community missions only
6792
- */
6793
- community_percent?: number;
6794
- /**
6795
- * item_id → "current/target" (community missions only)
6796
- */
6797
- community_progress?: {
6798
- [key: string]: string;
6799
- };
6800
- description?: string;
6801
- difficulty?: number;
6802
- expires_in_ticks?: number;
6803
- /**
6804
- * Present only when the mission has a named NPC giver
6805
- */
6806
- giver?: {
6807
- name?: string;
6808
- title?: string;
6809
- };
6810
- issuing_base?: string;
6811
- issuing_base_id?: string;
6812
- issuing_system_id?: string;
6813
- issuing_system_name?: string;
6814
- mission_id?: string;
6815
- objectives?: Array<{
6816
- completed?: boolean;
6817
- current?: number;
6818
- description?: string;
6819
- /**
6820
- * player_threshold objectives only
6821
- */
6822
- eligible_players?: Array<string>;
6823
- in_cargo?: number;
6824
- in_storage?: number;
6825
- item_id?: string;
6826
- item_name?: string;
6827
- /**
6828
- * player_threshold objectives only
6829
- */
6830
- participants?: Array<string>;
6831
- required?: number;
6832
- system_id?: string;
6833
- system_name?: string;
6834
- target_base?: string;
6835
- target_base_name?: string;
6836
- type?: string;
6837
- }>;
6838
- percent_complete?: number;
6839
- rewards?: {
6840
- credits?: number;
6841
- /**
6842
- * item_id → quantity
6843
- */
6844
- items?: {
6845
- [key: string]: number;
6846
- };
6847
- pirate_rep?: number;
6848
- reputation?: number;
6849
- /**
6850
- * skill_id → XP
6851
- */
6852
- skill_xp?: {
6853
- [key: string]: number;
6854
- };
6855
- };
6856
- template_id?: string;
6857
- title?: string;
6858
- type?: string;
6859
- }>;
6860
- /**
6861
- * Maximum simultaneous missions allowed
6862
- */
6863
- max_missions?: number;
6864
- };
7717
+ missions?: V2Missions;
6865
7718
  /**
6866
7719
  * Installed ship modules. In mutation deltas the array replaces prior client state wholesale: an absent key means unchanged, an explicit empty array means no modules remain installed.
6867
7720
  */
6868
- modules?: Array<{
6869
- /**
6870
- * Present only on weapons that consume ammo
6871
- */
6872
- ammo_type?: string;
6873
- /**
6874
- * After engineering efficiency bonus
6875
- */
6876
- cpu_usage?: number;
6877
- /**
6878
- * Present only on weapons that consume ammo
6879
- */
6880
- current_ammo?: number;
6881
- /**
6882
- * Present only when ammo is loaded
6883
- */
6884
- loaded_ammo_id?: string;
6885
- /**
6886
- * Present only when ammo is loaded
6887
- */
6888
- loaded_ammo_name?: string;
6889
- /**
6890
- * Present only on weapons that consume ammo
6891
- */
6892
- magazine_size?: number;
6893
- module_id?: string;
6894
- name?: string;
6895
- /**
6896
- * After engineering efficiency bonus
6897
- */
6898
- power_usage?: number;
6899
- size?: number;
6900
- slot?: string;
6901
- /**
6902
- * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
6903
- */
6904
- stats?: {
6905
- [key: string]: unknown;
6906
- };
6907
- /**
6908
- * weapon, defense, utility, or mining
6909
- */
6910
- type?: string;
6911
- type_id?: string;
6912
- wear?: number;
6913
- wear_status?: string;
6914
- }>;
6915
- player?: {
6916
- /**
6917
- * Empire IDs this player holds citizenship in (omitted when empty). Independent of the immutable origin empire.
6918
- */
6919
- citizenships?: Array<string>;
6920
- clan_tag?: string;
6921
- credits?: number;
6922
- empire?: string;
6923
- faction_id?: string;
6924
- faction_rank?: string;
6925
- home_base?: string;
6926
- /**
6927
- * POI ID of the home base (omitted when no home base set)
6928
- */
6929
- home_poi?: string;
6930
- /**
6931
- * System ID of the home base (omitted when no home base set)
6932
- */
6933
- home_system?: string;
6934
- id?: string;
6935
- is_cloaked?: boolean;
6936
- primary_color?: string;
6937
- secondary_color?: string;
6938
- /**
6939
- * Reputation score per empire ID. Keys: solarian, voidborn, crimson, nebula, outerrim, pirates.
6940
- */
6941
- standings?: {
6942
- [key: string]: {
6943
- /**
6944
- * Decay target; rep drifts toward this over time
6945
- */
6946
- baseline?: number;
6947
- /**
6948
- * Time detained until by this empire; omitted when not jailed
6949
- */
6950
- jailed_until?: string;
6951
- /**
6952
- * Sum of uncleaned crime bounties with this empire (credits)
6953
- */
6954
- outstanding_bounty?: number;
6955
- /**
6956
- * Current rep score, range -100 to +100
6957
- */
6958
- reputation?: number;
6959
- };
6960
- };
6961
- /**
6962
- * Lifetime player statistics (credits earned, ships destroyed, ore mined, etc.)
6963
- */
6964
- stats?: {
6965
- [key: string]: unknown;
6966
- };
6967
- status_message?: string;
6968
- /**
6969
- * ID of this player's own ship currently under tow via a tow rig (omitted when not towing a ship)
6970
- */
6971
- towing_ship_id?: string;
6972
- /**
6973
- * ID of the wreck this player is currently towing (omitted when not towing)
6974
- */
6975
- towing_wreck_id?: string;
6976
- /**
6977
- * Trading, gifting, and exchange access restricted until this time (self-destruct penalty); omitted when no restriction is active
6978
- */
6979
- trading_restricted_until?: string;
6980
- username?: string;
6981
- };
7721
+ modules?: Array<V2Module>;
7722
+ player?: V2Player;
7723
+ /**
7724
+ * Active intact-ship recovery operations assigned to this player. Includes in-transit and stalled prizes outside the current POI.
7725
+ */
7726
+ prize_recoveries?: Array<PrizeRecoveryInfo>;
6982
7727
  /**
6983
7728
  * Pending action queue status
6984
7729
  */
6985
- queue?: {
6986
- /**
6987
- * Whether a tick-deferred action is queued
6988
- */
6989
- has_pending?: boolean;
6990
- };
7730
+ queue?: V2Queue;
6991
7731
  /**
6992
7732
  * Present when the player is riding as a passenger aboard another player's ship (no ship of their own); the ship/modules/cargo blocks are omitted in that state.
6993
7733
  */
6994
- riding?: {
6995
- /**
6996
- * Username of the carrier piloting that ship
6997
- */
6998
- carrier?: string;
6999
- /**
7000
- * ID of the ship being ridden
7001
- */
7002
- ship_id?: string;
7734
+ riding?: V2Riding;
7735
+ ship?: V2Ship;
7736
+ /**
7737
+ * Player skill levels and XP, keyed by skill ID
7738
+ */
7739
+ skills?: {
7740
+ [key: string]: SkillProgress;
7003
7741
  };
7004
- ship?: {
7005
- /**
7006
- * Active consumable buffs (omitted when none active)
7007
- */
7008
- active_buffs?: Array<{
7009
- /**
7010
- * Bonus amount (percentage for most stats, absolute for hull_regen)
7011
- */
7012
- amount?: number;
7013
- /**
7014
- * Engine tick when the buff expires
7015
- */
7016
- expires_at?: number;
7017
- /**
7018
- * Item that created this buff
7019
- */
7020
- item_id?: string;
7021
- /**
7022
- * Effect stat name, e.g. weapon_damage
7023
- */
7024
- stat?: string;
7025
- }>;
7026
- armor?: number;
7027
- /**
7028
- * Armor effectiveness reduction, 0.0-1.0 (omitted when not affected)
7029
- */
7030
- armor_melt_pct?: number;
7031
- /**
7032
- * Remaining ticks of plasma/corrosive armor melt (omitted when not affected)
7033
- */
7034
- armor_melt_ticks_remaining?: number;
7035
- /**
7036
- * Passenger accommodation by class (omitted when the ship has no berths)
7037
- */
7038
- berths?: {
7039
- /**
7040
- * Total and free business berths
7041
- */
7042
- business: {
7043
- /**
7044
- * Berths of this class still free once citizens aboard are seated
7045
- */
7046
- free: number;
7047
- /**
7048
- * Berths of this class on the hull plus fitted cabins
7049
- */
7050
- total: number;
7051
- };
7052
- /**
7053
- * Total and free economy berths
7054
- */
7055
- economy: {
7056
- /**
7057
- * Berths of this class still free once citizens aboard are seated
7058
- */
7059
- free: number;
7060
- /**
7061
- * Berths of this class on the hull plus fitted cabins
7062
- */
7063
- total: number;
7064
- };
7065
- /**
7066
- * Total and free first berths
7067
- */
7068
- first: {
7069
- /**
7070
- * Berths of this class still free once citizens aboard are seated
7071
- */
7072
- free: number;
7073
- /**
7074
- * Berths of this class on the hull plus fitted cabins
7075
- */
7076
- total: number;
7077
- };
7078
- };
7079
- /**
7080
- * Damage dealt per tick while burning (omitted when not burning)
7081
- */
7082
- burn_damage_per_tick?: number;
7083
- /**
7084
- * Player ID of the most recent burn applier, credited on burn kills (omitted when not burning)
7085
- */
7086
- burn_source_id?: string;
7087
- /**
7088
- * Remaining ticks of incendiary/entropic burn damage-over-time (omitted when not burning)
7089
- */
7090
- burn_ticks_remaining?: number;
7091
- cargo_capacity?: number;
7092
- cargo_used?: number;
7093
- class_id?: string;
7094
- class_name?: string;
7095
- /**
7096
- * Total CPU available
7097
- */
7098
- cpu_capacity?: number;
7099
- /**
7100
- * CPU consumed by fitted modules (after engineering efficiency bonus)
7101
- */
7102
- cpu_used?: number;
7103
- /**
7104
- * Player-assigned custom ship name (omitted when unset)
7105
- */
7106
- custom_name?: string;
7107
- /**
7108
- * Damage reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
7109
- */
7110
- damage_penalty?: number;
7111
- /**
7112
- * Number of defense module slots
7113
- */
7114
- defense_slots?: number;
7115
- /**
7116
- * Remaining ticks of EM disruption (omitted when not disrupted)
7117
- */
7118
- disruption_ticks_remaining?: number;
7119
- fuel?: number;
7120
- /**
7121
- * Percent of normal cargo space gases occupy (omitted when 100)
7122
- */
7123
- gas_cargo_efficiency?: number;
7124
- hull?: number;
7125
- /**
7126
- * Percent of normal cargo space ices occupy (omitted when 100)
7127
- */
7128
- ice_cargo_efficiency?: number;
7129
- id?: string;
7130
- max_fuel?: number;
7131
- max_hull?: number;
7132
- max_shield?: number;
7133
- /**
7134
- * Display name of the ship (custom name if set, otherwise the class name)
7135
- */
7136
- name?: string;
7137
- /**
7138
- * Percent of normal cargo space ores/crystals occupy (50 = half; omitted when 100)
7139
- */
7140
- ore_cargo_efficiency?: number;
7141
- /**
7142
- * Total power available
7143
- */
7144
- power_capacity?: number;
7145
- /**
7146
- * Power consumed by fitted modules (after engineering efficiency bonus)
7147
- */
7148
- power_used?: number;
7149
- shield?: number;
7150
- shield_recharge?: number;
7151
- speed?: number;
7152
- /**
7153
- * Speed reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
7154
- */
7155
- speed_penalty?: number;
7156
- /**
7157
- * Number of utility module slots
7158
- */
7159
- utility_slots?: number;
7160
- /**
7161
- * Number of weapon module slots
7162
- */
7163
- weapon_slots?: number;
7742
+ /**
7743
+ * State format version
7744
+ */
7745
+ version?: string;
7746
+ };
7747
+ export type V2GetCommandsResponse = {
7748
+ actions: Array<V2CommandActionEntry>;
7749
+ };
7750
+ export type V2Location = {
7751
+ /**
7752
+ * System IDs adjacent to the current system
7753
+ */
7754
+ connections: Array<string>;
7755
+ /**
7756
+ * Base ID docked at; null when undocked
7757
+ */
7758
+ docked_at: string | null;
7759
+ empire: string;
7760
+ /**
7761
+ * True when actively jumping or traveling
7762
+ */
7763
+ in_transit?: boolean;
7764
+ /**
7765
+ * Count of nearby empire NPCs before the response cap is applied
7766
+ */
7767
+ nearby_empire_npc_count: number;
7768
+ /**
7769
+ * Empire NPCs at the current POI
7770
+ */
7771
+ nearby_empire_npcs: Array<V2NearbyEmpireNpc>;
7772
+ /**
7773
+ * Count of nearby pirates before the response cap is applied
7774
+ */
7775
+ nearby_pirate_count: number;
7776
+ /**
7777
+ * Pirate NPCs at the current POI
7778
+ */
7779
+ nearby_pirates: Array<V2NearbyPirate>;
7780
+ /**
7781
+ * Count of nearby players before the response cap is applied
7782
+ */
7783
+ nearby_player_count: number;
7784
+ /**
7785
+ * Other (non-cloaked) players at the current POI
7786
+ */
7787
+ nearby_players: Array<V2NearbyPlayer>;
7788
+ /**
7789
+ * Count of nearby intact prizes before the response cap is applied
7790
+ */
7791
+ nearby_prize_count: number;
7792
+ /**
7793
+ * Intact captured ships physically present at the current POI
7794
+ */
7795
+ nearby_prizes: Array<PrizeInfo>;
7796
+ /**
7797
+ * Number of offline nearby players collapsed into a count when the POI is crowded (omitted when zero)
7798
+ */
7799
+ offline_collapsed?: number;
7800
+ poi_id: string;
7801
+ poi_name: string;
7802
+ poi_type: string;
7803
+ /**
7804
+ * Mineable resources at the current POI
7805
+ */
7806
+ resources: Array<V2Resource>;
7807
+ security_status: string;
7808
+ system_id: string;
7809
+ system_name: string;
7810
+ /**
7811
+ * Engine tick when transit completes
7812
+ */
7813
+ transit_arrival_tick?: number;
7814
+ /**
7815
+ * Plotted compass bearing in degrees (pathfinder only)
7816
+ */
7817
+ transit_bearing?: number;
7818
+ /**
7819
+ * Destination POI ID (travel only)
7820
+ */
7821
+ transit_dest_poi_id?: string;
7822
+ /**
7823
+ * Destination POI name (travel only)
7824
+ */
7825
+ transit_dest_poi_name?: string;
7826
+ /**
7827
+ * Destination system ID (jump only)
7828
+ */
7829
+ transit_dest_system_id?: string;
7830
+ /**
7831
+ * Destination system name (jump only)
7832
+ */
7833
+ transit_dest_system_name?: string;
7834
+ /**
7835
+ * Ticks since the pathfinder drift began (pathfinder only)
7836
+ */
7837
+ transit_ticks_elapsed?: number;
7838
+ /**
7839
+ * "jump", "travel", or "pathfinder"
7840
+ */
7841
+ transit_type?: string;
7842
+ /**
7843
+ * Current galactic X coordinate (pathfinder only)
7844
+ */
7845
+ transit_x?: number;
7846
+ /**
7847
+ * Current galactic Y coordinate (pathfinder only)
7848
+ */
7849
+ transit_y?: number;
7850
+ /**
7851
+ * True when a cloaked ship at this POI is near your sensor threshold. Presence only — run an area scan (scan with no target_id) to resolve it (omitted when false)
7852
+ */
7853
+ unknown_signature?: boolean;
7854
+ /**
7855
+ * Navigation flavour text; present only when drifting beyond the galaxy edge (pathfinder void transit only)
7856
+ */
7857
+ void_message?: string;
7858
+ };
7859
+ export type V2Missions = {
7860
+ /**
7861
+ * Currently active mission objects
7862
+ */
7863
+ active: Array<ActiveMissionInfo>;
7864
+ /**
7865
+ * Maximum simultaneous missions allowed
7866
+ */
7867
+ max_missions: number;
7868
+ };
7869
+ export type V2Module = {
7870
+ /**
7871
+ * Present only on weapons that consume ammo
7872
+ */
7873
+ ammo_type?: string;
7874
+ /**
7875
+ * After engineering efficiency bonus
7876
+ */
7877
+ cpu_usage: number;
7878
+ /**
7879
+ * Present only on weapons that consume ammo
7880
+ */
7881
+ current_ammo?: number;
7882
+ /**
7883
+ * Present only when ammo is loaded
7884
+ */
7885
+ loaded_ammo_id?: string;
7886
+ /**
7887
+ * Present only when ammo is loaded
7888
+ */
7889
+ loaded_ammo_name?: string;
7890
+ /**
7891
+ * Present only on weapons that consume ammo
7892
+ */
7893
+ magazine_size?: number;
7894
+ module_id: string;
7895
+ name: string;
7896
+ /**
7897
+ * After engineering efficiency bonus
7898
+ */
7899
+ power_usage: number;
7900
+ size: number;
7901
+ slot: string;
7902
+ /**
7903
+ * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
7904
+ */
7905
+ stats?: {
7906
+ [key: string]: unknown;
7164
7907
  };
7165
7908
  /**
7166
- * Player skill levels and XP, keyed by skill ID
7909
+ * weapon, defense, utility, or mining
7910
+ */
7911
+ type: string;
7912
+ type_id: string;
7913
+ };
7914
+ export type V2NearbyEmpireNpc = {
7915
+ empire: string;
7916
+ /**
7917
+ * Set for empire fleet member NPCs
7918
+ */
7919
+ fleet_name?: string;
7920
+ in_combat: boolean;
7921
+ name: string;
7922
+ npc_id: string;
7923
+ role: string;
7924
+ ship_class?: string;
7925
+ ship_name?: string;
7926
+ };
7927
+ export type V2NearbyPirate = {
7928
+ /**
7929
+ * Stronghold crew this pirate flies for, e.g. pirate_kael. This is the reputation counterparty: attacking them costs standing with this crew alone, not with pirates in general.
7930
+ */
7931
+ faction?: string;
7932
+ /**
7933
+ * Human-readable name of the stronghold crew, e.g. Admiral Kael.
7934
+ */
7935
+ faction_name?: string;
7936
+ hull: number;
7937
+ is_boss: boolean;
7938
+ max_hull: number;
7939
+ max_shield: number;
7940
+ name: string;
7941
+ pirate_id: string;
7942
+ shield: number;
7943
+ status: string;
7944
+ tier: string;
7945
+ };
7946
+ export type V2NearbyPlayer = {
7947
+ clan_tag?: string;
7948
+ faction_tag?: string;
7949
+ in_combat: boolean;
7950
+ offline?: boolean;
7951
+ player_id: string;
7952
+ ship_class?: string;
7953
+ /**
7954
+ * Custom ship name
7955
+ */
7956
+ ship_name?: string;
7957
+ username?: string;
7958
+ };
7959
+ export type V2Personnel = {
7960
+ fit_crew: number;
7961
+ fit_marines: number;
7962
+ injured_crew: number;
7963
+ injured_marines: number;
7964
+ };
7965
+ export type V2Player = {
7966
+ /**
7967
+ * Empire IDs this player holds citizenship in (omitted when empty). Independent of the immutable origin empire.
7167
7968
  */
7168
- skills?: {
7169
- [key: string]: {
7170
- /**
7171
- * Skill category
7172
- */
7173
- category?: string;
7174
- level?: number;
7175
- /**
7176
- * Maximum attainable level for this skill
7177
- */
7178
- max_level?: number;
7179
- /**
7180
- * Display name of the skill
7181
- */
7182
- name?: string;
7183
- next_level_xp?: number;
7184
- xp?: number;
7185
- };
7969
+ citizenships?: Array<string>;
7970
+ clan_tag: string;
7971
+ credits: number;
7972
+ empire: string;
7973
+ faction_id?: string;
7974
+ faction_rank?: string;
7975
+ home_base: string;
7976
+ /**
7977
+ * POI ID of the home base (omitted when no home base set)
7978
+ */
7979
+ home_poi?: string;
7980
+ /**
7981
+ * System ID of the home base (omitted when no home base set)
7982
+ */
7983
+ home_system?: string;
7984
+ id: string;
7985
+ is_cloaked: boolean;
7986
+ primary_color: string;
7987
+ secondary_color: string;
7988
+ /**
7989
+ * Reputation per counterparty. Keys: the five empires (solarian, voidborn, crimson, nebula, outerrim) plus one per pirate stronghold (pirate_voss, pirate_kael, pirate_thane, pirate_mera, pirate_dross, pirate_crix, pirate_sable, pirate_nyx, pirate_korr). Each stronghold keeps its own books, so attacking one crew leaves the others' opinion of you unchanged.
7990
+ */
7991
+ standings?: {
7992
+ [key: string]: EmpireStanding;
7186
7993
  };
7187
7994
  /**
7188
- * State format version
7995
+ * Lifetime player statistics (credits earned, ships destroyed, ore mined, etc.)
7189
7996
  */
7190
- version?: string;
7997
+ stats: unknown;
7998
+ status_message: string;
7999
+ /**
8000
+ * ID of this player's own ship currently under tow via a tow rig (omitted when not towing a ship)
8001
+ */
8002
+ towing_ship_id?: string;
8003
+ /**
8004
+ * ID of the wreck this player is currently towing (omitted when not towing)
8005
+ */
8006
+ towing_wreck_id?: string;
8007
+ /**
8008
+ * Trading, gifting, and exchange access restricted until this time (self-destruct penalty); omitted when no restriction is active
8009
+ */
8010
+ trading_restricted_until?: string;
8011
+ username: string;
7191
8012
  };
7192
- export type V2GetCommandsResponse = {
7193
- actions: Array<V2CommandActionEntry>;
8013
+ export type V2Queue = {
8014
+ /**
8015
+ * Whether a tick-deferred action is queued
8016
+ */
8017
+ has_pending: boolean;
8018
+ };
8019
+ export type V2Resource = {
8020
+ item_id: string;
8021
+ item_name: string;
8022
+ remaining: number;
8023
+ richness: number;
8024
+ /**
8025
+ * Beam power this deposit supports at full extraction rate (standard precision); omitted when depleted or unlimited
8026
+ */
8027
+ supported_power?: number;
7194
8028
  };
7195
8029
  /**
7196
8030
  * Standard v2 REST API response envelope.
@@ -7205,9 +8039,11 @@ export type V2Response = {
7205
8039
  */
7206
8040
  code?: string;
7207
8041
  /**
7208
- * Optional structured details about the error. Shape varies by error code. For example, `missing_materials` includes an array of {item_id, item_name, need, have} objects.
8042
+ * Optional structured details about the error. Always an object; its keys vary by error code. For example, `missing_materials` carries a `missing` array of {item_id, item_name, need, have} objects.
7209
8043
  */
7210
- details?: unknown;
8044
+ details?: {
8045
+ [key: string]: unknown;
8046
+ };
7211
8047
  /**
7212
8048
  * Human-readable error message.
7213
8049
  */
@@ -7224,15 +8060,15 @@ export type V2Response = {
7224
8060
  /**
7225
8061
  * Notification payload. Shape depends on msg_type — see the Notification_* schemas under components.schemas.
7226
8062
  */
7227
- data?: NotificationAchievementUnlocked | NotificationBaseDestroyed | NotificationStationRepaired | NotificationRanchPoached | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCraftingUpdate | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationMarketUpdate | NotificationObservationUpdate | NotificationMiningYield | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationReconnected | NotificationScanDetected | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived;
8063
+ data?: NotificationAchievementUnlocked | NotificationDroneAdrift | NotificationServerRestartWarning | NotificationFactionAllianceBroken | NotificationFactionAllianceFormed | NotificationFactionAllianceProposal | NotificationFactionPeaceAccepted | NotificationFactionPeaceProposal | NotificationFactionWarDeclared | NotificationBaseDestroyed | NotificationStationRepaired | NotificationRanchPoached | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationShipCaptured | NotificationPrizeUpdate | NotificationPersonnelUpdate | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCraftingUpdate | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationMarketUpdate | NotificationObservationUpdate | NotificationMiningYield | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationReconnected | NotificationScanDetected | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived;
7228
8064
  id?: string;
7229
8065
  /**
7230
- * Specific message subtype used for handler routing (e.g. chat_message, combat_update, action_result, mining_yield). Switch on this to pick the matching Notification_* payload schema.
8066
+ * Specific message subtype used for handler routing (e.g. chat_message, battle_update, action_result, mining_yield). Switch on this to pick the matching Notification_* payload schema.
7231
8067
  */
7232
8068
  msg_type?: string;
7233
8069
  timestamp?: string;
7234
8070
  /**
7235
- * Notification category: system, combat, trade, chat, friend, tip
8071
+ * Notification category: chat, combat, trade, market, crafting, observation, system
7236
8072
  */
7237
8073
  type?: string;
7238
8074
  }>;
@@ -7256,6 +8092,160 @@ export type V2Response = {
7256
8092
  [key: string]: unknown;
7257
8093
  };
7258
8094
  };
8095
+ export type V2Riding = {
8096
+ /**
8097
+ * Username of the carrier piloting that ship
8098
+ */
8099
+ carrier?: string;
8100
+ /**
8101
+ * ID of the ship being ridden
8102
+ */
8103
+ ship_id: string;
8104
+ };
8105
+ export type V2Ship = {
8106
+ /**
8107
+ * Active consumable buffs (omitted when none active)
8108
+ */
8109
+ active_buffs?: Array<ShipActiveBuff>;
8110
+ armor: number;
8111
+ /**
8112
+ * Armor effectiveness reduction, 0.0-1.0 (omitted when not affected)
8113
+ */
8114
+ armor_melt_pct?: number;
8115
+ /**
8116
+ * Remaining ticks of plasma/corrosive armor melt (omitted when not affected)
8117
+ */
8118
+ armor_melt_ticks_remaining?: number;
8119
+ /**
8120
+ * Passenger accommodation by class (omitted when the ship has no berths)
8121
+ */
8122
+ berths?: BerthsView;
8123
+ /**
8124
+ * Damage dealt per tick while burning (omitted when not burning)
8125
+ */
8126
+ burn_damage_per_tick?: number;
8127
+ /**
8128
+ * Player ID of the most recent burn applier, credited on burn kills (omitted when not burning)
8129
+ */
8130
+ burn_source_id?: string;
8131
+ /**
8132
+ * Remaining ticks of incendiary/entropic burn damage-over-time (omitted when not burning)
8133
+ */
8134
+ burn_ticks_remaining?: number;
8135
+ cargo_capacity: number;
8136
+ cargo_used: number;
8137
+ class_id: string;
8138
+ class_name: string;
8139
+ /**
8140
+ * Total CPU available
8141
+ */
8142
+ cpu_capacity: number;
8143
+ /**
8144
+ * CPU consumed by fitted modules (after engineering efficiency bonus)
8145
+ */
8146
+ cpu_used: number;
8147
+ /**
8148
+ * Active-system output multiplier from fit crew relative to minimum crew; 0.0-1.0
8149
+ */
8150
+ crew_efficiency: number;
8151
+ /**
8152
+ * Player-assigned custom ship name (omitted when unset)
8153
+ */
8154
+ custom_name?: string;
8155
+ /**
8156
+ * Damage reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
8157
+ */
8158
+ damage_penalty?: number;
8159
+ /**
8160
+ * Number of defense module slots
8161
+ */
8162
+ defense_slots: number;
8163
+ /**
8164
+ * Remaining ticks of EM disruption (omitted when not disrupted)
8165
+ */
8166
+ disruption_ticks_remaining?: number;
8167
+ /**
8168
+ * Current crew capacity after hull and fitted-module effects
8169
+ */
8170
+ effective_crew_capacity: number;
8171
+ /**
8172
+ * Current marine capacity after hull and fitted-module effects
8173
+ */
8174
+ effective_marine_capacity: number;
8175
+ fuel: number;
8176
+ /**
8177
+ * Percent of normal cargo space gases occupy (omitted when 100)
8178
+ */
8179
+ gas_cargo_efficiency?: number;
8180
+ hull: number;
8181
+ /**
8182
+ * Percent of normal cargo space ices occupy (omitted when 100)
8183
+ */
8184
+ ice_cargo_efficiency?: number;
8185
+ id: string;
8186
+ /**
8187
+ * True when initialized personnel include no fit crew and active ship operations are unavailable
8188
+ */
8189
+ incapacitated: boolean;
8190
+ /**
8191
+ * Where this ship is (get_ship by ship_id only; omitted for the ship you are flying)
8192
+ */
8193
+ location?: string;
8194
+ max_fuel: number;
8195
+ max_hull: number;
8196
+ max_shield: number;
8197
+ /**
8198
+ * Fit crew required for full operational efficiency
8199
+ */
8200
+ minimum_crew: number;
8201
+ /**
8202
+ * Display name of the ship (custom name if set, otherwise the class name)
8203
+ */
8204
+ name: string;
8205
+ /**
8206
+ * Current base speed multiplied by crew efficiency; other temporary speed effects are reported separately
8207
+ */
8208
+ operational_speed: number;
8209
+ /**
8210
+ * Percent of normal cargo space mined ores and minerals occupy (50 = half; omitted when 100)
8211
+ */
8212
+ ore_cargo_efficiency?: number;
8213
+ /**
8214
+ * Current fit and injured crew and marine counts
8215
+ */
8216
+ personnel: V2Personnel;
8217
+ /**
8218
+ * Server tick when protected final-survivor recovery becomes available
8219
+ */
8220
+ personnel_recovery_tick?: number;
8221
+ /**
8222
+ * Ticks remaining until protected final-survivor recovery
8223
+ */
8224
+ personnel_recovery_ticks_remaining?: number;
8225
+ /**
8226
+ * Total power available
8227
+ */
8228
+ power_capacity: number;
8229
+ /**
8230
+ * Power consumed by fitted modules (after engineering efficiency bonus)
8231
+ */
8232
+ power_used: number;
8233
+ shield: number;
8234
+ shield_recharge: number;
8235
+ speed: number;
8236
+ /**
8237
+ * Speed reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
8238
+ */
8239
+ speed_penalty?: number;
8240
+ /**
8241
+ * Number of utility module slots
8242
+ */
8243
+ utility_slots: number;
8244
+ /**
8245
+ * Number of weapon module slots
8246
+ */
8247
+ weapon_slots: number;
8248
+ };
7259
8249
  export type ViewCompletedMissionResponse = {
7260
8250
  chain_next?: string;
7261
8251
  completion_time: string;
@@ -7320,6 +8310,7 @@ export type ViewStorageResponse = {
7320
8310
  gifts?: Array<StorageGift>;
7321
8311
  hint: string;
7322
8312
  items: Array<CargoItem>;
8313
+ locations: Array<StorageLocation>;
7323
8314
  messages?: Array<StorageMessage>;
7324
8315
  ships: Array<StoredShip>;
7325
8316
  };
@@ -7469,7 +8460,7 @@ export type GetNotificationsData = {
7469
8460
  */
7470
8461
  clear?: boolean;
7471
8462
  /**
7472
- * Filter by notification type (e.g. chat, combat, trade). Repeat parameter for multiple types.
8463
+ * Filter by notification type (chat, combat, trade, market, crafting, observation, system). Repeat parameter for multiple types.
7473
8464
  */
7474
8465
  types?: Array<string>;
7475
8466
  };
@@ -7580,7 +8571,7 @@ export type SpacemoltAcceptMissionResponse = SpacemoltAcceptMissionResponses[key
7580
8571
  export type SpacemoltAttackData = {
7581
8572
  body?: {
7582
8573
  /**
7583
- * ID of the target: a player, pirate, empire NPC, wildlife creature, or station. Opening fire on a station starts a siege; shelling an empire station is a serious crime.
8574
+ * ID of the target: a player, pirate, empire NPC, wildlife creature, intact-prize actor, or station. Prize actor IDs come from get_nearby. Opening fire on a station starts a siege; shelling an empire station is a serious crime.
7584
8575
  */
7585
8576
  id: string;
7586
8577
  };
@@ -7775,7 +8766,7 @@ export type SpacemoltCraftData = {
7775
8766
  */
7776
8767
  count?: number;
7777
8768
  /**
7778
- * Output destination: 'storage' (default), 'faction' (faction main store — requires manage treasury permission), or 'faction:<bucket name or id>' for a specific faction Storage Extension bucket.
8769
+ * Output destination: 'storage' (default), 'faction' (faction main store — requires manage treasury permission), or 'faction:<bucket name or id>' for a specific faction Storage Extension bucket. Pass it alongside job_id to redirect an ALREADY QUEUED job's remaining output there instead of queuing anything new.
7779
8770
  */
7780
8771
  deliver_to?: string;
7781
8772
  /**
@@ -7798,7 +8789,7 @@ export type SpacemoltCraftData = {
7798
8789
  quantity: number;
7799
8790
  }>;
7800
8791
  /**
7801
- * Cancel this queued job (refunding its unconsumed inputs, labor, and rental fee) instead of crafting. Use action='queue' to list your job IDs. Setting job_id implies cancel.
8792
+ * Act on this queued job instead of crafting. Call craft with no recipe_id to list your job IDs. job_id alone cancels it (refunding its unconsumed inputs, labor, and rental fee); job_id together with deliver_to instead redirects the job's REMAINING output to that destination, keeping its recipe, runs, escrow, cost, and queue position.
7802
8793
  */
7803
8794
  job_id?: string;
7804
8795
  /**
@@ -8003,7 +8994,7 @@ export type SpacemoltDockResponse = SpacemoltDockResponses[keyof SpacemoltDockRe
8003
8994
  export type SpacemoltFindRouteData = {
8004
8995
  body?: {
8005
8996
  /**
8006
- * ID of the destination system. Use search_systems to find system IDs by name.
8997
+ * Destination system ID, POI ID, or station Base ID. A station may be identified by either its Base ID or station POI ID. Use search_systems to find system IDs by name.
8007
8998
  */
8008
8999
  id: string;
8009
9000
  };
@@ -8259,7 +9250,7 @@ export type SpacemoltGetGuideData = {
8259
9250
  /**
8260
9251
  * Guide to read (omit to list available guides)
8261
9252
  */
8262
- id?: 'miner' | 'trader' | 'pirate-hunter' | 'explorer' | 'base-builder' | 'drones' | 'fuel' | 'crafting';
9253
+ id?: 'miner' | 'trader' | 'pirate-hunter' | 'boarding' | 'explorer' | 'base-builder' | 'drones' | 'fuel' | 'crafting';
8263
9254
  };
8264
9255
  path?: never;
8265
9256
  query?: never;
@@ -8428,7 +9419,7 @@ export type SpacemoltGetNotificationsData = {
8428
9419
  /**
8429
9420
  * Filter by notification types. Omit for all types.
8430
9421
  */
8431
- types?: Array<'chat' | 'combat' | 'trade' | 'market' | 'crafting' | 'system'>;
9422
+ types?: Array<'chat' | 'combat' | 'trade' | 'market' | 'crafting' | 'observation' | 'system'>;
8432
9423
  };
8433
9424
  path?: never;
8434
9425
  query?: never;
@@ -8552,7 +9543,10 @@ export type SpacemoltGetQueueResponses = {
8552
9543
  export type SpacemoltGetQueueResponse = SpacemoltGetQueueResponses[keyof SpacemoltGetQueueResponses];
8553
9544
  export type SpacemoltGetShipData = {
8554
9545
  body?: {
8555
- [key: string]: unknown;
9546
+ /**
9547
+ * Ship to report on (from list_ships or faction_garages). Omit for the ship you are flying. Any ship you own — parked, garaged, or in a carrier bay — or any ship in your own faction's garage pool can be read from anywhere, without docking or travelling to it.
9548
+ */
9549
+ id?: string;
8556
9550
  };
8557
9551
  path?: never;
8558
9552
  query?: never;
@@ -9103,7 +10097,7 @@ export type SpacemoltListStationPassengersResponse = SpacemoltListStationPasseng
9103
10097
  export type SpacemoltLoadPassengerData = {
9104
10098
  body?: {
9105
10099
  /**
9106
- * Destination station ID or name. Loads all waiting passengers here bound for it, up to your free berths.
10100
+ * Destination station Base ID, station POI ID, or name. Loads all waiting passengers here bound for it, up to your free berths.
9107
10101
  */
9108
10102
  id: string;
9109
10103
  };
@@ -9169,6 +10163,46 @@ export type SpacemoltMineResponses = {
9169
10163
  };
9170
10164
  };
9171
10165
  export type SpacemoltMineResponse = SpacemoltMineResponses[keyof SpacemoltMineResponses];
10166
+ export type SpacemoltPayBountyData = {
10167
+ body?: {
10168
+ /**
10169
+ * Empire whose bounty to clear: solarian, voidborn, crimson, nebula, outerrim. Omit when you owe exactly one empire.
10170
+ */
10171
+ id?: string;
10172
+ /**
10173
+ * Who funds it: "self" (your wallet, the default) or "faction" (the faction treasury; requires ManageTreasury).
10174
+ */
10175
+ source?: 'self' | 'faction';
10176
+ };
10177
+ path?: never;
10178
+ query?: never;
10179
+ url: '/api/v2/spacemolt/pay_bounty';
10180
+ };
10181
+ export type SpacemoltPayBountyErrors = {
10182
+ /**
10183
+ * Bad request — invalid params, unknown command, or game error
10184
+ */
10185
+ 400: unknown;
10186
+ /**
10187
+ * Not authenticated — missing or invalid session
10188
+ */
10189
+ 401: unknown;
10190
+ /**
10191
+ * Rate limited — mutations allow 1 per tick (10 seconds)
10192
+ */
10193
+ 429: unknown;
10194
+ };
10195
+ export type SpacemoltPayBountyResponses = {
10196
+ /**
10197
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (PayBountyResponse)
10198
+ */
10199
+ 200: V2Response & {
10200
+ structuredContent?: V2GameState & {
10201
+ details?: PayBountyResponse;
10202
+ };
10203
+ };
10204
+ };
10205
+ export type SpacemoltPayBountyResponse = SpacemoltPayBountyResponses[keyof SpacemoltPayBountyResponses];
9172
10206
  export type SpacemoltPrepayTaxData = {
9173
10207
  body?: {
9174
10208
  /**
@@ -9208,7 +10242,7 @@ export type SpacemoltPrepayTaxResponse = SpacemoltPrepayTaxResponses[keyof Space
9208
10242
  export type SpacemoltRecycleData = {
9209
10243
  body?: {
9210
10244
  /**
9211
- * Output destination: 'storage' (default), 'faction' (faction main store — requires manage treasury permission), or 'faction:<bucket name or id>' for a specific Storage Extension bucket.
10245
+ * Output destination: 'storage' (default), 'faction' (faction main store — requires manage treasury permission), or 'faction:<bucket name or id>' for a specific Storage Extension bucket. Pass it alongside job_id to redirect an ALREADY QUEUED job's remaining output there instead of queuing anything new.
9212
10246
  */
9213
10247
  deliver_to?: string;
9214
10248
  /**
@@ -9224,7 +10258,7 @@ export type SpacemoltRecycleData = {
9224
10258
  */
9225
10259
  id?: string;
9226
10260
  /**
9227
- * Cancel this queued job (refunding its unconsumed escrow) instead of recycling. Setting job_id implies cancel.
10261
+ * Act on this queued job instead of recycling. job_id alone cancels it (refunding its unconsumed escrow); job_id together with deliver_to instead redirects the job's REMAINING output to that destination, keeping everything else about the job unchanged.
9228
10262
  */
9229
10263
  job_id?: string;
9230
10264
  /**
@@ -9286,11 +10320,11 @@ export type SpacemoltRefuelData = {
9286
10320
  */
9287
10321
  id?: string;
9288
10322
  /**
9289
- * Number of fuel cells to burn or units to transfer (default 1). Applies only to fuel-cell purchases and ship-to-ship transfers; station (credit) refueling ignores quantity and always fills your tank to full.
10323
+ * Number of fuel cells to burn or fuel units to transfer. Fuel cells default to 1; remote transfer defaults to the maximum allowed by donor reserve and recipient tank space. Docked station refueling ignores quantity and draws available fuel toward a full tank.
9290
10324
  */
9291
10325
  quantity?: number;
9292
10326
  /**
9293
- * Player ID or username to transfer fuel to, or 'fleet' for fleet fuel status. Requires a Refueling Pump module for transfers.
10327
+ * Player ID or username at the same real POI to receive fuel, or 'fleet' for read-only fleet fuel status. Transfers require an operational Refueling Pump and the donor retains at least one fuel.
9294
10328
  */
9295
10329
  target?: string;
9296
10330
  };
@@ -9328,13 +10362,13 @@ export type SpacemoltRepairData = {
9328
10362
  /**
9329
10363
  * Specific repair item to use (e.g. repair_kit, hull_patch). Auto-selects cheapest if omitted.
9330
10364
  */
9331
- item_id?: string;
10365
+ id?: string;
9332
10366
  /**
9333
- * Number of repair kits to use (default 1). Capped to what's available and what hull needs.
10367
+ * Number of repair kits to use (default 1). Remote repair is limited by available kits and target hull need. Without a target, a docked repair service uses credits; otherwise kits self-repair anywhere.
9334
10368
  */
9335
10369
  quantity?: number;
9336
10370
  /**
9337
- * Player ID or username to repair, or 'fleet' for fleet hull status. Requires a Repair Arm module for ship-to-ship repair.
10371
+ * Player ID or username to repair at the same real POI, or 'fleet' for read-only fleet hull status. Ship-to-ship repair consumes repair kits and requires an operational Repair Arm.
9338
10372
  */
9339
10373
  target?: string;
9340
10374
  };
@@ -9367,46 +10401,10 @@ export type SpacemoltRepairResponses = {
9367
10401
  };
9368
10402
  };
9369
10403
  export type SpacemoltRepairResponse = SpacemoltRepairResponses[keyof SpacemoltRepairResponses];
9370
- export type SpacemoltRepairModuleData = {
9371
- body?: {
9372
- /**
9373
- * Instance ID of the module to repair (must be in cargo, not fitted)
9374
- */
9375
- id: string;
9376
- };
9377
- path?: never;
9378
- query?: never;
9379
- url: '/api/v2/spacemolt/repair_module';
9380
- };
9381
- export type SpacemoltRepairModuleErrors = {
9382
- /**
9383
- * Bad request — invalid params, unknown command, or game error
9384
- */
9385
- 400: unknown;
9386
- /**
9387
- * Not authenticated — missing or invalid session
9388
- */
9389
- 401: unknown;
9390
- /**
9391
- * Rate limited — mutations allow 1 per tick (10 seconds)
9392
- */
9393
- 429: unknown;
9394
- };
9395
- export type SpacemoltRepairModuleResponses = {
9396
- /**
9397
- * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (RepairModuleResponse)
9398
- */
9399
- 200: V2Response & {
9400
- structuredContent?: V2GameState & {
9401
- details?: RepairModuleResponse;
9402
- };
9403
- };
9404
- };
9405
- export type SpacemoltRepairModuleResponse = SpacemoltRepairModuleResponses[keyof SpacemoltRepairModuleResponses];
9406
10404
  export type SpacemoltScanData = {
9407
10405
  body?: {
9408
10406
  /**
9409
- * ID/username of the player or NPC to scan. Omit to run an area sensor sweep that reveals cloaked ships at your location your scanner out-powers.
10407
+ * Player ID/username, NPC ID/name, wildlife creature ID, or intact-prize actor ID to scan. Prize actor IDs come from get_nearby. Omit to run an area sensor sweep that reveals cloaked ships at your location your scanner out-powers.
9410
10408
  */
9411
10409
  id?: string;
9412
10410
  };
@@ -9620,7 +10618,7 @@ export type SpacemoltSurveySystemResponse = SpacemoltSurveySystemResponses[keyof
9620
10618
  export type SpacemoltTravelData = {
9621
10619
  body?: {
9622
10620
  /**
9623
- * UUID of the POI to travel to (use get_system to see available POIs)
10621
+ * POI ID to travel to (use get_system to see available POIs). For a station, either its POI ID or Base ID is accepted.
9624
10622
  */
9625
10623
  id: string;
9626
10624
  };
@@ -10181,7 +11179,7 @@ export type SpacemoltBattleAdvanceResponse = SpacemoltBattleAdvanceResponses[key
10181
11179
  export type SpacemoltBattleEngageData = {
10182
11180
  body?: {
10183
11181
  /**
10184
- * Side to join (optional for action=engage — auto-assigned by faction if omitted)
11182
+ * Side to join (optional when you engage — auto-assigned by faction if omitted)
10185
11183
  */
10186
11184
  side_id?: number;
10187
11185
  };
@@ -10328,21 +11326,52 @@ export type SpacemoltBattleReloadResponses = {
10328
11326
  * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (ReloadResponse)
10329
11327
  */
10330
11328
  200: V2Response & {
10331
- structuredContent?: V2GameState & {
10332
- details?: ReloadResponse;
10333
- };
11329
+ structuredContent?: V2GameState & {
11330
+ details?: ReloadResponse;
11331
+ };
11332
+ };
11333
+ };
11334
+ export type SpacemoltBattleReloadResponse = SpacemoltBattleReloadResponses[keyof SpacemoltBattleReloadResponses];
11335
+ export type SpacemoltBattleRetreatData = {
11336
+ body?: {
11337
+ [key: string]: unknown;
11338
+ };
11339
+ path?: never;
11340
+ query?: never;
11341
+ url: '/api/v2/spacemolt_battle/retreat';
11342
+ };
11343
+ export type SpacemoltBattleRetreatErrors = {
11344
+ /**
11345
+ * Bad request — invalid params, unknown command, or game error
11346
+ */
11347
+ 400: unknown;
11348
+ /**
11349
+ * Not authenticated — missing or invalid session
11350
+ */
11351
+ 401: unknown;
11352
+ /**
11353
+ * Rate limited — mutations allow 1 per tick (10 seconds)
11354
+ */
11355
+ 429: unknown;
11356
+ };
11357
+ export type SpacemoltBattleRetreatResponses = {
11358
+ /**
11359
+ * Result. structuredContent type: BattleResponse
11360
+ */
11361
+ 200: V2Response & {
11362
+ structuredContent?: BattleResponse;
10334
11363
  };
10335
11364
  };
10336
- export type SpacemoltBattleReloadResponse = SpacemoltBattleReloadResponses[keyof SpacemoltBattleReloadResponses];
10337
- export type SpacemoltBattleRetreatData = {
11365
+ export type SpacemoltBattleRetreatResponse = SpacemoltBattleRetreatResponses[keyof SpacemoltBattleRetreatResponses];
11366
+ export type SpacemoltBattleSelfDestructData = {
10338
11367
  body?: {
10339
11368
  [key: string]: unknown;
10340
11369
  };
10341
11370
  path?: never;
10342
11371
  query?: never;
10343
- url: '/api/v2/spacemolt_battle/retreat';
11372
+ url: '/api/v2/spacemolt_battle/self_destruct';
10344
11373
  };
10345
- export type SpacemoltBattleRetreatErrors = {
11374
+ export type SpacemoltBattleSelfDestructErrors = {
10346
11375
  /**
10347
11376
  * Bad request — invalid params, unknown command, or game error
10348
11377
  */
@@ -10356,7 +11385,7 @@ export type SpacemoltBattleRetreatErrors = {
10356
11385
  */
10357
11386
  429: unknown;
10358
11387
  };
10359
- export type SpacemoltBattleRetreatResponses = {
11388
+ export type SpacemoltBattleSelfDestructResponses = {
10360
11389
  /**
10361
11390
  * Result. structuredContent type: BattleResponse
10362
11391
  */
@@ -10364,13 +11393,21 @@ export type SpacemoltBattleRetreatResponses = {
10364
11393
  structuredContent?: BattleResponse;
10365
11394
  };
10366
11395
  };
10367
- export type SpacemoltBattleRetreatResponse = SpacemoltBattleRetreatResponses[keyof SpacemoltBattleRetreatResponses];
11396
+ export type SpacemoltBattleSelfDestructResponse = SpacemoltBattleSelfDestructResponses[keyof SpacemoltBattleSelfDestructResponses];
10368
11397
  export type SpacemoltBattleStanceData = {
10369
11398
  body?: {
10370
11399
  /**
10371
- * Battle stance (required for action=stance): fire (100% dmg dealt/taken), evade (0% dealt, 50% taken, costs fuel), brace (0% dealt, 25% taken, shields regen 2x), flee (0% dealt, 100% taken, auto-retreats, 3 ticks from outer to escape)
11400
+ * Battle stance: fire (100% dmg dealt/taken), evade (0%/50%, costs fuel), brace (0%/25%, shields regen 2x), flee (0%/100%, auto-retreats to escape), or board (0%/100%, automatically closes for repeated latch attempts; requires target_id and marines). Changing away from board begins non-instant withdrawal.
11401
+ */
11402
+ id: 'fire' | 'evade' | 'brace' | 'flee' | 'board';
11403
+ /**
11404
+ * Positive fit-marine commitment required when setting stance=board. The battle tick caps it to the fit marines actually available.
11405
+ */
11406
+ marines?: number;
11407
+ /**
11408
+ * ID or name of the enemy — required when focusing a target and when entering the board stance
10372
11409
  */
10373
- id: 'fire' | 'evade' | 'brace' | 'flee';
11410
+ target?: string;
10374
11411
  };
10375
11412
  path?: never;
10376
11413
  query?: never;
@@ -10467,7 +11504,7 @@ export type SpacemoltBattleSummaryResponse = SpacemoltBattleSummaryResponses[key
10467
11504
  export type SpacemoltBattleTargetData = {
10468
11505
  body?: {
10469
11506
  /**
10470
- * Player ID or username of enemy to target (required for action=target)
11507
+ * ID or name of the enemy — required when focusing a target and when entering the board stance
10471
11508
  */
10472
11509
  id: string;
10473
11510
  };
@@ -14397,6 +15434,10 @@ export type SpacemoltFactionAdminPostMissionData = {
14397
15434
  item_id?: string;
14398
15435
  quantity?: number;
14399
15436
  system_id?: string;
15437
+ /**
15438
+ * Destination for a deliver_item or dock_at_base objective, as either the station's Base ID or station POI ID. Required for dock_at_base; omit for deliver_item to use the station where the mission is posted.
15439
+ */
15440
+ target_base_id?: string;
14400
15441
  target_id?: string;
14401
15442
  /**
14402
15443
  * Objective type (deliver_item, kill_player, visit_system, etc.)
@@ -15238,7 +16279,7 @@ export type SpacemoltIntelQueryIntelResponse = SpacemoltIntelQueryIntelResponses
15238
16279
  export type SpacemoltIntelQueryTradeIntelData = {
15239
16280
  body?: {
15240
16281
  /**
15241
- * Filter by base/station ID
16282
+ * Filter by station Base ID or station POI ID
15242
16283
  */
15243
16284
  base_id?: string;
15244
16285
  /**
@@ -15292,7 +16333,7 @@ export type SpacemoltIntelQueryTradeIntelResponse = SpacemoltIntelQueryTradeInte
15292
16333
  export type SpacemoltIntelScanPoiData = {
15293
16334
  body?: {
15294
16335
  /**
15295
- * ID of the POI to scan. The faction's sensor facility must be in range (L1 same system, L2 one jump, L3 two jumps).
16336
+ * ID of the POI to scan; for a station, either its POI ID or Base ID is accepted. The faction's sensor facility must be in range (L1 same system, L2 one jump, L3 two jumps).
15296
16337
  */
15297
16338
  poi_id: string;
15298
16339
  };
@@ -15872,7 +16913,7 @@ export type SpacemoltMarketViewOrdersData = {
15872
16913
  */
15873
16914
  sort_by?: 'newest' | 'oldest' | 'price_asc' | 'price_desc';
15874
16915
  /**
15875
- * Optional: station ID to view your orders at without being docked. If omitted, must be docked and uses the current station.
16916
+ * Optional: station Base ID or station POI ID to view your orders at without being docked. If omitted, must be docked and uses the current station.
15876
16917
  */
15877
16918
  station_id?: string;
15878
16919
  };
@@ -15903,6 +16944,50 @@ export type SpacemoltMarketViewOrdersResponses = {
15903
16944
  };
15904
16945
  };
15905
16946
  export type SpacemoltMarketViewOrdersResponse = SpacemoltMarketViewOrdersResponses[keyof SpacemoltMarketViewOrdersResponses];
16947
+ export type SpacemoltSalvageClaimPrizeData = {
16948
+ body?: {
16949
+ /**
16950
+ * Where surviving assigned crew go on delivery. Defaults to aboard; faction_reserve requires and reserves capacity in your faction's destination reserve.
16951
+ */
16952
+ crew_disposition?: 'aboard' | 'faction_reserve';
16953
+ /**
16954
+ * Intact prize record ID at your current POI
16955
+ */
16956
+ id: string;
16957
+ /**
16958
+ * Accessible station base ID where the autonomous prize should recover
16959
+ */
16960
+ target: string;
16961
+ };
16962
+ path?: never;
16963
+ query?: never;
16964
+ url: '/api/v2/spacemolt_salvage/claim_prize';
16965
+ };
16966
+ export type SpacemoltSalvageClaimPrizeErrors = {
16967
+ /**
16968
+ * Bad request — invalid params, unknown command, or game error
16969
+ */
16970
+ 400: unknown;
16971
+ /**
16972
+ * Not authenticated — missing or invalid session
16973
+ */
16974
+ 401: unknown;
16975
+ /**
16976
+ * Rate limited — mutations allow 1 per tick (10 seconds)
16977
+ */
16978
+ 429: unknown;
16979
+ };
16980
+ export type SpacemoltSalvageClaimPrizeResponses = {
16981
+ /**
16982
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (ClaimPrizeResponse)
16983
+ */
16984
+ 200: V2Response & {
16985
+ structuredContent?: V2GameState & {
16986
+ details?: ClaimPrizeResponse;
16987
+ };
16988
+ };
16989
+ };
16990
+ export type SpacemoltSalvageClaimPrizeResponse = SpacemoltSalvageClaimPrizeResponses[keyof SpacemoltSalvageClaimPrizeResponses];
15906
16991
  export type SpacemoltSalvageHelpData = {
15907
16992
  body?: never;
15908
16993
  path?: never;
@@ -16181,6 +17266,54 @@ export type SpacemoltSalvageSellResponses = {
16181
17266
  };
16182
17267
  };
16183
17268
  export type SpacemoltSalvageSellResponse = SpacemoltSalvageSellResponses[keyof SpacemoltSalvageSellResponses];
17269
+ export type SpacemoltSalvageServicePrizeData = {
17270
+ body?: {
17271
+ /**
17272
+ * Claimed intact prize record ID at your current POI
17273
+ */
17274
+ id: string;
17275
+ /**
17276
+ * Optional quantity. For refuel, zero or omission transfers the safe maximum; for repair, zero or omission uses one repair kit.
17277
+ */
17278
+ quantity?: number;
17279
+ /**
17280
+ * Physical recovery action to perform
17281
+ */
17282
+ service_action: 'stop' | 'resume' | 'redirect' | 'refuel' | 'repair';
17283
+ /**
17284
+ * Accessible replacement station for redirect
17285
+ */
17286
+ target?: string;
17287
+ };
17288
+ path?: never;
17289
+ query?: never;
17290
+ url: '/api/v2/spacemolt_salvage/service_prize';
17291
+ };
17292
+ export type SpacemoltSalvageServicePrizeErrors = {
17293
+ /**
17294
+ * Bad request — invalid params, unknown command, or game error
17295
+ */
17296
+ 400: unknown;
17297
+ /**
17298
+ * Not authenticated — missing or invalid session
17299
+ */
17300
+ 401: unknown;
17301
+ /**
17302
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17303
+ */
17304
+ 429: unknown;
17305
+ };
17306
+ export type SpacemoltSalvageServicePrizeResponses = {
17307
+ /**
17308
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (PrizeServiceResponse)
17309
+ */
17310
+ 200: V2Response & {
17311
+ structuredContent?: V2GameState & {
17312
+ details?: PrizeServiceResponse;
17313
+ };
17314
+ };
17315
+ };
17316
+ export type SpacemoltSalvageServicePrizeResponse = SpacemoltSalvageServicePrizeResponses[keyof SpacemoltSalvageServicePrizeResponses];
16184
17317
  export type SpacemoltSalvageSetHomeData = {
16185
17318
  body?: {
16186
17319
  /**
@@ -16287,7 +17420,7 @@ export type SpacemoltSalvageWrecksResponse = SpacemoltSalvageWrecksResponses[key
16287
17420
  export type SpacemoltShipBrowseShipsData = {
16288
17421
  body?: {
16289
17422
  /**
16290
- * Base to browse listings at (defaults to current base)
17423
+ * Station to browse listings at, given by either its Base ID or station POI ID (defaults to current station)
16291
17424
  */
16292
17425
  base_id?: string;
16293
17426
  /**
@@ -16472,10 +17605,18 @@ export type SpacemoltShipCancelShipListingResponses = {
16472
17605
  export type SpacemoltShipCancelShipListingResponse = SpacemoltShipCancelShipListingResponses[keyof SpacemoltShipCancelShipListingResponses];
16473
17606
  export type SpacemoltShipCommissionQuoteData = {
16474
17607
  body?: {
17608
+ /**
17609
+ * If true, quote the hull without its default module loadout.
17610
+ */
17611
+ bare_hull?: boolean;
16475
17612
  /**
16476
17613
  * Ship class ID to get a quote for
16477
17614
  */
16478
17615
  id: string;
17616
+ /**
17617
+ * Preview the materials you can contribute, the remaining deficit, and partial-sourcing total.
17618
+ */
17619
+ source_missing_materials?: boolean;
16479
17620
  };
16480
17621
  path?: never;
16481
17622
  query?: never;
@@ -16506,6 +17647,10 @@ export type SpacemoltShipCommissionQuoteResponses = {
16506
17647
  export type SpacemoltShipCommissionQuoteResponse = SpacemoltShipCommissionQuoteResponses[keyof SpacemoltShipCommissionQuoteResponses];
16507
17648
  export type SpacemoltShipCommissionShipData = {
16508
17649
  body?: {
17650
+ /**
17651
+ * If true, commission only the hull without its default module loadout. Defaults to false so ships arrive fitted.
17652
+ */
17653
+ bare_hull?: boolean;
16509
17654
  /**
16510
17655
  * At your own faction's station: build from faction storage and treasury (requires ManageTreasury). Required there; credits-only and provide_materials are rejected.
16511
17656
  */
@@ -16518,6 +17663,10 @@ export type SpacemoltShipCommissionShipData = {
16518
17663
  * At an empire/NPC shipyard: if true, supply build materials from cargo/storage (cheaper); if false, pay credits for everything (default).
16519
17664
  */
16520
17665
  provide_materials?: boolean;
17666
+ /**
17667
+ * At an empire/NPC shipyard: take available requirements from cargo then station storage and charge only to source the deficit. Do not combine with provide_materials.
17668
+ */
17669
+ source_missing_materials?: boolean;
16521
17670
  };
16522
17671
  path?: never;
16523
17672
  query?: never;
@@ -16551,7 +17700,7 @@ export type SpacemoltShipCommissionShipResponse = SpacemoltShipCommissionShipRes
16551
17700
  export type SpacemoltShipCommissionStatusData = {
16552
17701
  body?: {
16553
17702
  /**
16554
- * Optional: filter commissions to a specific base
17703
+ * Optional: filter commissions to a station by either its Base ID or station POI ID
16555
17704
  */
16556
17705
  base_id?: string;
16557
17706
  };
@@ -16582,6 +17731,46 @@ export type SpacemoltShipCommissionStatusResponses = {
16582
17731
  };
16583
17732
  };
16584
17733
  export type SpacemoltShipCommissionStatusResponse = SpacemoltShipCommissionStatusResponses[keyof SpacemoltShipCommissionStatusResponses];
17734
+ export type SpacemoltShipFactionPersonnelData = {
17735
+ body?: {
17736
+ fit_crew?: number;
17737
+ fit_marines?: number;
17738
+ injured_crew?: number;
17739
+ injured_marines?: number;
17740
+ /**
17741
+ * Reserve operation; defaults to status. On v2 transports this field is named personnel_action.
17742
+ */
17743
+ personnel_action?: 'status' | 'recruit' | 'deposit' | 'withdraw';
17744
+ };
17745
+ path?: never;
17746
+ query?: never;
17747
+ url: '/api/v2/spacemolt_ship/faction_personnel';
17748
+ };
17749
+ export type SpacemoltShipFactionPersonnelErrors = {
17750
+ /**
17751
+ * Bad request — invalid params, unknown command, or game error
17752
+ */
17753
+ 400: unknown;
17754
+ /**
17755
+ * Not authenticated — missing or invalid session
17756
+ */
17757
+ 401: unknown;
17758
+ /**
17759
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17760
+ */
17761
+ 429: unknown;
17762
+ };
17763
+ export type SpacemoltShipFactionPersonnelResponses = {
17764
+ /**
17765
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionPersonnelResponse)
17766
+ */
17767
+ 200: V2Response & {
17768
+ structuredContent?: V2GameState & {
17769
+ details?: FactionPersonnelResponse;
17770
+ };
17771
+ };
17772
+ };
17773
+ export type SpacemoltShipFactionPersonnelResponse = SpacemoltShipFactionPersonnelResponses[keyof SpacemoltShipFactionPersonnelResponses];
16585
17774
  export type SpacemoltShipHelpData = {
16586
17775
  body?: never;
16587
17776
  path?: never;
@@ -16729,6 +17918,46 @@ export type SpacemoltShipPlaceShipBuyOrderResponses = {
16729
17918
  };
16730
17919
  };
16731
17920
  export type SpacemoltShipPlaceShipBuyOrderResponse = SpacemoltShipPlaceShipBuyOrderResponses[keyof SpacemoltShipPlaceShipBuyOrderResponses];
17921
+ export type SpacemoltShipRecruitPersonnelData = {
17922
+ body?: {
17923
+ /**
17924
+ * Fit crew to recruit into the active ship. Request crew and/or marines; at least one count must be positive.
17925
+ */
17926
+ crew?: number;
17927
+ /**
17928
+ * Fit marines to recruit into the active ship. Request crew and/or marines; at least one count must be positive.
17929
+ */
17930
+ marines?: number;
17931
+ };
17932
+ path?: never;
17933
+ query?: never;
17934
+ url: '/api/v2/spacemolt_ship/recruit_personnel';
17935
+ };
17936
+ export type SpacemoltShipRecruitPersonnelErrors = {
17937
+ /**
17938
+ * Bad request — invalid params, unknown command, or game error
17939
+ */
17940
+ 400: unknown;
17941
+ /**
17942
+ * Not authenticated — missing or invalid session
17943
+ */
17944
+ 401: unknown;
17945
+ /**
17946
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17947
+ */
17948
+ 429: unknown;
17949
+ };
17950
+ export type SpacemoltShipRecruitPersonnelResponses = {
17951
+ /**
17952
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (RecruitPersonnelResponse)
17953
+ */
17954
+ 200: V2Response & {
17955
+ structuredContent?: V2GameState & {
17956
+ details?: RecruitPersonnelResponse;
17957
+ };
17958
+ };
17959
+ };
17960
+ export type SpacemoltShipRecruitPersonnelResponse = SpacemoltShipRecruitPersonnelResponses[keyof SpacemoltShipRecruitPersonnelResponses];
16732
17961
  export type SpacemoltShipRefitShipData = {
16733
17962
  body?: {
16734
17963
  [key: string]: unknown;
@@ -16954,6 +18183,98 @@ export type SpacemoltShipSwitchShipResponses = {
16954
18183
  };
16955
18184
  };
16956
18185
  export type SpacemoltShipSwitchShipResponse = SpacemoltShipSwitchShipResponses[keyof SpacemoltShipSwitchShipResponses];
18186
+ export type SpacemoltShipTransferPersonnelData = {
18187
+ body?: {
18188
+ fit_crew?: number;
18189
+ fit_marines?: number;
18190
+ /**
18191
+ * Allied player ID or username at the same POI.
18192
+ */
18193
+ id: string;
18194
+ injured_crew?: number;
18195
+ injured_marines?: number;
18196
+ };
18197
+ path?: never;
18198
+ query?: never;
18199
+ url: '/api/v2/spacemolt_ship/transfer_personnel';
18200
+ };
18201
+ export type SpacemoltShipTransferPersonnelErrors = {
18202
+ /**
18203
+ * Bad request — invalid params, unknown command, or game error
18204
+ */
18205
+ 400: unknown;
18206
+ /**
18207
+ * Not authenticated — missing or invalid session
18208
+ */
18209
+ 401: unknown;
18210
+ /**
18211
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18212
+ */
18213
+ 429: unknown;
18214
+ };
18215
+ export type SpacemoltShipTransferPersonnelResponses = {
18216
+ /**
18217
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (TransferPersonnelResponse)
18218
+ */
18219
+ 200: V2Response & {
18220
+ structuredContent?: V2GameState & {
18221
+ details?: TransferPersonnelResponse;
18222
+ };
18223
+ };
18224
+ };
18225
+ export type SpacemoltShipTransferPersonnelResponse = SpacemoltShipTransferPersonnelResponses[keyof SpacemoltShipTransferPersonnelResponses];
18226
+ export type SpacemoltShipTreatPersonnelData = {
18227
+ body?: {
18228
+ /**
18229
+ * Injured crew to treat. Omit or use zero to treat as many as possible.
18230
+ */
18231
+ crew?: number;
18232
+ /**
18233
+ * Optional allied player ID or username for remote field treatment. Omit to treat your active ship or faction reserve.
18234
+ */
18235
+ id?: string;
18236
+ /**
18237
+ * Injured marines to treat. Omit or use zero to treat as many as possible.
18238
+ */
18239
+ marines?: number;
18240
+ /**
18241
+ * Treatment source. Omit to choose the appropriate local station or field provider automatically.
18242
+ */
18243
+ provider?: 'station' | 'field' | 'faction';
18244
+ /**
18245
+ * Treat personnel in the local faction reserve. Requires provider=faction and ManageTreasury permission.
18246
+ */
18247
+ reserve?: boolean;
18248
+ };
18249
+ path?: never;
18250
+ query?: never;
18251
+ url: '/api/v2/spacemolt_ship/treat_personnel';
18252
+ };
18253
+ export type SpacemoltShipTreatPersonnelErrors = {
18254
+ /**
18255
+ * Bad request — invalid params, unknown command, or game error
18256
+ */
18257
+ 400: unknown;
18258
+ /**
18259
+ * Not authenticated — missing or invalid session
18260
+ */
18261
+ 401: unknown;
18262
+ /**
18263
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18264
+ */
18265
+ 429: unknown;
18266
+ };
18267
+ export type SpacemoltShipTreatPersonnelResponses = {
18268
+ /**
18269
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (TreatPersonnelResponse)
18270
+ */
18271
+ 200: V2Response & {
18272
+ structuredContent?: V2GameState & {
18273
+ details?: TreatPersonnelResponse;
18274
+ };
18275
+ };
18276
+ };
18277
+ export type SpacemoltShipTreatPersonnelResponse = SpacemoltShipTreatPersonnelResponses[keyof SpacemoltShipTreatPersonnelResponses];
16957
18278
  export type SpacemoltShipViewShipBuyOrdersData = {
16958
18279
  body?: {
16959
18280
  [key: string]: unknown;
@@ -16992,7 +18313,7 @@ export type SpacemoltShippingAcceptData = {
16992
18313
  */
16993
18314
  carrier?: 'player' | 'faction';
16994
18315
  /**
16995
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18316
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
16996
18317
  */
16997
18318
  shipment_id: string;
16998
18319
  };
@@ -17025,10 +18346,41 @@ export type SpacemoltShippingAcceptResponses = {
17025
18346
  };
17026
18347
  };
17027
18348
  export type SpacemoltShippingAcceptResponse = SpacemoltShippingAcceptResponses[keyof SpacemoltShippingAcceptResponses];
18349
+ export type SpacemoltShippingActiveData = {
18350
+ body?: {
18351
+ [key: string]: unknown;
18352
+ };
18353
+ path?: never;
18354
+ query?: never;
18355
+ url: '/api/v2/spacemolt_shipping/active';
18356
+ };
18357
+ export type SpacemoltShippingActiveErrors = {
18358
+ /**
18359
+ * Bad request — invalid params, unknown command, or game error
18360
+ */
18361
+ 400: unknown;
18362
+ /**
18363
+ * Not authenticated — missing or invalid session
18364
+ */
18365
+ 401: unknown;
18366
+ /**
18367
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18368
+ */
18369
+ 429: unknown;
18370
+ };
18371
+ export type SpacemoltShippingActiveResponses = {
18372
+ /**
18373
+ * Result. structuredContent type: ShippingActiveResponse
18374
+ */
18375
+ 200: V2Response & {
18376
+ structuredContent?: ShippingActiveResponse;
18377
+ };
18378
+ };
18379
+ export type SpacemoltShippingActiveResponse = SpacemoltShippingActiveResponses[keyof SpacemoltShippingActiveResponses];
17028
18380
  export type SpacemoltShippingCancelData = {
17029
18381
  body?: {
17030
18382
  /**
17031
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18383
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
17032
18384
  */
17033
18385
  shipment_id: string;
17034
18386
  };
@@ -17064,9 +18416,13 @@ export type SpacemoltShippingCancelResponse = SpacemoltShippingCancelResponses[k
17064
18416
  export type SpacemoltShippingDeliverData = {
17065
18417
  body?: {
17066
18418
  /**
17067
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18419
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17068
18420
  */
17069
- shipment_id: string;
18421
+ package_id?: string;
18422
+ /**
18423
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
18424
+ */
18425
+ shipment_id?: string;
17070
18426
  };
17071
18427
  path?: never;
17072
18428
  query?: never;
@@ -17100,9 +18456,13 @@ export type SpacemoltShippingDeliverResponse = SpacemoltShippingDeliverResponses
17100
18456
  export type SpacemoltShippingGetData = {
17101
18457
  body?: {
17102
18458
  /**
17103
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18459
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17104
18460
  */
17105
- shipment_id: string;
18461
+ package_id?: string;
18462
+ /**
18463
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
18464
+ */
18465
+ shipment_id?: string;
17106
18466
  };
17107
18467
  path?: never;
17108
18468
  query?: never;
@@ -17174,7 +18534,7 @@ export type SpacemoltShippingListData = {
17174
18534
  */
17175
18535
  eligible_as?: 'player' | 'faction';
17176
18536
  /**
17177
- * For list, only show runs bound for this destination station (ID or name).
18537
+ * For list, only show runs bound for this destination station, given by either its Base ID or station POI ID.
17178
18538
  */
17179
18539
  filter_destination?: string;
17180
18540
  /**
@@ -17270,9 +18630,9 @@ export type SpacemoltShippingPostData = {
17270
18630
  /**
17271
18631
  * Flat reward paid to the carrier on delivery. You set the price — required to post (post fails with reward_required if omitted or non-positive). quote returns estimated_reward from recently-completed similar-distance contracts to guide you; there is no automatic distance-based rate.
17272
18632
  */
17273
- base_reward?: number;
18633
+ base_reward: number;
17274
18634
  /**
17275
- * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
18635
+ * Destination station for quote or post, given as either a station's base ID or the station POI ID the map shows you. It must differ from the origin station; another station in the same system is valid.
17276
18636
  */
17277
18637
  destination_base_id: string;
17278
18638
  /**
@@ -17292,11 +18652,11 @@ export type SpacemoltShippingPostData = {
17292
18652
  */
17293
18653
  max_total_cost?: number;
17294
18654
  /**
17295
- * Sealed package to quote or post. The package must be owned by the selected shipper at this station.
18655
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17296
18656
  */
17297
18657
  package_id: string;
17298
18658
  /**
17299
- * Player, faction, or station ID matching recipient_type.
18659
+ * Player, faction, or station ID matching recipient_type; a station takes either the base ID or the station POI ID.
17300
18660
  */
17301
18661
  recipient_id?: string;
17302
18662
  /**
@@ -17398,7 +18758,7 @@ export type SpacemoltShippingQuoteData = {
17398
18758
  */
17399
18759
  base_reward?: number;
17400
18760
  /**
17401
- * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
18761
+ * Destination station for quote or post, given as either a station's base ID or the station POI ID the map shows you. It must differ from the origin station; another station in the same system is valid.
17402
18762
  */
17403
18763
  destination_base_id: string;
17404
18764
  /**
@@ -17414,11 +18774,11 @@ export type SpacemoltShippingQuoteData = {
17414
18774
  */
17415
18775
  invited_carrier_type?: 'player' | 'faction';
17416
18776
  /**
17417
- * Sealed package to quote or post. The package must be owned by the selected shipper at this station.
18777
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17418
18778
  */
17419
18779
  package_id: string;
17420
18780
  /**
17421
- * Player, faction, or station ID matching recipient_type.
18781
+ * Player, faction, or station ID matching recipient_type; a station takes either the base ID or the station POI ID.
17422
18782
  */
17423
18783
  recipient_id?: string;
17424
18784
  /**
@@ -17480,9 +18840,13 @@ export type SpacemoltShippingQuoteResponse = SpacemoltShippingQuoteResponses[key
17480
18840
  export type SpacemoltShippingReturnData = {
17481
18841
  body?: {
17482
18842
  /**
17483
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18843
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17484
18844
  */
17485
- shipment_id: string;
18845
+ package_id?: string;
18846
+ /**
18847
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
18848
+ */
18849
+ shipment_id?: string;
17486
18850
  };
17487
18851
  path?: never;
17488
18852
  query?: never;
@@ -17520,9 +18884,13 @@ export type SpacemoltShippingTrackData = {
17520
18884
  */
17521
18885
  limit?: number;
17522
18886
  /**
17523
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18887
+ * Sealed package ID, either the bare package ID or the package:<id> cargo item form. For quote/post it is the freight to ship, owned by the selected shipper at this station. For get, track, deliver, and return it identifies the contract by the sealed box you are holding, instead of shipment_id.
17524
18888
  */
17525
- shipment_id: string;
18889
+ package_id?: string;
18890
+ /**
18891
+ * Freight contract ID for get, track, accept, deliver, return, or cancel. get, track, deliver, and return also accept a package ID here, or in package_id.
18892
+ */
18893
+ shipment_id?: string;
17526
18894
  };
17527
18895
  path?: never;
17528
18896
  query?: never;
@@ -18583,7 +19951,7 @@ export type SpacemoltSocialWriteNoteResponse = SpacemoltSocialWriteNoteResponses
18583
19951
  export type SpacemoltStorageDepositData = {
18584
19952
  body?: {
18585
19953
  /**
18586
- * Optional (target=faction only): a Storage Extension bucket by name or id to deposit into / withdraw from instead of the main store. For an intra-faction move (source=faction target=faction) this is the SOURCE compartment. Empty means the main store. See bucket names in action=view target=faction.
19954
+ * Optional (target=faction only): a Storage Extension bucket by name or id to deposit into / withdraw from instead of the main store. For an intra-faction move (source=faction target=faction) this is the SOURCE compartment. Empty means the main store. See bucket names in a storage view with target=faction.
18587
19955
  */
18588
19956
  bucket?: string;
18589
19957
  /**
@@ -18595,7 +19963,7 @@ export type SpacemoltStorageDepositData = {
18595
19963
  */
18596
19964
  dest_bucket?: string;
18597
19965
  /**
18598
- * Item ID for normal item transfers, 'credits' for credit operations (faction target only), or a stored ship instance UUID for ship operations: target=self loads/unloads the ship into your active carrier's bay, or — if your active ship is a non-carrier with a tow rig fitted — attaches/releases it as a tow (its class scale must be no larger than your active ship's), and target=<player_name> with action=deposit gifts the ship (triggers gift_ship action). Use list_ships to find ship instance IDs.
19966
+ * Item ID for normal item transfers, 'credits' for credit operations (faction target only), or a stored ship instance UUID for ship operations: target=self loads/unloads the ship into your active carrier's bay, or — if your active ship is a non-carrier with a tow rig fitted — attaches/releases it as a tow (its class scale must be no larger than your active ship's), and target=<player_name> on a deposit gifts the ship (triggers gift_ship action). Use list_ships to find ship instance IDs.
18599
19967
  */
18600
19968
  item_id?: string;
18601
19969
  /**
@@ -18618,7 +19986,7 @@ export type SpacemoltStorageDepositData = {
18618
19986
  */
18619
19987
  source?: string;
18620
19988
  /**
18621
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
19989
+ * Target: self, faction, faction:TAG, empire alias, player name/ID, or station:<base-or-POI-ID>. Station targets accept optional unpaid item donations via deposit only, including bulk items; dock at that managed NPC empire station. No credits, ships, packages, or quest items. Cargo works with storage offline; personal storage source requires storage service. Normal gift unlock and trading restrictions apply. Items enter manager station inventory, not empire reserves; paid treasury procurement remains primary.
18622
19990
  */
18623
19991
  target?: string;
18624
19992
  };
@@ -18785,11 +20153,11 @@ export type SpacemoltStorageLootResponse = SpacemoltStorageLootResponses[keyof S
18785
20153
  export type SpacemoltStorageViewData = {
18786
20154
  body?: {
18787
20155
  /**
18788
- * Optional: station ID to view storage at without being docked. Only applies to action="view", target="self".
20156
+ * Optional: station Base ID or station POI ID to view storage at without being docked. Read-only: it applies to a storage view (target="self" or "faction"), not to a deposit or withdraw.
18789
20157
  */
18790
20158
  station_id?: string;
18791
20159
  /**
18792
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
20160
+ * Target: self, faction, faction:TAG, empire alias, player name/ID, or station:<base-or-POI-ID>. Station targets accept optional unpaid item donations via deposit only, including bulk items; dock at that managed NPC empire station. No credits, ships, packages, or quest items. Cargo works with storage offline; personal storage source requires storage service. Normal gift unlock and trading restrictions apply. Items enter manager station inventory, not empire reserves; paid treasury procurement remains primary.
18793
20161
  */
18794
20162
  target?: string;
18795
20163
  };
@@ -18827,7 +20195,7 @@ export type SpacemoltStorageViewResponse = SpacemoltStorageViewResponses[keyof S
18827
20195
  export type SpacemoltStorageWithdrawData = {
18828
20196
  body?: {
18829
20197
  /**
18830
- * Optional (target=faction only): a Storage Extension bucket by name or id to deposit into / withdraw from instead of the main store. For an intra-faction move (source=faction target=faction) this is the SOURCE compartment. Empty means the main store. See bucket names in action=view target=faction.
20198
+ * Optional (target=faction only): a Storage Extension bucket by name or id to deposit into / withdraw from instead of the main store. For an intra-faction move (source=faction target=faction) this is the SOURCE compartment. Empty means the main store. See bucket names in a storage view with target=faction.
18831
20199
  */
18832
20200
  bucket?: string;
18833
20201
  /**
@@ -18835,7 +20203,7 @@ export type SpacemoltStorageWithdrawData = {
18835
20203
  */
18836
20204
  dest_bucket?: string;
18837
20205
  /**
18838
- * Item ID for normal item transfers, 'credits' for credit operations (faction target only), or a stored ship instance UUID for ship operations: target=self loads/unloads the ship into your active carrier's bay, or — if your active ship is a non-carrier with a tow rig fitted — attaches/releases it as a tow (its class scale must be no larger than your active ship's), and target=<player_name> with action=deposit gifts the ship (triggers gift_ship action). Use list_ships to find ship instance IDs.
20206
+ * Item ID for normal item transfers, 'credits' for credit operations (faction target only), or a stored ship instance UUID for ship operations: target=self loads/unloads the ship into your active carrier's bay, or — if your active ship is a non-carrier with a tow rig fitted — attaches/releases it as a tow (its class scale must be no larger than your active ship's), and target=<player_name> on a deposit gifts the ship (triggers gift_ship action). Use list_ships to find ship instance IDs.
18839
20207
  */
18840
20208
  item_id?: string;
18841
20209
  /**
@@ -18854,7 +20222,7 @@ export type SpacemoltStorageWithdrawData = {
18854
20222
  */
18855
20223
  source?: string;
18856
20224
  /**
18857
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
20225
+ * Target: self, faction, faction:TAG, empire alias, player name/ID, or station:<base-or-POI-ID>. Station targets accept optional unpaid item donations via deposit only, including bulk items; dock at that managed NPC empire station. No credits, ships, packages, or quest items. Cargo works with storage offline; personal storage source requires storage service. Normal gift unlock and trading restrictions apply. Items enter manager station inventory, not empire reserves; paid treasury procurement remains primary.
18858
20226
  */
18859
20227
  target?: string;
18860
20228
  };