@spacemolt/lib 12.2.2 → 13.1.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,29 +386,43 @@ 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
- outcome: string;
406
+ /**
407
+ * How the battle ended. victory means one side survived and took a kill. stalemate and mutual_destruction are both draws. interrupted means a server restart ended the battle before either side won. The WebSocket battle_ended frame calls this same field reason.
408
+ */
409
+ outcome: 'victory' | 'stalemate' | 'mutual_destruction' | 'interrupted';
335
410
  participant_names?: Array<string>;
336
411
  participants: Array<ParticipantSummary>;
412
+ ships_captured?: number;
337
413
  ships_destroyed: number;
338
414
  total_damage: number;
415
+ /**
416
+ * Side id of the winning side. Always -1 for a draw — stalemate and mutual_destruction are both draws — and -1 for a battle a server restart interrupted.
417
+ */
339
418
  winning_side: number;
340
419
  };
341
420
  export type BattleEndedParticipantInfo = {
342
421
  damage_dealt: number;
343
422
  damage_taken: number;
423
+ is_npc?: boolean;
344
424
  kill_count: number;
425
+ kind?: string;
345
426
  player_id: string;
346
427
  side_id: number;
347
428
  survived: boolean;
@@ -352,12 +433,16 @@ export type BattleLogEntry = {
352
433
  autopilot?: Array<AutoPilotLogEntry>;
353
434
  battle_ended?: BattleEndLogEntry;
354
435
  battle_id: string;
436
+ boarding?: Array<BoardingStateLogEntry>;
355
437
  burns?: Array<BurnLogEntry>;
438
+ captures?: Array<CaptureLogEntry>;
356
439
  commands?: Array<CommandLogEntry>;
357
440
  flee?: Array<FleeLogEntry>;
358
441
  fuel?: Array<FuelLogEntry>;
359
442
  joins?: Array<JoinLogEntry>;
360
443
  kills?: Array<KillLogEntry>;
444
+ personnel_casualties?: Array<PersonnelCasualtyLogEntry>;
445
+ recovered_summary?: RecoveredBattleSummary;
361
446
  regen?: Array<RegenLogEntry>;
362
447
  snapshots: Array<ParticipantSnapshot>;
363
448
  system_id: string;
@@ -378,10 +463,18 @@ export type BattleParticipant = {
378
463
  * Hull integrity as a percentage of max (0-100)
379
464
  */
380
465
  hull_pct?: number;
466
+ /**
467
+ * True for automated combatants: pirates, police, drones, creatures, stations, and intact prizes
468
+ */
469
+ is_npc?: boolean;
381
470
  /**
382
471
  * Ships you have destroyed this battle (self only)
383
472
  */
384
473
  kill_count?: number;
474
+ /**
475
+ * Combatant type: player/pirate/police/drone/creature/station/prize
476
+ */
477
+ kind?: string;
385
478
  player_id: string;
386
479
  /**
387
480
  * Shield strength as a percentage of max (0-100)
@@ -391,7 +484,7 @@ export type BattleParticipant = {
391
484
  ship_name?: string;
392
485
  side_id: number;
393
486
  /**
394
- * Combat stance this tick (self only): fire/evade/brace/flee
487
+ * Combat stance this tick (self only): fire/evade/brace/flee/board
395
488
  */
396
489
  stance?: string;
397
490
  /**
@@ -404,12 +497,20 @@ export type BattleParticipant = {
404
497
  */
405
498
  zone?: string;
406
499
  /**
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.
500
+ * 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
501
  */
409
502
  zone_distance?: number;
410
503
  };
411
504
  export type BattleParticipantInfo = {
412
505
  hull_pct?: number;
506
+ /**
507
+ * True for server-controlled combatants including pirates
508
+ */
509
+ is_npc?: boolean;
510
+ /**
511
+ * Combatant kind: player
512
+ */
513
+ kind?: string;
413
514
  player_id: string;
414
515
  shield_pct?: number;
415
516
  ship_class?: string;
@@ -420,12 +521,25 @@ export type BattleParticipantInfo = {
420
521
  zone: string;
421
522
  };
422
523
  export type BattleResponse = {
423
- action: 'advance' | 'retreat' | 'stance' | 'target' | 'engage';
524
+ action: 'advance' | 'retreat' | 'stance' | 'target' | 'engage' | 'self_destruct';
424
525
  battle_id?: string;
526
+ marines_requested?: number;
425
527
  message: string;
528
+ operation_id?: string;
529
+ phase?: string;
530
+ progress?: string;
531
+ self_destruct_countdown?: number;
532
+ /**
533
+ * Resulting combat stance: fire/evade/brace/flee/board
534
+ */
426
535
  stance?: string;
427
536
  target_id?: string;
428
537
  };
538
+ export type BattleSelfDestructState = {
539
+ battle_id: string;
540
+ detonate_tick: number;
541
+ started_tick: number;
542
+ };
429
543
  export type BattleSide = {
430
544
  faction_id?: string;
431
545
  faction_name?: string;
@@ -446,14 +560,20 @@ export type BattleSideSummary = {
446
560
  };
447
561
  export type BattleSummaryResponse = {
448
562
  battle_id: string;
563
+ captures?: Array<CaptureLogEntry>;
449
564
  category?: string;
450
565
  destroyed_names?: Array<string>;
451
566
  duration_ticks: number;
452
567
  ended_at?: string;
568
+ has_station: boolean;
453
569
  origin_poi?: string;
570
+ /**
571
+ * How the battle ended. victory means one side survived and took a kill. stalemate and mutual_destruction are both draws. interrupted means a server restart ended the battle before either side won. Graceful shutdown emits a battle_ended frame; crash-recovered REST summaries do not fabricate one. Null while status is active. The WebSocket battle_ended frame calls this same field reason.
572
+ */
454
573
  outcome: string;
455
574
  participant_count: number;
456
575
  player_names?: Array<string>;
576
+ ships_captured?: number;
457
577
  ships_destroyed: number;
458
578
  sides: Array<BattleSideSummary>;
459
579
  start_tick: number;
@@ -462,6 +582,9 @@ export type BattleSummaryResponse = {
462
582
  system_name: string;
463
583
  top_damage?: BattleTopDamage;
464
584
  total_damage: number;
585
+ /**
586
+ * Side id of the winning side. Always -1 for a draw — both stalemate and mutual_destruction report -1 — and -1 for a battle a server restart interrupted. Null while status is active.
587
+ */
465
588
  winning_side: number;
466
589
  };
467
590
  export type BattleTopDamage = {
@@ -469,14 +592,51 @@ export type BattleTopDamage = {
469
592
  username: string;
470
593
  };
471
594
  export type BerthCount = {
595
+ /**
596
+ * Berths of this class still free once citizens aboard are seated
597
+ */
472
598
  free: number;
599
+ /**
600
+ * Berths of this class on the hull plus fitted cabins
601
+ */
473
602
  total: number;
474
603
  };
475
604
  export type BerthsView = {
605
+ /**
606
+ * Total and free business berths
607
+ */
476
608
  business: BerthCount;
609
+ /**
610
+ * Total and free economy berths
611
+ */
477
612
  economy: BerthCount;
613
+ /**
614
+ * Total and free first berths
615
+ */
478
616
  first: BerthCount;
479
617
  };
618
+ export type BoardingPublicStatus = {
619
+ attacker_id?: string;
620
+ operation_id: string;
621
+ phase: string;
622
+ progress?: string;
623
+ self_destruct_countdown?: number;
624
+ target_id?: string;
625
+ };
626
+ export type BoardingStateLogEntry = {
627
+ actor_id?: string;
628
+ attacker_casualties?: boolean;
629
+ casualties_occurred?: boolean;
630
+ defender_casualties?: boolean;
631
+ destroyed?: boolean;
632
+ event: string;
633
+ hull_damage?: number;
634
+ operation_id: string;
635
+ phase: string;
636
+ reason?: string;
637
+ self_destruct_countdown?: number;
638
+ target_id?: string;
639
+ };
480
640
  export type BrowseShipsResponse = {
481
641
  base_id: string;
482
642
  base_name: string;
@@ -696,7 +856,7 @@ export type BulkSellOrderResult = {
696
856
  total_earned?: number;
697
857
  };
698
858
  /**
699
- * The single-item storage response for this entry (deposit, withdraw, gift, or faction/empire variant).
859
+ * 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
860
  */
701
861
  export type BulkStorageItemData = {
702
862
  [key: string]: unknown;
@@ -721,6 +881,9 @@ export type BulkStorageResponse = {
721
881
  requested: number;
722
882
  results: Array<BulkStorageItemResult>;
723
883
  succeeded: number;
884
+ /**
885
+ * Storage destination or source. Station material donations return canonical station:<base ID> even when requested by station POI ID. Omitted when not applicable.
886
+ */
724
887
  target?: string;
725
888
  };
726
889
  export type BulkSummary = {
@@ -731,6 +894,7 @@ export type BulkSummary = {
731
894
  export type BurnLogEntry = {
732
895
  damage: number;
733
896
  destroyed?: boolean;
897
+ source_id?: string;
734
898
  target_id: string;
735
899
  ticks_remaining: number;
736
900
  };
@@ -841,6 +1005,15 @@ export type CaptainsLogListResponse = {
841
1005
  max_entries: number;
842
1006
  total_count: number;
843
1007
  };
1008
+ export type CaptureLogEntry = {
1009
+ boarding_operation_id: string;
1010
+ captor_id: string;
1011
+ captor_username: string;
1012
+ former_owner_id: string;
1013
+ former_owner_username: string;
1014
+ ship_class: string;
1015
+ ship_id: string;
1016
+ };
844
1017
  /**
845
1018
  * An item stack in cargo or storage.
846
1019
  */
@@ -875,6 +1048,7 @@ export type CarrierProfile = {
875
1048
  delivered_value: number;
876
1049
  last_consequence_at?: string;
877
1050
  last_recovery_at?: string;
1051
+ late_deliveries: number;
878
1052
  outstanding_debt: number;
879
1053
  priority_deliveries: number;
880
1054
  returns: number;
@@ -950,12 +1124,16 @@ export type CatalogShipSummary = {
950
1124
  base_shield_recharge: number;
951
1125
  base_speed: number;
952
1126
  based_on?: string;
1127
+ boarding_defense_bonus_pct?: number;
953
1128
  build_materials?: Array<RecipeInput>;
954
1129
  build_time: number;
1130
+ capture_policy?: string;
1131
+ capture_policy_reason?: string;
955
1132
  cargo_capacity: number;
956
1133
  category?: string;
957
1134
  class: string;
958
1135
  cpu_capacity: number;
1136
+ crew_capacity: number;
959
1137
  default_loadout_version?: number;
960
1138
  default_modules?: Array<string>;
961
1139
  defense_slots: number;
@@ -965,8 +1143,11 @@ export type CatalogShipSummary = {
965
1143
  hidden?: boolean;
966
1144
  id: string;
967
1145
  inherent_capabilities?: Array<InherentCapability>;
1146
+ latch_resistance?: number;
968
1147
  legacy?: boolean;
969
1148
  lore?: string;
1149
+ marine_capacity: number;
1150
+ minimum_crew: number;
970
1151
  name: string;
971
1152
  npc_role?: string;
972
1153
  passive_recipes?: Array<string>;
@@ -1065,6 +1246,21 @@ export type ClaimInsuranceResponse = {
1065
1246
  message: string;
1066
1247
  policies: Array<InsurancePolicy>;
1067
1248
  };
1249
+ export type ClaimPrizeResponse = {
1250
+ crew_assigned: number;
1251
+ /**
1252
+ * Where the prize crew came from and returns to.
1253
+ */
1254
+ crew_disposition: 'aboard' | 'faction_reserve';
1255
+ destination_base_id: string;
1256
+ idempotent: boolean;
1257
+ prize_id: string;
1258
+ ship_id: string;
1259
+ /**
1260
+ * Recovery state of the prize. delivered / destroyed / expired / recaptured are terminal.
1261
+ */
1262
+ status: 'available' | 'claimed' | 'in_transit' | 'delivered' | 'destroyed' | 'expired' | 'recaptured';
1263
+ };
1068
1264
  export type ClientConnectionInfo = {
1069
1265
  distance?: number;
1070
1266
  name: string;
@@ -1117,6 +1313,42 @@ export type CombatLogSummary = {
1117
1313
  [key: string]: number;
1118
1314
  };
1119
1315
  };
1316
+ export type CombatSpecialEffects = {
1317
+ anti_drone_pct?: number;
1318
+ anti_missile_pct?: number;
1319
+ aoe_radius?: number;
1320
+ armor_melt_pct?: number;
1321
+ auto_cloak_on_shield_failure?: boolean;
1322
+ chain_targets?: number;
1323
+ cpu_damage_pct?: number;
1324
+ damage_boost_on_hit?: boolean;
1325
+ dot_damage?: number;
1326
+ dot_duration?: number;
1327
+ duration_ticks?: number;
1328
+ energy_damage_pct?: number;
1329
+ hull_damage_pct?: number;
1330
+ ignore_all_defense?: boolean;
1331
+ ignore_resistance_pct?: number;
1332
+ lifesteal_pct?: number;
1333
+ low_cpu_requirement?: boolean;
1334
+ mine_capacity?: number;
1335
+ mine_detection?: number;
1336
+ mine_duration?: number;
1337
+ mine_tracking_speed?: number;
1338
+ module_disable_ticks?: number;
1339
+ phase_dodge_pct?: number;
1340
+ phase_strike_pct?: number;
1341
+ rage_damage_scaling?: boolean;
1342
+ random_damage_pct?: number;
1343
+ reflect_energy_pct?: number;
1344
+ repair_from_salvage?: boolean;
1345
+ shield_damage_pct?: number;
1346
+ shield_drain?: number;
1347
+ shield_phase?: boolean;
1348
+ shield_transfer_pct?: number;
1349
+ shock_damage?: number;
1350
+ system_disable_ticks?: number;
1351
+ };
1120
1352
  export type CommandHelpAction = {
1121
1353
  action: string;
1122
1354
  description: string;
@@ -1165,6 +1397,7 @@ export type CommissionActive = {
1165
1397
  ticks_remaining?: number;
1166
1398
  };
1167
1399
  export type CommissionEntry = {
1400
+ bare_hull: boolean;
1168
1401
  base_id?: string;
1169
1402
  base_name?: string;
1170
1403
  build_complete_tick?: number;
@@ -1175,59 +1408,100 @@ export type CommissionEntry = {
1175
1408
  credits_paid?: number;
1176
1409
  earmarked_credits?: number;
1177
1410
  material_cost_estimate?: number;
1411
+ /**
1412
+ * 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.
1413
+ */
1178
1414
  materials_gathered?: {
1179
1415
  [key: string]: number;
1180
1416
  };
1417
+ /**
1418
+ * 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.
1419
+ */
1420
+ materials_initially_supplied?: {
1421
+ [key: string]: number;
1422
+ };
1181
1423
  materials_provided: boolean;
1424
+ /**
1425
+ * 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.
1426
+ */
1427
+ materials_to_source?: Array<CargoItem>;
1428
+ /**
1429
+ * 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.
1430
+ */
1182
1431
  required_materials?: {
1183
1432
  [key: string]: number;
1184
1433
  };
1185
1434
  ship_class_id: string;
1186
1435
  ship_name?: string;
1436
+ source_missing_materials?: boolean;
1187
1437
  status: string;
1188
1438
  ticks_remaining?: number;
1189
1439
  };
1190
1440
  export type CommissionMaterialStatus = {
1441
+ /**
1442
+ * True exactly when gathered is greater than or equal to needed.
1443
+ */
1191
1444
  complete: boolean;
1445
+ /**
1446
+ * Cumulative quantity allocated to the commission from all sources.
1447
+ */
1192
1448
  gathered: number;
1193
1449
  item_id: string;
1194
1450
  name: string;
1451
+ /**
1452
+ * Total quantity required for this material; this is not the remaining deficit.
1453
+ */
1195
1454
  needed: number;
1196
1455
  };
1197
1456
  export type CommissionQuoteResponse = {
1198
1457
  auto_docked?: boolean;
1199
1458
  auto_undocked?: boolean;
1459
+ bare_hull: boolean;
1200
1460
  blockers?: Array<string>;
1201
1461
  build_materials?: Array<CargoItem>;
1202
1462
  build_time?: number;
1203
1463
  can_afford_credits_only: boolean;
1464
+ can_afford_partial_sourcing: boolean;
1204
1465
  can_afford_provide_materials: boolean;
1205
1466
  can_commission: boolean;
1206
1467
  credits_only_available: boolean;
1207
1468
  credits_only_total: number;
1469
+ faction_funded_only?: boolean;
1208
1470
  labor_cost?: number;
1209
1471
  material_cost?: number;
1472
+ materials_supplied?: Array<CargoItem>;
1473
+ materials_to_source?: Array<CargoItem>;
1210
1474
  message: string;
1475
+ partial_sourcing_total?: number;
1211
1476
  player_credits?: number;
1212
1477
  provide_materials_total: number;
1478
+ sales_tax?: number;
1213
1479
  ship_class: string;
1214
1480
  ship_name?: string;
1215
1481
  shipyard_tier_here?: number;
1216
1482
  shipyard_tier_required?: number;
1483
+ source_missing_materials: boolean;
1484
+ sourcing_material_cost?: number;
1217
1485
  yard_margin?: number;
1218
1486
  };
1219
1487
  export type CommissionShipResponse = {
1220
1488
  auto_docked?: boolean;
1221
1489
  auto_undocked?: boolean;
1490
+ bare_hull: boolean;
1222
1491
  build_time?: number;
1223
1492
  commission_id: string;
1224
1493
  credits_left: number;
1225
1494
  credits_paid: number;
1226
1495
  labor_cost?: number;
1227
1496
  material_cost?: number;
1497
+ materials_supplied?: Array<CargoItem>;
1498
+ materials_to_source?: Array<CargoItem>;
1228
1499
  message: string;
1500
+ sales_tax?: number;
1229
1501
  ship_class: string;
1230
1502
  ship_name?: string;
1503
+ source_missing_materials: boolean;
1504
+ sourcing_material_cost?: number;
1231
1505
  status: string;
1232
1506
  yard_margin?: number;
1233
1507
  };
@@ -1247,11 +1521,16 @@ export type CompleteMissionResponse = {
1247
1521
  [key: string]: string;
1248
1522
  };
1249
1523
  credits_earned: number;
1524
+ credits_promised?: number;
1525
+ credits_shortfall?: number;
1250
1526
  items_received?: {
1251
1527
  [key: string]: number;
1252
1528
  };
1253
1529
  message: string;
1254
1530
  mission_id: string;
1531
+ reputation_changes?: {
1532
+ [key: string]: number;
1533
+ };
1255
1534
  skill_xp_gained?: {
1256
1535
  [key: string]: number;
1257
1536
  };
@@ -1284,6 +1563,8 @@ export type CraftCommandResponse = ({
1284
1563
  } & JobCancelResponse) | ({
1285
1564
  kind: 'bulk_cancel';
1286
1565
  } & BulkJobCancelResponse) | ({
1566
+ kind: 'retarget';
1567
+ } & JobRetargetResponse) | ({
1287
1568
  kind: 'package';
1288
1569
  } & PackageJobResponse);
1289
1570
  export type CraftJobResponse = {
@@ -1453,6 +1734,27 @@ export type DeclineMissionResponse = {
1453
1734
  template_id: string;
1454
1735
  title: string;
1455
1736
  };
1737
+ export type DefenseComponentLog = {
1738
+ after_flat_reduction: number;
1739
+ after_shield_resist: number;
1740
+ after_type_resist: number;
1741
+ armor_bypass_pct: number;
1742
+ damage_type: string;
1743
+ final_damage: number;
1744
+ flat_reduction_pct: number;
1745
+ hull_damage: number;
1746
+ ignore_all_defense: boolean;
1747
+ ignored_resistance_pct?: number;
1748
+ incoming_damage: number;
1749
+ lifesteal_heal?: number;
1750
+ lifesteal_pct?: number;
1751
+ shield_bypass_pct: number;
1752
+ shield_damage: number;
1753
+ shield_resist_pct: number;
1754
+ type_resist_pct: number;
1755
+ weapon_instance_id: string;
1756
+ weapon_name: string;
1757
+ };
1456
1758
  export type DeleteNoteResponse = {
1457
1759
  message: string;
1458
1760
  note_id: string;
@@ -1552,6 +1854,37 @@ export type DockResponse = {
1552
1854
  unread_chat_note?: string;
1553
1855
  your_facilities?: Array<FacilitySummary>;
1554
1856
  };
1857
+ export type DroneBaySlot = {
1858
+ id: string;
1859
+ name?: string;
1860
+ type: string;
1861
+ };
1862
+ export type DroneBayView = {
1863
+ /**
1864
+ * Total drone bandwidth available
1865
+ */
1866
+ bandwidth_total: number;
1867
+ /**
1868
+ * Bandwidth consumed by deployed drones
1869
+ */
1870
+ bandwidth_used: number;
1871
+ /**
1872
+ * Bay slots granted by fitted modules
1873
+ */
1874
+ bay_capacity: number;
1875
+ /**
1876
+ * Drones owned, in bay plus deployed
1877
+ */
1878
+ bay_count: number;
1879
+ /**
1880
+ * Drones currently deployed
1881
+ */
1882
+ deployed_count: number;
1883
+ /**
1884
+ * Drones racked in the bay, not deployed
1885
+ */
1886
+ in_bay: Array<DroneBaySlot>;
1887
+ };
1555
1888
  export type DroneInfo = {
1556
1889
  cargo_pct: number;
1557
1890
  has_script: boolean;
@@ -1644,6 +1977,24 @@ export type EmpirePolicySnapshot = {
1644
1977
  stateless_sales_tax_bps: number;
1645
1978
  tax_delinquency_bounty_per_credit: number;
1646
1979
  };
1980
+ export type EmpireStanding = {
1981
+ /**
1982
+ * Decay target; rep drifts toward this over time
1983
+ */
1984
+ baseline: number;
1985
+ /**
1986
+ * Time detained until by this empire; omitted when not jailed
1987
+ */
1988
+ jailed_until?: string;
1989
+ /**
1990
+ * Sum of uncleaned crime bounties with this empire (credits)
1991
+ */
1992
+ outstanding_bounty: number;
1993
+ /**
1994
+ * Current rep score, range -100 to +100
1995
+ */
1996
+ reputation: number;
1997
+ };
1647
1998
  export type EnrichedWreck = {
1648
1999
  cargo: Array<ShipCargoItem>;
1649
2000
  created_at: string;
@@ -1757,6 +2108,12 @@ export type FacilityDefSummary = {
1757
2108
  category: string;
1758
2109
  description: string;
1759
2110
  faction_cap?: number;
2111
+ faction_crew_capacity?: number;
2112
+ faction_marine_capacity?: number;
2113
+ faction_medical_capacity?: number;
2114
+ faction_medical_refill_per_cycle?: number;
2115
+ faction_medical_supply_item?: string;
2116
+ faction_medical_units_per_item?: number;
1760
2117
  faction_service?: string;
1761
2118
  labor_cost: number;
1762
2119
  level: number;
@@ -1775,6 +2132,7 @@ export type FacilityDefinition = {
1775
2132
  build_materials?: Array<RecipeInput>;
1776
2133
  build_time: number;
1777
2134
  category: string;
2135
+ combat_repair_rate?: number;
1778
2136
  degraded_description?: string;
1779
2137
  deposit_to_empire_reserves?: boolean;
1780
2138
  description: string;
@@ -1784,6 +2142,12 @@ export type FacilityDefinition = {
1784
2142
  expansion_of?: string;
1785
2143
  expansion_scale?: number;
1786
2144
  faction_cap?: number;
2145
+ faction_crew_capacity?: number;
2146
+ faction_marine_capacity?: number;
2147
+ faction_medical_capacity?: number;
2148
+ faction_medical_refill_per_cycle?: number;
2149
+ faction_medical_supply_item?: string;
2150
+ faction_medical_units_per_item?: number;
1787
2151
  faction_service_type?: string;
1788
2152
  fleet_upkeep?: boolean;
1789
2153
  fuel_capacity?: number;
@@ -1819,6 +2183,10 @@ export type FacilityDefinition = {
1819
2183
  scan_falloff?: number;
1820
2184
  scan_power?: number;
1821
2185
  self_repair_rate?: number;
2186
+ service_pool_capacity?: number;
2187
+ service_pool_refill_per_cycle?: number;
2188
+ service_pool_supply_item?: string;
2189
+ service_pool_units_per_item?: number;
1822
2190
  service_type?: string;
1823
2191
  station_armor?: number;
1824
2192
  station_hull_hp?: number;
@@ -1828,6 +2196,7 @@ export type FacilityDefinition = {
1828
2196
  transit_deadline_bonus?: number;
1829
2197
  unique?: boolean;
1830
2198
  upgrades_from?: string;
2199
+ weapon_accuracy_bonus?: number;
1831
2200
  weapon_cooldown?: number;
1832
2201
  weapon_damage?: number;
1833
2202
  weapon_damage_type?: string;
@@ -1858,8 +2227,17 @@ export type FacilityEntry = {
1858
2227
  damaged?: boolean;
1859
2228
  description: string;
1860
2229
  dining_points?: number;
2230
+ /**
2231
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
2232
+ */
2233
+ dismantling?: boolean;
1861
2234
  facility_id: string;
2235
+ faction_crew_capacity?: number;
1862
2236
  faction_id?: string;
2237
+ faction_marine_capacity?: number;
2238
+ faction_medical_capacity?: number;
2239
+ faction_medical_refill_per_cycle?: number;
2240
+ faction_medical_supply_item?: string;
1863
2241
  faction_service?: string;
1864
2242
  is_recycler?: boolean;
1865
2243
  labor_per_cycle?: number;
@@ -1876,6 +2254,9 @@ export type FacilityEntry = {
1876
2254
  production?: FacilityProduction;
1877
2255
  recipe_id?: string;
1878
2256
  rent_paid_until_tick?: number;
2257
+ /**
2258
+ * 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.
2259
+ */
1879
2260
  rent_per_cycle?: number;
1880
2261
  repair_complete_tick?: number;
1881
2262
  service?: string;
@@ -1902,15 +2283,31 @@ export type FacilityFactionBuildResponse = {
1902
2283
  };
1903
2284
  export type FacilityFactionEntry = {
1904
2285
  capacity?: number;
2286
+ crew_capacity?: number;
1905
2287
  custom_name?: string;
2288
+ /**
2289
+ * 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
2290
+ */
2291
+ damaged?: boolean;
1906
2292
  facility_id: string;
1907
2293
  faction_service: string;
1908
2294
  level: number;
2295
+ marine_capacity?: number;
2296
+ medical_capacity?: number;
2297
+ medical_refill_per_cycle?: number;
2298
+ medical_supply_item?: string;
1909
2299
  missed_rent_cycles?: number;
1910
2300
  name: string;
2301
+ /**
2302
+ * 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.
2303
+ */
1911
2304
  rent_per_cycle: number;
1912
2305
  rental_fee_per_run?: number;
1913
- status: string;
2306
+ repair_complete_tick?: number;
2307
+ /**
2308
+ * 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.
2309
+ */
2310
+ status: 'under_construction' | 'damaged' | 'repairing' | 'active' | 'dismantling';
1914
2311
  ticks_until_complete?: number;
1915
2312
  type: string;
1916
2313
  };
@@ -1924,12 +2321,18 @@ export type FacilityFactionListResponse = {
1924
2321
  };
1925
2322
  export type FacilityFactionOwnedResponse = {
1926
2323
  action: 'faction_owned';
2324
+ /**
2325
+ * 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.
2326
+ */
1927
2327
  arrears_owed?: number;
1928
2328
  facilities: Array<FactionOwnedFacilityEntry>;
1929
2329
  faction_id: string;
1930
2330
  grace_cycles?: number;
1931
2331
  hint?: string;
1932
2332
  note?: string;
2333
+ /**
2334
+ * 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.
2335
+ */
1933
2336
  total_rent_per_cycle: number;
1934
2337
  };
1935
2338
  export type FacilityFactionStorage = {
@@ -1976,15 +2379,31 @@ export type FacilityListForSaleResponse = {
1976
2379
  };
1977
2380
  export type FacilityListResponse = {
1978
2381
  action: 'list';
2382
+ /**
2383
+ * Canonical ID of the station containing every listed facility and both per-station rent summaries.
2384
+ */
1979
2385
  base_id: string;
1980
2386
  construction?: StationConstructionResponse;
2387
+ /**
2388
+ * 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.
2389
+ */
1981
2390
  faction_facilities: Array<FacilityEntry>;
2391
+ /**
2392
+ * 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.
2393
+ */
1982
2394
  faction_rent?: FacilityRentSummary;
1983
2395
  life_support?: StationLifeSupportStatus;
2396
+ /**
2397
+ * 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.
2398
+ */
1984
2399
  player_facilities: Array<FacilityEntry>;
2400
+ /**
2401
+ * 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.
2402
+ */
1985
2403
  player_rent?: FacilityRentSummary;
1986
2404
  power?: StationPowerStatus;
1987
2405
  public_facilities?: Array<FacilityEntry>;
2406
+ service_pools?: StationServicePools;
1988
2407
  station_facilities: Array<FacilityEntry>;
1989
2408
  };
1990
2409
  export type FacilityListingEntry = {
@@ -2072,11 +2491,23 @@ export type FacilityRecipeInfo = {
2072
2491
  outputs: Array<ItemQuantity>;
2073
2492
  };
2074
2493
  export type FacilityRentSummary = {
2494
+ /**
2495
+ * 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.
2496
+ */
2075
2497
  arrears_owed?: number;
2498
+ /**
2499
+ * 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.
2500
+ */
2076
2501
  est_rent_per_day: number;
2502
+ /**
2503
+ * Number of owned facilities in this summary including facilities whose billing is paused.
2504
+ */
2077
2505
  facilities: number;
2078
2506
  grace_cycles?: number;
2079
2507
  note?: string;
2508
+ /**
2509
+ * 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.
2510
+ */
2080
2511
  total_rent_per_cycle: number;
2081
2512
  };
2082
2513
  export type FacilityRepairMaterial = {
@@ -2099,7 +2530,13 @@ export type FacilitySummary = {
2099
2530
  missed_rent_cycles?: number;
2100
2531
  name: string;
2101
2532
  recipe_id?: string;
2533
+ /**
2534
+ * 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.
2535
+ */
2102
2536
  rent_per_cycle: number;
2537
+ /**
2538
+ * Facility status: enabled or legacy disabled facilities are billable; damaged or under_construction or dismantling facilities have paused rent. Dismantling facilities will be removed.
2539
+ */
2103
2540
  status: string;
2104
2541
  ticks_until_complete?: number;
2105
2542
  type: string;
@@ -2138,6 +2575,10 @@ export type FacilityTypeDetailResponse = {
2138
2575
  requires_service_name?: string;
2139
2576
  requires_service_type?: string;
2140
2577
  satisfied_description?: string;
2578
+ service_pool_capacity?: number;
2579
+ service_pool_refill_per_cycle?: number;
2580
+ service_pool_supply_item?: string;
2581
+ service_pool_units_per_item?: number;
2141
2582
  type_id: string;
2142
2583
  upgrades_from?: string;
2143
2584
  upgrades_from_name?: string;
@@ -2469,6 +2910,7 @@ export type FactionInfoResponse = {
2469
2910
  name: string;
2470
2911
  owned_bases: number;
2471
2912
  peace_proposals?: Array<FactionPeaceProposal>;
2913
+ personnel?: FactionPersonnelEmployment;
2472
2914
  primary_color: string;
2473
2915
  roles?: Array<FactionRoleInfo>;
2474
2916
  secondary_color: string;
@@ -2549,11 +2991,18 @@ export type FactionOwnedFacilityEntry = {
2549
2991
  base_name: string;
2550
2992
  custom_name?: string;
2551
2993
  damaged?: boolean;
2994
+ /**
2995
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
2996
+ */
2997
+ dismantling?: boolean;
2552
2998
  facility_id: string;
2553
2999
  labor_per_run: number;
2554
3000
  missed_rent_cycles?: number;
2555
3001
  name: string;
2556
3002
  power_throttled?: boolean;
3003
+ /**
3004
+ * 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.
3005
+ */
2557
3006
  rent_per_cycle: number;
2558
3007
  rental_fee_per_run?: number;
2559
3008
  repair_complete_tick?: number;
@@ -2567,6 +3016,45 @@ export type FactionPeaceProposal = {
2567
3016
  proposed_at: string;
2568
3017
  terms?: string;
2569
3018
  };
3019
+ export type FactionPersonnelEmployment = {
3020
+ assigned_prize_crew: number;
3021
+ assigned_prize_marines: number;
3022
+ fit_crew: number;
3023
+ fit_marines: number;
3024
+ inbound_crew: number;
3025
+ injured_crew: number;
3026
+ injured_marines: number;
3027
+ owned_ship_crew: number;
3028
+ owned_ship_marines: number;
3029
+ reserve_crew: number;
3030
+ reserve_marines: number;
3031
+ total_crew: number;
3032
+ total_marines: number;
3033
+ };
3034
+ export type FactionPersonnelResponse = {
3035
+ /**
3036
+ * The personnel_action the request asked for. It is echoed back unchanged.
3037
+ */
3038
+ action: 'status' | 'recruit' | 'deposit' | 'withdraw';
3039
+ auto_docked?: boolean;
3040
+ auto_undocked?: boolean;
3041
+ base_id: string;
3042
+ cost?: number;
3043
+ crew_capacity: number;
3044
+ crew_moved?: number;
3045
+ crew_pool_remaining?: number;
3046
+ fit_crew: number;
3047
+ fit_marines: number;
3048
+ inbound_crew: number;
3049
+ inbound_prizes: number;
3050
+ injured_crew: number;
3051
+ injured_marines: number;
3052
+ marine_capacity: number;
3053
+ marine_pool_remaining?: number;
3054
+ marines_moved?: number;
3055
+ medical_available: number;
3056
+ medical_capacity: number;
3057
+ };
2570
3058
  export type FactionPostMissionResponse = {
2571
3059
  auto_docked?: boolean;
2572
3060
  auto_undocked?: boolean;
@@ -2619,9 +3107,21 @@ export type FactionQueryTradeIntelResponse = {
2619
3107
  total: number;
2620
3108
  };
2621
3109
  export type FactionRemoveAllyResponse = {
3110
+ /**
3111
+ * Always present. Human-readable result explaining ally removal or that any pending alliance proposals between the factions have been cleared.
3112
+ */
2622
3113
  message: string;
3114
+ /**
3115
+ * 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.
3116
+ */
2623
3117
  removed: boolean;
3118
+ /**
3119
+ * Always present. Canonical ID of the target faction after resolving the requested faction ID or tag.
3120
+ */
2624
3121
  target_faction_id: string;
3122
+ /**
3123
+ * Always present. Display name of the target faction.
3124
+ */
2625
3125
  target_name: string;
2626
3126
  };
2627
3127
  export type FactionRemoveEnemyResponse = {
@@ -3099,10 +3599,14 @@ export type GetBaseResponse = {
3099
3599
  fuel_tax_per_unit?: number;
3100
3600
  life_support?: StationLifeSupportStatus;
3101
3601
  power?: StationPowerStatus;
3602
+ repairs?: StationRepairResponse;
3102
3603
  services: Array<string>;
3103
3604
  };
3104
3605
  export type GetBattleLogResponse = {
3105
3606
  battle_id: string;
3607
+ /**
3608
+ * Tick snapshots include is_npc and is_boss on newly recorded rows. Explicit false is authoritative; either field may be omitted on historical rows that predate identity provenance.
3609
+ */
3106
3610
  entries: Array<BattleLogEntry>;
3107
3611
  /**
3108
3612
  * True if more entries exist past this page (tick_start/tick_end) — raise tick_start or limit to page through.
@@ -3119,7 +3623,14 @@ export type GetBattleLogResponse = {
3119
3623
  };
3120
3624
  export type GetBattleStatusResponse = {
3121
3625
  battle_id: string;
3626
+ boarding?: Array<BoardingPublicStatus>;
3627
+ /**
3628
+ * The requesting participant's own tactical state. Present only when is_participant is true; omitted for observers. Never describes another participant.
3629
+ */
3122
3630
  combat_state?: BattleCombatState;
3631
+ /**
3632
+ * True when the requesting player participates in this battle and receives their own combat_state; false for an observer.
3633
+ */
3123
3634
  is_participant: boolean;
3124
3635
  participants?: Array<BattleParticipant>;
3125
3636
  sides?: Array<BattleSide>;
@@ -3207,6 +3718,8 @@ export type GetNearbyResponse = {
3207
3718
  pirate_count: number;
3208
3719
  pirates: Array<PirateInfo>;
3209
3720
  poi_id: string;
3721
+ prize_count: number;
3722
+ prizes: Array<PrizeInfo>;
3210
3723
  unknown_signature?: boolean;
3211
3724
  };
3212
3725
  export type GetNotesResponse = {
@@ -3370,6 +3883,7 @@ export type InspectPackageData = {
3370
3883
  label: string;
3371
3884
  owner: InspectPackageOwner;
3372
3885
  package_id: string;
3886
+ shipment?: InspectPackageShipment;
3373
3887
  size: number;
3374
3888
  };
3375
3889
  export type InspectPackageOwner = {
@@ -3378,6 +3892,21 @@ export type InspectPackageOwner = {
3378
3892
  tag?: string;
3379
3893
  type: 'player' | 'faction';
3380
3894
  };
3895
+ export type InspectPackageShipment = {
3896
+ base_reward: number;
3897
+ destination_base_id: string;
3898
+ destination_name?: string;
3899
+ destination_system?: string;
3900
+ failure_debt: number;
3901
+ late: boolean;
3902
+ late_fee_if_delivered_now?: number;
3903
+ payout_if_delivered_now: number;
3904
+ role: 'carrier' | 'shipper' | 'recipient' | 'invited_carrier';
3905
+ shipment_id: string;
3906
+ status: string;
3907
+ ticks_to_deadline: number;
3908
+ ticks_to_recovery_deadline: number;
3909
+ };
3381
3910
  export type InspectResponse = {
3382
3911
  base?: GetBaseResponse;
3383
3912
  catalog?: {
@@ -3477,6 +4006,7 @@ export type IntelResource = {
3477
4006
  export type Item = {
3478
4007
  base_value: number;
3479
4008
  category: string;
4009
+ compression?: string;
3480
4010
  description: string;
3481
4011
  effect?: ItemEffect;
3482
4012
  extracted_by?: string;
@@ -3572,9 +4102,21 @@ export type JobReorderResponse = {
3572
4102
  message: string;
3573
4103
  position: number;
3574
4104
  };
4105
+ export type JobRetargetResponse = {
4106
+ action: 'job_retarget';
4107
+ auto_docked?: boolean;
4108
+ auto_undocked?: boolean;
4109
+ deliver_to: string;
4110
+ job_id: string;
4111
+ kind: 'retarget';
4112
+ message: string;
4113
+ previous_deliver_to: string;
4114
+ runs_remaining: number;
4115
+ };
3575
4116
  export type JobView = {
3576
4117
  base_id?: string;
3577
4118
  base_name?: string;
4119
+ deliver_to?: string;
3578
4120
  eta_ticks: number;
3579
4121
  external?: boolean;
3580
4122
  facility_id: string;
@@ -3621,6 +4163,7 @@ export type JumpResponse = {
3621
4163
  system_id: string;
3622
4164
  };
3623
4165
  export type KillLogEntry = {
4166
+ cause?: string;
3624
4167
  killer_id: string;
3625
4168
  killer_username: string;
3626
4169
  victim_id: string;
@@ -3734,7 +4277,6 @@ export type LootWreckResponse = {
3734
4277
  module_id?: string;
3735
4278
  module_type_id?: string;
3736
4279
  quantity: number;
3737
- wear?: number;
3738
4280
  wreck_empty: boolean;
3739
4281
  xp_gained?: {
3740
4282
  [key: string]: number;
@@ -3749,7 +4291,6 @@ export type LootedModule = {
3749
4291
  name: string;
3750
4292
  type: string;
3751
4293
  type_id: string;
3752
- wear: number;
3753
4294
  };
3754
4295
  export type LoungeCheckInResponse = {
3755
4296
  auto_docked?: boolean;
@@ -3766,16 +4307,43 @@ export type LoungeCheckInResponse = {
3766
4307
  skipped_full?: number;
3767
4308
  };
3768
4309
  export type McpNotification = {
4310
+ /**
4311
+ * Frame payload. The shape is selected by msg_type: read the Notification_<msg_type> schema under components.schemas. The notifications array on every v2 response carries the same payloads as an explicit anyOf.
4312
+ */
4313
+ data: unknown;
3769
4314
  id: string;
4315
+ /**
4316
+ * Specific frame subtype. Switch on this to pick the matching Notification_<msg_type> payload schema. Routing to the coarse type field: chat_message -> chat. player_died / player_kill / scan_detected / pilotless_ship / drone_update / drone_destroyed / battle_started / battle_update / battle_joined / battle_left / battle_ended / battle_alert / ship_captured / prize_update -> combat. trade_offer_received / trade_complete / trade_declined / trade_cancelled -> trade. market_update -> market. crafting_update -> crafting. observation_update -> observation. personnel_update -> system. Frames not named here also route to system - that includes battle_damage / drone_scan / drone_survey / drone_adrift / action_result / action_error / server_restart_warning. A types=combat filter does not carry them.
4317
+ */
3770
4318
  msg_type: string;
3771
4319
  timestamp: string;
3772
- type: string;
4320
+ /**
4321
+ * Coarse notification category. This is the value get_notifications accepts in its types filter. The server derives it from msg_type — see the msg_type field for the routing table.
4322
+ */
4323
+ type: 'chat' | 'combat' | 'trade' | 'market' | 'crafting' | 'observation' | 'system';
3773
4324
  };
3774
4325
  export type MapData = {
3775
4326
  empires: {
3776
4327
  [key: string]: string;
3777
4328
  };
3778
- systems: Array<MapSystem>;
4329
+ /**
4330
+ * Every system in the galaxy, with static position and connection data.
4331
+ */
4332
+ systems: Array<MapDataSystem>;
4333
+ };
4334
+ export type MapDataSystem = {
4335
+ battle_id?: string;
4336
+ connections: Array<string>;
4337
+ empire?: string;
4338
+ empire_color?: string;
4339
+ has_battle?: boolean;
4340
+ id: string;
4341
+ is_home?: boolean;
4342
+ is_stronghold?: boolean;
4343
+ name: string;
4344
+ online: number;
4345
+ x: number;
4346
+ y: number;
3779
4347
  };
3780
4348
  /**
3781
4349
  * A system entry from the player's discovered map.
@@ -3920,11 +4488,21 @@ export type MissionInfo = {
3920
4488
  };
3921
4489
  export type MissionRewardsInfo = {
3922
4490
  credits: number;
4491
+ /**
4492
+ * item_id → quantity
4493
+ */
3923
4494
  items?: {
3924
4495
  [key: string]: number;
3925
4496
  };
4497
+ /**
4498
+ * Stronghold crew the pirate_rep reward is paid to (e.g. pirate_kael). Empty means the standing is granted with every pirate crew.
4499
+ */
4500
+ pirate_faction?: string;
3926
4501
  pirate_rep?: number;
3927
4502
  reputation?: number;
4503
+ /**
4504
+ * skill_id → XP
4505
+ */
3928
4506
  skill_xp?: {
3929
4507
  [key: string]: number;
3930
4508
  };
@@ -3955,11 +4533,17 @@ export type Module = {
3955
4533
  armor_bypass_bonus?: number;
3956
4534
  armor_repair_rate?: number;
3957
4535
  base_value: number;
4536
+ boarding_capability?: boolean;
4537
+ boarding_contact_defense?: boolean;
4538
+ boarding_defense_bonus_pct?: number;
3958
4539
  cargo_bonus?: number;
3959
4540
  cloak_strength?: number;
4541
+ combat_effects?: CombatSpecialEffects;
3960
4542
  cooldown?: number;
3961
4543
  cpu_bonus?: number;
3962
4544
  cpu_usage: number;
4545
+ crew_capacity_bonus?: number;
4546
+ crew_combat_bonus_pct?: number;
3963
4547
  current_cool?: number;
3964
4548
  damage?: number;
3965
4549
  damage_reduction?: number;
@@ -3969,14 +4553,21 @@ export type Module = {
3969
4553
  disruptor_power?: number;
3970
4554
  drone_bandwidth?: number;
3971
4555
  drone_capacity?: number;
4556
+ fleet_triage_pct?: number;
3972
4557
  fuel_efficiency?: number;
3973
4558
  hidden?: boolean;
3974
4559
  hull_bonus?: number;
3975
4560
  hull_penalty?: number;
3976
4561
  id: string;
4562
+ jam_strength?: number;
4563
+ latch_resistance?: number;
4564
+ latch_strength?: number;
3977
4565
  leisure_points?: number;
3978
4566
  magazine_size?: number;
4567
+ marine_capacity_bonus?: number;
4568
+ marine_combat_bonus_pct?: number;
3979
4569
  max_fuel_bonus?: number;
4570
+ medical_treatment_rate?: number;
3980
4571
  mining_power?: number;
3981
4572
  name: string;
3982
4573
  passenger_business_berths?: number;
@@ -3984,11 +4575,15 @@ export type Module = {
3984
4575
  passenger_economy_berths?: number;
3985
4576
  passenger_first_berths?: number;
3986
4577
  passive_recipe?: string;
4578
+ passive_repair?: number;
3987
4579
  power_bonus?: number;
3988
4580
  power_usage: number;
3989
4581
  precision_factor?: number;
3990
4582
  quest_item?: boolean;
3991
4583
  reach?: number;
4584
+ reactive_resistance?: number;
4585
+ refit_capability?: boolean;
4586
+ remote_medical_treatment?: boolean;
3992
4587
  remote_repair_power?: number;
3993
4588
  required_skills?: {
3994
4589
  [key: string]: number;
@@ -3997,6 +4592,7 @@ export type Module = {
3997
4592
  [key: string]: number;
3998
4593
  };
3999
4594
  salvage_bonus?: number;
4595
+ scan_reduction?: number;
4000
4596
  scanner_power?: number;
4001
4597
  scramble_power?: number;
4002
4598
  shield_bonus?: number;
@@ -4009,6 +4605,7 @@ export type Module = {
4009
4605
  speed_bonus?: number;
4010
4606
  speed_penalty?: number;
4011
4607
  survey_power?: number;
4608
+ targeting_reduction?: number;
4012
4609
  tow_speed_penalty?: number;
4013
4610
  tracking_bonus?: number;
4014
4611
  type: string;
@@ -4088,9 +4685,61 @@ export type NotificationAchievementUnlocked = {
4088
4685
  */
4089
4686
  faction?: boolean;
4090
4687
  };
4091
- export type NotificationBaseDestroyed = {
4092
- attacker_id: string;
4093
- attacker_name: string;
4688
+ /**
4689
+ * A queued action that failed when it ran on a later tick. Delivered on the same path as action_result: to the caller waiting on the originating request_id when one is still attached, otherwise queued and collected through get_notifications.
4690
+ */
4691
+ export type NotificationActionError = {
4692
+ /**
4693
+ * Machine-readable error code. Switch on this rather than on message. It is the same code set the synchronous error response uses for that command, so it is not enumerated here — a command can fail at execution time for any reason it can fail immediately.
4694
+ */
4695
+ code: string;
4696
+ /**
4697
+ * Name of the command that failed.
4698
+ */
4699
+ command: string;
4700
+ /**
4701
+ * Optional extra context. Shape depends on code. Omitted when the failure carries none.
4702
+ */
4703
+ details?: {
4704
+ [key: string]: unknown;
4705
+ };
4706
+ /**
4707
+ * Human-readable explanation of the failure.
4708
+ */
4709
+ message: string;
4710
+ /**
4711
+ * Tick the command failed on.
4712
+ */
4713
+ tick: number;
4714
+ };
4715
+ /**
4716
+ * Result of a queued action that completed on a later tick. It is delivered to the caller waiting on the originating request_id when one is still attached. Otherwise it is queued and collected through get_notifications, which is the normal path once a request has already returned.
4717
+ */
4718
+ export type NotificationActionResult = {
4719
+ /**
4720
+ * True when the server docked you to run the command.
4721
+ */
4722
+ auto_docked?: boolean;
4723
+ /**
4724
+ * True when the server undocked you to run the command.
4725
+ */
4726
+ auto_undocked?: boolean;
4727
+ /**
4728
+ * Name of the command that ran.
4729
+ */
4730
+ command: string;
4731
+ /**
4732
+ * Payload of the completed command. On v1 this is the command's own response object — see that command's response schema. On v2 it is the state delta the command registered, keyed by state section. Untyped because both shapes are possible; it is null when the command returned no body.
4733
+ */
4734
+ result: unknown;
4735
+ /**
4736
+ * Tick the command executed on.
4737
+ */
4738
+ tick: number;
4739
+ };
4740
+ export type NotificationBaseDestroyed = {
4741
+ attacker_id: string;
4742
+ attacker_name: string;
4094
4743
  base_id: string;
4095
4744
  base_name: string;
4096
4745
  base_wreck_id?: string;
@@ -4117,6 +4766,7 @@ export type NotificationBattleDamage = {
4117
4766
  attacker_id: string;
4118
4767
  attacker_name?: string;
4119
4768
  damage_type: string;
4769
+ effect_kind?: string;
4120
4770
  hit_success: boolean;
4121
4771
  hull_hit: number;
4122
4772
  shield_hit: number;
@@ -4133,11 +4783,19 @@ export type NotificationBattleDamage = {
4133
4783
  };
4134
4784
  export type NotificationBattleEnded = {
4135
4785
  battle_id: string;
4786
+ captures?: Array<CaptureLogEntry>;
4136
4787
  duration: number;
4137
4788
  participants?: Array<BattleEndedParticipantInfo>;
4138
- reason: string;
4789
+ /**
4790
+ * How the battle ended. victory means one side survived and took a kill. stalemate and mutual_destruction are both draws. interrupted means a server restart ended the battle. The REST battle summary and battle log call this same field outcome.
4791
+ */
4792
+ reason: 'victory' | 'stalemate' | 'mutual_destruction' | 'interrupted';
4793
+ ships_captured?: number;
4139
4794
  ships_destroyed: number;
4140
4795
  total_damage: number;
4796
+ /**
4797
+ * Side id of the winning side. Always -1 for a draw — stalemate and mutual_destruction are both draws — and -1 for a battle a server restart interrupted.
4798
+ */
4141
4799
  winning_side: number;
4142
4800
  };
4143
4801
  export type NotificationBattleJoined = {
@@ -4159,6 +4817,7 @@ export type NotificationBattleStarted = {
4159
4817
  export type NotificationBattleUpdate = {
4160
4818
  auto_pilot: boolean;
4161
4819
  battle_id: string;
4820
+ boarding?: Array<BoardingPublicStatus>;
4162
4821
  participants: Array<BattleParticipantInfo>;
4163
4822
  sides: Array<BattleSideInfo>;
4164
4823
  tick: number;
@@ -4209,6 +4868,13 @@ export type NotificationCraftingUpdate = {
4209
4868
  jobs: Array<CraftingJobUpdate>;
4210
4869
  tick: number;
4211
4870
  };
4871
+ export type NotificationDroneAdrift = {
4872
+ drone_id: string;
4873
+ drone_type: string;
4874
+ owner_id: string;
4875
+ poi_id: string;
4876
+ system_id: string;
4877
+ };
4212
4878
  export type NotificationDroneDestroyed = {
4213
4879
  drone_id: string;
4214
4880
  drone_type: string;
@@ -4319,6 +4985,49 @@ export type NotificationFacilityRentWarning = {
4319
4985
  */
4320
4986
  missed_cycles?: number;
4321
4987
  };
4988
+ export type NotificationFactionAllianceBroken = {
4989
+ by_faction_id: string;
4990
+ by_faction_name: string;
4991
+ by_faction_tag: string;
4992
+ message: string;
4993
+ };
4994
+ export type NotificationFactionAllianceFormed = {
4995
+ message: string;
4996
+ with_faction_id: string;
4997
+ with_faction_name: string;
4998
+ with_faction_tag: string;
4999
+ };
5000
+ export type NotificationFactionAllianceProposal = {
5001
+ from_faction_id: string;
5002
+ from_faction_name: string;
5003
+ from_faction_tag: string;
5004
+ message: string;
5005
+ };
5006
+ /**
5007
+ * Sent to the proposing faction's members when the other faction accepts their peace proposal.
5008
+ */
5009
+ export type NotificationFactionPeaceAccepted = {
5010
+ /**
5011
+ * Faction that accepted the proposal.
5012
+ */
5013
+ faction_id: string;
5014
+ faction_name: string;
5015
+ message: string;
5016
+ };
5017
+ export type NotificationFactionPeaceProposal = {
5018
+ from_faction_id: string;
5019
+ from_faction_name: string;
5020
+ message: string;
5021
+ terms?: string;
5022
+ };
5023
+ export type NotificationFactionWarDeclared = {
5024
+ aggressor_faction_id: string;
5025
+ aggressor_faction_name: string;
5026
+ defender_faction_id: string;
5027
+ defender_faction_name: string;
5028
+ message: string;
5029
+ reason?: string;
5030
+ };
4322
5031
  export type NotificationMarketUpdate = {
4323
5032
  base_id: string;
4324
5033
  base_name?: string;
@@ -4345,15 +5054,43 @@ export type NotificationObservationUpdate = {
4345
5054
  active_scan?: boolean;
4346
5055
  cloaked_lost?: Array<string>;
4347
5056
  cloaked_resolved?: Array<ScanContact>;
5057
+ creatures_changed?: Array<CreatureInfo>;
5058
+ creatures_departed?: Array<string>;
5059
+ empire_npcs_changed?: Array<EmpireNpcInfo>;
5060
+ empire_npcs_departed?: Array<string>;
4348
5061
  nearby_changed?: Array<NearbyPlayer>;
4349
5062
  nearby_departed?: Array<string>;
5063
+ pirates_changed?: Array<PirateInfo>;
5064
+ pirates_departed?: Array<string>;
4350
5065
  poi_id: string;
5066
+ prizes_changed?: Array<PrizeInfo>;
5067
+ prizes_departed?: Array<string>;
4351
5068
  system_changed?: Array<NearbyPlayer>;
4352
5069
  system_departed?: Array<string>;
4353
5070
  system_id: string;
4354
5071
  tick: number;
4355
5072
  unknown_signature: boolean;
4356
5073
  };
5074
+ export type NotificationPersonnelUpdate = {
5075
+ /**
5076
+ * What an ally did to your active ship. treatment healed injured crew or marines. transfer moved personnel between ships.
5077
+ */
5078
+ action: 'treatment' | 'transfer';
5079
+ crew_capacity: number;
5080
+ crew_treated?: number;
5081
+ fit_crew_transferred?: number;
5082
+ fit_marines_transferred?: number;
5083
+ injured_crew_swapped?: number;
5084
+ injured_crew_transferred?: number;
5085
+ injured_marines_swapped?: number;
5086
+ injured_marines_transferred?: number;
5087
+ marine_capacity: number;
5088
+ marines_treated?: number;
5089
+ personnel: PersonnelState;
5090
+ ship_id: string;
5091
+ source_player_id: string;
5092
+ source_username: string;
5093
+ };
4357
5094
  export type NotificationPilotlessShip = {
4358
5095
  expire_tick: number;
4359
5096
  player_id: string;
@@ -4369,7 +5106,7 @@ export type NotificationPilotlessShip = {
4369
5106
  */
4370
5107
  export type NotificationPirateDestroyed = {
4371
5108
  /**
4372
- * Combat XP awarded (kill notification to the killer).
5109
+ * Weapons skill XP awarded (legacy field name; kill notification to the killer).
4373
5110
  */
4374
5111
  combat_xp?: number;
4375
5112
  /**
@@ -4400,6 +5137,34 @@ export type NotificationPirateDestroyed = {
4400
5137
  * System name (boss-kill system broadcast).
4401
5138
  */
4402
5139
  system_name?: string;
5140
+ /**
5141
+ * Whether the wreck holds lootable cargo (omitted when no wreck).
5142
+ */
5143
+ wreck_has_cargo?: boolean;
5144
+ /**
5145
+ * Whether the wreck holds salvageable modules (omitted when no wreck).
5146
+ */
5147
+ wreck_has_modules?: boolean;
5148
+ /**
5149
+ * Wreck left behind (omitted when no wreck was created).
5150
+ */
5151
+ wreck_id?: string;
5152
+ /**
5153
+ * POI the wreck was left at — combat is system-scoped, so this can differ from the killer's POI (omitted when no wreck or the POI is hidden from the recipient).
5154
+ */
5155
+ wreck_poi_id?: string;
5156
+ /**
5157
+ * Display name of the wreck's POI (omitted when unknown or hidden from the recipient).
5158
+ */
5159
+ wreck_poi_name?: string;
5160
+ /**
5161
+ * System the wreck is in (omitted when no wreck).
5162
+ */
5163
+ wreck_system_id?: string;
5164
+ /**
5165
+ * Display name of the wreck's system (omitted when no wreck, or when the name is unknown).
5166
+ */
5167
+ wreck_system_name?: string;
4403
5168
  };
4404
5169
  /**
4405
5170
  * Pushed to players in range with a pirate_radio_scanner module, carrying an intercepted pirate transmission.
@@ -4429,7 +5194,23 @@ export type NotificationPlayerDied = {
4429
5194
  self_destruct_fee?: number;
4430
5195
  ship_lost: string;
4431
5196
  wreck_id?: string;
5197
+ /**
5198
+ * POI where the wreck was left. Omitted when there is no wreck or the POI is hidden from the recipient.
5199
+ */
5200
+ wreck_poi_id?: string;
5201
+ /**
5202
+ * Display name of the wreck POI. Omitted when unknown or hidden from the recipient.
5203
+ */
5204
+ wreck_poi_name?: string;
4432
5205
  wreck_suppressed?: boolean;
5206
+ /**
5207
+ * System where the wreck was left. Omitted when there is no wreck.
5208
+ */
5209
+ wreck_system_id?: string;
5210
+ /**
5211
+ * Display name of the wreck system. Omitted when unknown.
5212
+ */
5213
+ wreck_system_name?: string;
4433
5214
  };
4434
5215
  /**
4435
5216
  * Pushed to the killer when they destroy another player's ship.
@@ -4451,6 +5232,41 @@ export type NotificationPlayerKill = {
4451
5232
  * Wreck left behind (omitted when no wreck was created).
4452
5233
  */
4453
5234
  wreck_id?: string;
5235
+ /**
5236
+ * POI the wreck was left at — combat is system-scoped, so this can differ from the killer's POI (omitted when no wreck or the POI is hidden from the recipient).
5237
+ */
5238
+ wreck_poi_id?: string;
5239
+ /**
5240
+ * Display name of the wreck's POI (omitted when unknown or hidden from the recipient).
5241
+ */
5242
+ wreck_poi_name?: string;
5243
+ /**
5244
+ * System the wreck is in (omitted when no wreck).
5245
+ */
5246
+ wreck_system_id?: string;
5247
+ /**
5248
+ * Display name of the wreck's system (omitted when no wreck, or when the name is unknown).
5249
+ */
5250
+ wreck_system_name?: string;
5251
+ };
5252
+ export type NotificationPrizeUpdate = {
5253
+ destination_base_id?: string;
5254
+ message: string;
5255
+ poi_id?: string;
5256
+ prize_id: string;
5257
+ ship_class: string;
5258
+ ship_id: string;
5259
+ ship_name?: string;
5260
+ /**
5261
+ * Recovery state of the prize. delivered / destroyed / expired / recaptured are terminal.
5262
+ */
5263
+ status: 'available' | 'claimed' | 'in_transit' | 'delivered' | 'destroyed' | 'expired' | 'recaptured';
5264
+ system_id?: string;
5265
+ /**
5266
+ * Why an in_transit prize is stalled. Omitted while the prize is moving.
5267
+ */
5268
+ wait_reason?: 'no_route' | 'no_fuel' | 'destination_missing' | 'incapacitated' | 'manual_stop';
5269
+ wreck_id?: string;
4454
5270
  };
4455
5271
  export type NotificationRanchPoached = {
4456
5272
  herd_left: number;
@@ -4477,6 +5293,22 @@ export type NotificationScanDetected = {
4477
5293
  scanner_ship_class?: string;
4478
5294
  scanner_username: string;
4479
5295
  };
5296
+ export type NotificationServerRestartWarning = {
5297
+ message: string;
5298
+ seconds_until_restart: number;
5299
+ target_version?: string;
5300
+ };
5301
+ export type NotificationShipCaptured = {
5302
+ battle_id: string;
5303
+ boarding_operation_id: string;
5304
+ captor_id: string;
5305
+ captor_username: string;
5306
+ former_owner_id: string;
5307
+ former_owner_username: string;
5308
+ ship_class: string;
5309
+ ship_id: string;
5310
+ tick: number;
5311
+ };
4480
5312
  export type NotificationShipCommissionComplete = {
4481
5313
  base_id: string;
4482
5314
  base_name: string;
@@ -4559,6 +5391,29 @@ export type ObjectiveInfo = {
4559
5391
  target_base_name?: string;
4560
5392
  type: string;
4561
5393
  };
5394
+ export type ObjectiveProgressInfo = {
5395
+ completed: boolean;
5396
+ current: number;
5397
+ description: string;
5398
+ /**
5399
+ * player_threshold objectives only
5400
+ */
5401
+ eligible_players?: Array<string>;
5402
+ in_cargo?: number;
5403
+ in_storage?: number;
5404
+ item_id?: string;
5405
+ item_name?: string;
5406
+ /**
5407
+ * player_threshold objectives only
5408
+ */
5409
+ participants?: Array<string>;
5410
+ required: number;
5411
+ system_id?: string;
5412
+ system_name?: string;
5413
+ target_base?: string;
5414
+ target_base_name?: string;
5415
+ type: string;
5416
+ };
4562
5417
  export type OpenOrderSummary = {
4563
5418
  item_id: string;
4564
5419
  item_name: string;
@@ -4580,11 +5435,18 @@ export type OwnedFacilityEntry = {
4580
5435
  base_name: string;
4581
5436
  custom_name?: string;
4582
5437
  damaged?: boolean;
5438
+ /**
5439
+ * True while dismantling is in progress; omitted means false. No rent is billed while dismantling and the facility is removed when dismantling completes.
5440
+ */
5441
+ dismantling?: boolean;
4583
5442
  facility_id: string;
4584
5443
  labor_per_run?: number;
4585
5444
  missed_rent_cycles?: number;
4586
5445
  name: string;
4587
5446
  power_throttled?: boolean;
5447
+ /**
5448
+ * 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.
5449
+ */
4588
5450
  rent_per_cycle: number;
4589
5451
  rental_fee_per_run?: number;
4590
5452
  repair_complete_tick?: number;
@@ -4605,6 +5467,7 @@ export type OwnedShipInfo = {
4605
5467
  listing_price?: number;
4606
5468
  location?: string;
4607
5469
  location_base_id?: string;
5470
+ module_type_ids?: Array<string>;
4608
5471
  modules?: number;
4609
5472
  ship_id: string;
4610
5473
  };
@@ -4713,6 +5576,14 @@ export type ParticipantSnapshot = {
4713
5576
  flee_counter: number;
4714
5577
  fuel: number;
4715
5578
  hull: number;
5579
+ /**
5580
+ * True for a named pirate boss. False explicitly means not a boss. Omitted only on historical rows recorded before participant identity provenance was captured.
5581
+ */
5582
+ is_boss?: boolean;
5583
+ /**
5584
+ * True for an automated combatant. False explicitly means player-controlled. Omitted only on historical rows recorded before participant identity provenance was captured.
5585
+ */
5586
+ is_npc?: boolean;
4716
5587
  kill_count: number;
4717
5588
  kind?: string;
4718
5589
  max_fuel: number;
@@ -4735,6 +5606,7 @@ export type ParticipantSummary = {
4735
5606
  damage_dealt: number;
4736
5607
  damage_taken: number;
4737
5608
  is_boss?: boolean;
5609
+ is_npc?: boolean;
4738
5610
  kill_count: number;
4739
5611
  kind?: string;
4740
5612
  player_id: string;
@@ -4773,6 +5645,25 @@ export type PathfinderJumpResponse = {
4773
5645
  origin_x?: number;
4774
5646
  origin_y?: number;
4775
5647
  };
5648
+ export type PayBountyOutstandingRow = {
5649
+ /**
5650
+ * Credits still owed to this empire
5651
+ */
5652
+ bounty: number;
5653
+ empire: string;
5654
+ };
5655
+ export type PayBountyResponse = {
5656
+ action: string;
5657
+ amount_paid: number;
5658
+ credits: number;
5659
+ empire: string;
5660
+ faction_credits?: number;
5661
+ message: string;
5662
+ outstanding_bounties: Array<PayBountyOutstandingRow>;
5663
+ paid_from: string;
5664
+ released_from_detention: boolean;
5665
+ reputation_after: number;
5666
+ };
4776
5667
  export type PendingActionResponse = {
4777
5668
  auto_docked?: boolean;
4778
5669
  auto_undocked?: boolean;
@@ -4785,12 +5676,36 @@ export type PendingTradeItemView = {
4785
5676
  name?: string;
4786
5677
  quantity: number;
4787
5678
  };
5679
+ export type PersonnelCasualtyLogEntry = {
5680
+ casualties_occurred: boolean;
5681
+ incapacitated: boolean;
5682
+ target_id: string;
5683
+ triage_applied?: boolean;
5684
+ triage_converted?: boolean;
5685
+ triage_provider_id?: string;
5686
+ triage_provider_ship_id?: string;
5687
+ };
5688
+ export type PersonnelState = {
5689
+ fit_crew: number;
5690
+ fit_marines: number;
5691
+ injured_crew: number;
5692
+ injured_marines: number;
5693
+ version: number;
5694
+ };
4788
5695
  export type PetitionResponse = {
4789
5696
  empire_id: string;
4790
5697
  empire_name: string;
4791
5698
  message: string;
4792
5699
  };
4793
5700
  export type PirateInfo = {
5701
+ /**
5702
+ * 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.
5703
+ */
5704
+ faction?: string;
5705
+ /**
5706
+ * Human-readable name of the stronghold crew, e.g. Admiral Kael.
5707
+ */
5708
+ faction_name?: string;
4794
5709
  hull?: number;
4795
5710
  is_boss: boolean;
4796
5711
  max_hull?: number;
@@ -4934,9 +5849,26 @@ export type Player = {
4934
5849
  * Lifetime player statistics.
4935
5850
  */
4936
5851
  export type PlayerStats = {
5852
+ /**
5853
+ * Injured personnel treated aboard another player's ship
5854
+ */
5855
+ allied_personnel_treated?: number;
4937
5856
  bases_destroyed?: number;
4938
5857
  battles_fled?: number;
4939
5858
  battles_started?: number;
5859
+ /**
5860
+ * Boarding latch rolls attempted
5861
+ */
5862
+ boarding_attempts?: number;
5863
+ boarding_marine_deaths?: number;
5864
+ boarding_marine_injuries?: number;
5865
+ boarding_marines_deployed?: number;
5866
+ /**
5867
+ * Boarding combats successfully initiated
5868
+ */
5869
+ boarding_operations_started?: number;
5870
+ boarding_victories?: number;
5871
+ boarding_withdrawals?: number;
4940
5872
  captains_log_entries?: number;
4941
5873
  chat_messages_sent?: number;
4942
5874
  cloak_activations?: number;
@@ -4965,6 +5897,11 @@ export type PlayerStats = {
4965
5897
  credits_earned_taxable_snapshot?: number;
4966
5898
  credits_gifted?: number;
4967
5899
  credits_spent?: number;
5900
+ crew_deaths?: number;
5901
+ crew_hired?: number;
5902
+ crew_injuries?: number;
5903
+ crew_injuries_healed?: number;
5904
+ crew_transferred?: number;
4968
5905
  customs_evaded?: number;
4969
5906
  damage_dealt?: number;
4970
5907
  damage_taken?: number;
@@ -4999,6 +5936,11 @@ export type PlayerStats = {
4999
5936
  * Unix timestamp of the most recent property-tax assessment
5000
5937
  */
5001
5938
  last_property_tax_assessed_at?: number;
5939
+ marine_deaths?: number;
5940
+ marine_injuries?: number;
5941
+ marine_injuries_healed?: number;
5942
+ marines_hired?: number;
5943
+ marines_transferred?: number;
5002
5944
  /**
5003
5945
  * Lifetime credits spent acquiring resaleable goods on the market, deducted from market sale income so trading is taxed on margin
5004
5946
  */
@@ -5017,18 +5959,34 @@ export type PlayerStats = {
5017
5959
  modules_installed?: number;
5018
5960
  npcs_destroyed?: number;
5019
5961
  ore_mined?: number;
5962
+ pirate_boss_prizes_delivered?: number;
5963
+ pirate_prizes_delivered?: number;
5020
5964
  pirates_destroyed?: number;
5021
5965
  /**
5022
5966
  * Cumulative distance flown in a Prayer-class hull
5023
5967
  */
5024
5968
  prayer_distance_traveled?: number;
5969
+ /**
5970
+ * Base value of delivered prize hulls, installed modules, and cargo
5971
+ */
5972
+ prize_value_recovered?: number;
5973
+ prizes_claimed?: number;
5974
+ prizes_delivered?: number;
5025
5975
  refuels_given?: number;
5026
5976
  repairs_given?: number;
5027
5977
  scans_performed?: number;
5028
5978
  self_destructs?: number;
5979
+ /**
5980
+ * Intact ships captured through boarding; does not count as destruction
5981
+ */
5982
+ ships_captured?: number;
5029
5983
  ships_commissioned?: number;
5030
5984
  ships_destroyed?: number;
5031
5985
  ships_lost?: number;
5986
+ /**
5987
+ * Owned ships lost intact through boarding; does not count as a death or destruction loss
5988
+ */
5989
+ ships_lost_to_capture?: number;
5032
5990
  ships_purchased?: number;
5033
5991
  systems_explored?: number;
5034
5992
  /**
@@ -5041,6 +5999,10 @@ export type PlayerStats = {
5041
5999
  time_played?: number;
5042
6000
  times_docked?: number;
5043
6001
  trades_completed?: number;
6002
+ /**
6003
+ * Fatal casualties prevented by fleet medical capability
6004
+ */
6005
+ triage_lives_saved?: number;
5044
6006
  /**
5045
6007
  * Times a Pathfinder course was plotted into open space
5046
6008
  */
@@ -5061,6 +6023,87 @@ export type PrepayTaxResponse = {
5061
6023
  message: string;
5062
6024
  tax_prepaid_balance: number;
5063
6025
  };
6026
+ export type PrizeInfo = {
6027
+ actor_id: string;
6028
+ hull: number;
6029
+ in_combat: boolean;
6030
+ max_hull: number;
6031
+ max_shield: number;
6032
+ prize_id: string;
6033
+ shield: number;
6034
+ ship_class: string;
6035
+ ship_id: string;
6036
+ ship_name?: string;
6037
+ /**
6038
+ * Recovery state of the prize. delivered / destroyed / expired / recaptured are terminal.
6039
+ */
6040
+ status: 'available' | 'claimed' | 'in_transit' | 'delivered' | 'destroyed' | 'expired' | 'recaptured';
6041
+ /**
6042
+ * Why an in_transit prize is stalled. Omitted while the prize is moving.
6043
+ */
6044
+ wait_reason?: 'no_route' | 'no_fuel' | 'destination_missing' | 'incapacitated' | 'manual_stop';
6045
+ };
6046
+ export type PrizeRecoveryInfo = {
6047
+ actor_id: string;
6048
+ /**
6049
+ * Where the prize crew came from and returns to.
6050
+ */
6051
+ crew_disposition: 'aboard' | 'faction_reserve';
6052
+ destination_base_id: string;
6053
+ fuel: number;
6054
+ hull: number;
6055
+ max_fuel: number;
6056
+ max_hull: number;
6057
+ poi_id?: string;
6058
+ prize_crew_fit: number;
6059
+ prize_id: string;
6060
+ return_crew_faction_id?: string;
6061
+ ship_class: string;
6062
+ ship_id: string;
6063
+ ship_name?: string;
6064
+ /**
6065
+ * Recovery state of the prize. delivered / destroyed / expired / recaptured are terminal.
6066
+ */
6067
+ status: 'available' | 'claimed' | 'in_transit' | 'delivered' | 'destroyed' | 'expired' | 'recaptured';
6068
+ system_id?: string;
6069
+ transit_arrival_tick?: number;
6070
+ transit_from_poi_id?: string;
6071
+ transit_from_system_id?: string;
6072
+ /**
6073
+ * Which leg the prize is flying. jump crosses systems. travel crosses POIs inside one system.
6074
+ */
6075
+ transit_kind?: 'jump' | 'travel';
6076
+ transit_to_poi_id?: string;
6077
+ transit_to_system_id?: string;
6078
+ /**
6079
+ * Why an in_transit prize is stalled. Omitted while the prize is moving.
6080
+ */
6081
+ wait_reason?: 'no_route' | 'no_fuel' | 'destination_missing' | 'incapacitated' | 'manual_stop';
6082
+ };
6083
+ export type PrizeServiceResponse = {
6084
+ /**
6085
+ * The service_action the request asked for. It is echoed back unchanged.
6086
+ */
6087
+ action: 'stop' | 'resume' | 'redirect' | 'refuel' | 'repair';
6088
+ /**
6089
+ * Where the prize crew came from and returns to.
6090
+ */
6091
+ crew_disposition?: 'aboard' | 'faction_reserve';
6092
+ destination_base_id?: string;
6093
+ fuel_transferred?: number;
6094
+ hull_repaired?: number;
6095
+ prize_id: string;
6096
+ repair_kits_used?: number;
6097
+ ship_id: string;
6098
+ /**
6099
+ * Recovery state of the prize. delivered / destroyed / expired / recaptured are terminal.
6100
+ */
6101
+ status: 'available' | 'claimed' | 'in_transit' | 'delivered' | 'destroyed' | 'expired' | 'recaptured';
6102
+ /**
6103
+ * Why an in_transit prize is stalled. Omitted while the prize is moving.
6104
+ */
6105
+ wait_reason?: 'no_route' | 'no_fuel' | 'destination_missing' | 'incapacitated' | 'manual_stop';
6106
+ };
5064
6107
  export type RanchFeedInfo = {
5065
6108
  cycles_left: number;
5066
6109
  per_cycle: number;
@@ -5152,6 +6195,29 @@ export type RecipeOutput = {
5152
6195
  item_id: string;
5153
6196
  quantity: number;
5154
6197
  };
6198
+ export type RecoveredBattleSummary = {
6199
+ captures?: Array<CaptureLogEntry>;
6200
+ category: string;
6201
+ duration: number;
6202
+ participant_names?: Array<string>;
6203
+ participants: Array<ParticipantSummary>;
6204
+ ships_captured?: number;
6205
+ ships_destroyed: number;
6206
+ side_factions?: {
6207
+ [key: string]: never;
6208
+ };
6209
+ start_tick: number;
6210
+ total_damage: number;
6211
+ };
6212
+ export type RecruitPersonnelResponse = {
6213
+ auto_docked?: boolean;
6214
+ auto_undocked?: boolean;
6215
+ cost: number;
6216
+ crew_pool_remaining?: number;
6217
+ crew_recruited: number;
6218
+ marine_pool_remaining?: number;
6219
+ marines_recruited: number;
6220
+ };
5155
6221
  export type RecycleJobResponse = ({
5156
6222
  kind: 'job';
5157
6223
  } & CraftJobResponse) | ({
@@ -5162,7 +6228,9 @@ export type RecycleJobResponse = ({
5162
6228
  kind: 'cancel';
5163
6229
  } & JobCancelResponse) | ({
5164
6230
  kind: 'bulk_cancel';
5165
- } & BulkJobCancelResponse);
6231
+ } & BulkJobCancelResponse) | ({
6232
+ kind: 'retarget';
6233
+ } & JobRetargetResponse);
5166
6234
  export type RefitShipResponse = {
5167
6235
  auto_docked?: boolean;
5168
6236
  auto_undocked?: boolean;
@@ -5204,6 +6272,7 @@ export type RegenLogEntry = {
5204
6272
  armor_repair: number;
5205
6273
  hull_after: number;
5206
6274
  hull_before: number;
6275
+ passive_repair?: number;
5207
6276
  player_id: string;
5208
6277
  remote_repair?: number;
5209
6278
  shield_after: number;
@@ -5247,19 +6316,6 @@ export type ReloadResponse = {
5247
6316
  weapon_id: string;
5248
6317
  weapon_name: string;
5249
6318
  };
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
6319
  export type RepairResponse = {
5264
6320
  action: string;
5265
6321
  cost?: number;
@@ -5331,6 +6387,7 @@ export type ScanResponse = {
5331
6387
  cargo_types?: Array<string>;
5332
6388
  cloaked?: boolean;
5333
6389
  contacts?: Array<ScanContact>;
6390
+ description?: string;
5334
6391
  faction_id?: string;
5335
6392
  hull?: number;
5336
6393
  message?: string;
@@ -5419,18 +6476,51 @@ export type SellWreckResponse = {
5419
6476
  wreck_id: string;
5420
6477
  };
5421
6478
  export type SendGiftResponse = {
5422
- action: 'send_gift';
6479
+ /**
6480
+ * Completed gift operation including station material donations.
6481
+ */
6482
+ action: 'send_gift';
5423
6483
  auto_docked?: boolean;
5424
6484
  auto_undocked?: boolean;
6485
+ /**
6486
+ * Canonical Base ID where gifted items were deposited. A station gift always names the station at which the donor is docked.
6487
+ */
5425
6488
  base_id: string;
6489
+ /**
6490
+ * Units of this item remaining in sender cargo after a cargo gift. Zero is omitted; not applicable to storage-source gifts.
6491
+ */
5426
6492
  cargo_remaining?: number;
6493
+ /**
6494
+ * Credits gifted to a player; omitted when none. Station material gifts never transfer credits.
6495
+ */
5427
6496
  credits_sent?: number;
6497
+ /**
6498
+ * Gifted item ID; omitted for credit-only player gifts. Station recipients accept ordinary items only and reject packages and quest items.
6499
+ */
5428
6500
  item_id?: string;
6501
+ /**
6502
+ * Gift note or confirmation; omitted when empty.
6503
+ */
5429
6504
  message?: string;
6505
+ /**
6506
+ * Number of item units donated without payment; omitted when no items were sent.
6507
+ */
5430
6508
  quantity?: number;
6509
+ /**
6510
+ * 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.
6511
+ */
5431
6512
  recipient: string;
6513
+ /**
6514
+ * Item source: cargo or personal storage. Omitted means cargo. Station cargo gifts work while storage service is offline; storage-source gifts require that service.
6515
+ */
5432
6516
  source?: string;
6517
+ /**
6518
+ * Units of this item remaining in sender personal storage after a storage-source gift. Zero is omitted; not applicable to cargo gifts.
6519
+ */
5433
6520
  storage_remaining?: number;
6521
+ /**
6522
+ * Sender wallet after a credit gift; omitted when not applicable or zero.
6523
+ */
5434
6524
  wallet_remaining?: number;
5435
6525
  };
5436
6526
  export type SetAccessResponse = {
@@ -5491,6 +6581,14 @@ export type Ship = {
5491
6581
  * Ticks of armor melt remaining (from plasma/corrosive ammo)
5492
6582
  */
5493
6583
  armor_melt_ticks_remaining?: number;
6584
+ /**
6585
+ * Durable in-battle self-destruct countdown state
6586
+ */
6587
+ battle_self_destruct?: {
6588
+ battle_id?: string;
6589
+ detonate_tick?: number;
6590
+ started_tick?: number;
6591
+ };
5494
6592
  /**
5495
6593
  * Hull damage applied each battle tick while burning
5496
6594
  */
@@ -5510,6 +6608,10 @@ export type Ship = {
5510
6608
  cpu_capacity?: number;
5511
6609
  cpu_used?: number;
5512
6610
  created_at?: string;
6611
+ /**
6612
+ * Effective crew capacity after fitted-module effects
6613
+ */
6614
+ crew_capacity?: number;
5513
6615
  /**
5514
6616
  * Player-assigned custom ship name (globally unique)
5515
6617
  */
@@ -5545,6 +6647,10 @@ export type Ship = {
5545
6647
  * 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
6648
  */
5547
6649
  loadout_version?: number;
6650
+ /**
6651
+ * Effective marine capacity after fitted-module effects
6652
+ */
6653
+ marine_capacity?: number;
5548
6654
  max_fuel: number;
5549
6655
  max_hull: number;
5550
6656
  max_shield?: number;
@@ -5554,26 +6660,64 @@ export type Ship = {
5554
6660
  modules?: Array<string>;
5555
6661
  name: string;
5556
6662
  /**
5557
- * % of normal cargo space for ores/crystals (0=normal, 50=half)
6663
+ * % of normal cargo space for mined ores and minerals (0=normal, 50=half)
5558
6664
  */
5559
6665
  ore_cargo_efficiency?: number;
5560
6666
  owner_id?: string;
6667
+ /**
6668
+ * Current crew and marine complement; version is a persistence migration sentinel
6669
+ */
6670
+ personnel?: {
6671
+ fit_crew?: number;
6672
+ fit_marines?: number;
6673
+ injured_crew?: number;
6674
+ injured_marines?: number;
6675
+ version?: number;
6676
+ };
6677
+ /**
6678
+ * Absolute game tick when an incapacitated ship's protected injured survivor can return to fit duty; zero when no recovery is scheduled
6679
+ */
6680
+ personnel_recovery_tick?: number;
5561
6681
  power_capacity?: number;
5562
6682
  power_used?: number;
5563
6683
  shield?: number;
5564
6684
  shield_recharge?: number;
6685
+ /**
6686
+ * Unique named-hull instance identity; absent for ordinary ships and preserved through custody changes
6687
+ */
6688
+ singleton_instance_key?: string;
5565
6689
  /**
5566
6690
  * AU per tick
5567
6691
  */
5568
6692
  speed?: number;
5569
6693
  speed_penalty?: number;
6694
+ /**
6695
+ * POI containing this unpiloted ship after it was unloaded in space; paired with stranded_system_id
6696
+ */
6697
+ stranded_poi_id?: string;
6698
+ /**
6699
+ * System containing this unpiloted ship after it was unloaded in space; paired with stranded_poi_id
6700
+ */
6701
+ stranded_system_id?: string;
5570
6702
  utility_slots?: number;
5571
6703
  weapon_slots?: number;
5572
6704
  };
5573
6705
  export type ShipActiveBuff = {
6706
+ /**
6707
+ * Bonus amount (percentage for most stats, absolute for hull_regen)
6708
+ */
5574
6709
  amount: number;
6710
+ /**
6711
+ * Engine tick when the buff expires
6712
+ */
5575
6713
  expires_at: number;
6714
+ /**
6715
+ * Item that created this buff
6716
+ */
5576
6717
  item_id: string;
6718
+ /**
6719
+ * Effect stat name, e.g. weapon_damage
6720
+ */
5577
6721
  stat: string;
5578
6722
  };
5579
6723
  export type ShipBuyOrderInfo = {
@@ -5608,6 +6752,10 @@ export type ShipClass = {
5608
6752
  * Source empire ship class ID this pirate design is converted from
5609
6753
  */
5610
6754
  based_on?: string;
6755
+ /**
6756
+ * Built-in percentage multiplier to defending crew and marine strength
6757
+ */
6758
+ boarding_defense_bonus_pct?: number;
5611
6759
  /**
5612
6760
  * Materials required to build
5613
6761
  */
@@ -5619,6 +6767,14 @@ export type ShipClass = {
5619
6767
  * Ticks required to build this ship
5620
6768
  */
5621
6769
  build_time?: number;
6770
+ /**
6771
+ * Capture disposition; omission means standard, while starter hulls resolve to reclaim_only
6772
+ */
6773
+ capture_policy?: 'standard' | 'immune' | 'reclaim_only';
6774
+ /**
6775
+ * Required explanation for explicitly capture-immune hulls
6776
+ */
6777
+ capture_policy_reason?: string;
5622
6778
  cargo_capacity?: number;
5623
6779
  /**
5624
6780
  * Ship role category: Combat, Industrial, Exploration, etc.
@@ -5629,6 +6785,10 @@ export type ShipClass = {
5629
6785
  */
5630
6786
  class: string;
5631
6787
  cpu_capacity?: number;
6788
+ /**
6789
+ * Base crew capacity before fitted-module effects
6790
+ */
6791
+ crew_capacity?: number;
5632
6792
  /**
5633
6793
  * Bumped whenever the canonical default loadout changes; existing ships below this version are offered refit_ship
5634
6794
  */
@@ -5658,7 +6818,7 @@ export type ShipClass = {
5658
6818
  */
5659
6819
  flag?: string;
5660
6820
  /**
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
6821
+ * 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
6822
  */
5663
6823
  type?: string;
5664
6824
  /**
@@ -5666,6 +6826,10 @@ export type ShipClass = {
5666
6826
  */
5667
6827
  value?: number;
5668
6828
  }>;
6829
+ /**
6830
+ * Built-in reduction to hostile boarding latch progress per round
6831
+ */
6832
+ latch_resistance?: number;
5669
6833
  /**
5670
6834
  * Legacy ship class kept for existing players, hidden from catalog
5671
6835
  */
@@ -5674,6 +6838,14 @@ export type ShipClass = {
5674
6838
  * Flavor text and lore description
5675
6839
  */
5676
6840
  lore?: string;
6841
+ /**
6842
+ * Base marine capacity before fitted-module effects
6843
+ */
6844
+ marine_capacity?: number;
6845
+ /**
6846
+ * Fit crew required for full operational efficiency
6847
+ */
6848
+ minimum_crew?: number;
5677
6849
  name: string;
5678
6850
  /**
5679
6851
  * Recipe IDs automatically processed from cargo
@@ -5795,6 +6967,7 @@ export type ShipmentContract = {
5795
6967
  posted_at: string;
5796
6968
  premium?: number;
5797
6969
  recipient: ShipmentActor;
6970
+ recovery_deadline_tick?: number;
5798
6971
  reputation_eligible?: boolean;
5799
6972
  reserved_exposure: number;
5800
6973
  reward_escrow: number;
@@ -5827,6 +7000,30 @@ export type ShipmentTrackingEvent = {
5827
7000
  shipment_id: string;
5828
7001
  system_id?: string;
5829
7002
  };
7003
+ export type ShippingActiveContract = {
7004
+ contract: ShipmentContract;
7005
+ destination_name?: string;
7006
+ destination_system?: string;
7007
+ failure_debt: number;
7008
+ last_known_location?: string;
7009
+ late: boolean;
7010
+ late_fee_if_delivered_now?: number;
7011
+ next_step: string;
7012
+ origin_name?: string;
7013
+ origin_system?: string;
7014
+ package_in_your_cargo: boolean;
7015
+ payout_if_delivered_now: number;
7016
+ role: 'carrier' | 'shipper' | 'recipient' | 'invited_carrier';
7017
+ ticks_to_deadline: number;
7018
+ ticks_to_recovery_deadline: number;
7019
+ ticks_to_target: number;
7020
+ };
7021
+ export type ShippingActiveResponse = {
7022
+ action: 'active';
7023
+ message?: string;
7024
+ shipments: Array<ShippingActiveContract>;
7025
+ tick: number;
7026
+ };
5830
7027
  export type ShippingContractResponse = {
5831
7028
  action: 'post' | 'get' | 'accept';
5832
7029
  contract: ShipmentContract;
@@ -5853,8 +7050,11 @@ export type ShippingListResponse = {
5853
7050
  };
5854
7051
  export type ShippingListing = {
5855
7052
  contract: ShipmentContract;
7053
+ deadline_ticks: number;
5856
7054
  eligible: boolean;
5857
7055
  reason?: string;
7056
+ recovery_ticks: number;
7057
+ target_ticks: number;
5858
7058
  };
5859
7059
  export type ShippingProfileResponse = {
5860
7060
  action: 'profile';
@@ -5884,6 +7084,7 @@ export type ShippingQuote = {
5884
7084
  package_id: string;
5885
7085
  premium: number;
5886
7086
  recipient: ShipmentActor;
7087
+ recovery_ticks: number;
5887
7088
  required_carrier_tier: 'probationary' | 'licensed' | 'trusted' | 'prime';
5888
7089
  reserved_exposure: number;
5889
7090
  risk_band: 'probationary' | 'licensed' | 'trusted' | 'prime' | 'unpriced';
@@ -5907,6 +7108,8 @@ export type ShippingResponse = ({
5907
7108
  } & ShippingContractResponse) | ({
5908
7109
  action: 'list';
5909
7110
  } & ShippingListResponse) | ({
7111
+ action: 'active';
7112
+ } & ShippingActiveResponse) | ({
5910
7113
  action: 'track';
5911
7114
  } & ShippingTrackResponse) | ({
5912
7115
  action: 'profile';
@@ -5921,6 +7124,7 @@ export type ShippingSettlementResponse = {
5921
7124
  claim_paid?: number;
5922
7125
  contract: ShipmentContract;
5923
7126
  debt_created?: number;
7127
+ late?: boolean;
5924
7128
  shipper_refund?: number;
5925
7129
  };
5926
7130
  export type ShippingTrackResponse = {
@@ -5954,13 +7158,29 @@ export type SkillDefinition = {
5954
7158
  training_source?: string;
5955
7159
  xp_per_level: Array<number>;
5956
7160
  };
7161
+ export type SkillProgress = {
7162
+ /**
7163
+ * Skill category
7164
+ */
7165
+ category: string;
7166
+ level: number;
7167
+ /**
7168
+ * Maximum attainable level for this skill
7169
+ */
7170
+ max_level: number;
7171
+ /**
7172
+ * Display name of the skill
7173
+ */
7174
+ name: string;
7175
+ next_level_xp: number;
7176
+ xp: number;
7177
+ };
5957
7178
  export type SkippedModule = {
5958
7179
  id: string;
5959
7180
  name: string;
5960
7181
  reason: string;
5961
7182
  type: string;
5962
7183
  type_id: string;
5963
- wear: number;
5964
7184
  };
5965
7185
  export type SoldCargoItem = {
5966
7186
  item_id: string;
@@ -6073,6 +7293,48 @@ export type StationPowerStatus = {
6073
7293
  remediation?: string;
6074
7294
  supply: number;
6075
7295
  };
7296
+ export type StationRepairEntry = {
7297
+ category: string;
7298
+ definition_id: string;
7299
+ instance_id: string;
7300
+ materials?: Array<StationRepairMaterial>;
7301
+ name: string;
7302
+ status: string;
7303
+ ticks_until_complete?: number;
7304
+ };
7305
+ export type StationRepairMaterial = {
7306
+ item_id: string;
7307
+ name?: string;
7308
+ quantity_in_storage: number;
7309
+ quantity_missing?: number;
7310
+ quantity_required: number;
7311
+ };
7312
+ export type StationRepairResponse = {
7313
+ damaged_count: number;
7314
+ facilities?: Array<StationRepairEntry>;
7315
+ hull_current?: number;
7316
+ hull_missing?: number;
7317
+ hull_required?: number;
7318
+ materials?: Array<StationRepairMaterial>;
7319
+ next_blocked?: StationRepairEntry;
7320
+ remediation?: string;
7321
+ repairing_count: number;
7322
+ supply_method: string;
7323
+ waiting_count: number;
7324
+ wrecked: boolean;
7325
+ };
7326
+ export type StationServicePoolStatus = {
7327
+ capacity: number;
7328
+ next_cycle_supply_required?: number;
7329
+ refill_per_cycle: number;
7330
+ remaining: number;
7331
+ supply_item?: string;
7332
+ };
7333
+ export type StationServicePools = {
7334
+ marine_training?: StationServicePoolStatus;
7335
+ medical?: StationServicePoolStatus;
7336
+ personnel?: StationServicePoolStatus;
7337
+ };
6076
7338
  export type StorageGift = {
6077
7339
  credits?: number;
6078
7340
  items?: Array<StorageGiftItem>;
@@ -6093,6 +7355,14 @@ export type StorageGiftShip = {
6093
7355
  custom_name?: string;
6094
7356
  ship_id: string;
6095
7357
  };
7358
+ export type StorageLocation = {
7359
+ base_id: string;
7360
+ base_name: string;
7361
+ item_count: number;
7362
+ ship_count: number;
7363
+ system: string;
7364
+ system_name: string;
7365
+ };
6096
7366
  export type StorageMessage = {
6097
7367
  body: string;
6098
7368
  from: string;
@@ -6123,9 +7393,13 @@ export type SubscribeObservationResponse = {
6123
7393
  action: string;
6124
7394
  active_scan: boolean;
6125
7395
  cloaked_contacts?: Array<ScanContact>;
7396
+ creatures?: Array<CreatureInfo>;
7397
+ empire_npcs?: Array<EmpireNpcInfo>;
6126
7398
  message?: string;
6127
7399
  nearby: Array<NearbyPlayer>;
7400
+ pirates?: Array<PirateInfo>;
6128
7401
  poi_id: string;
7402
+ prizes?: Array<PrizeInfo>;
6129
7403
  system_agents: Array<NearbyPlayer>;
6130
7404
  system_id: string;
6131
7405
  unknown_signature: boolean;
@@ -6414,6 +7688,15 @@ export type TransferPassengersResponse = {
6414
7688
  target_ship_name: string;
6415
7689
  transferred: Array<PassengerView>;
6416
7690
  };
7691
+ export type TransferPersonnelResponse = {
7692
+ fit_crew_transferred: number;
7693
+ fit_marines_transferred: number;
7694
+ injured_crew_swapped: number;
7695
+ injured_crew_transferred: number;
7696
+ injured_marines_swapped: number;
7697
+ injured_marines_transferred: number;
7698
+ target: string;
7699
+ };
6417
7700
  export type TransitLoungeView = {
6418
7701
  capacity: number;
6419
7702
  lounge: string;
@@ -6443,6 +7726,18 @@ export type TravelResponse = {
6443
7726
  [key: string]: number;
6444
7727
  };
6445
7728
  };
7729
+ export type TreatPersonnelResponse = {
7730
+ cost?: number;
7731
+ crew_treated: number;
7732
+ marines_treated: number;
7733
+ medical_pool_remaining?: number;
7734
+ /**
7735
+ * Which medical supply paid for the treatment. station is the base infirmary. faction is your faction reserve. field is shipboard medical supplies.
7736
+ */
7737
+ source: 'station' | 'faction' | 'field';
7738
+ supplies_used?: number;
7739
+ target: string;
7740
+ };
6446
7741
  export type TrimmedBase = {
6447
7742
  allow_outsider_facilities?: boolean;
6448
7743
  armor: number;
@@ -6480,14 +7775,9 @@ export type UninstallModResponse = {
6480
7775
  auto_docked?: boolean;
6481
7776
  auto_undocked?: boolean;
6482
7777
  cpu_used: number;
6483
- damaged: boolean;
6484
- destroyed?: boolean;
6485
7778
  message: string;
6486
7779
  module_id: string;
6487
7780
  power_used: number;
6488
- uninstall_count?: number;
6489
- wear?: number;
6490
- wear_status?: string;
6491
7781
  };
6492
7782
  export type UnloadAllPassengersResponse = {
6493
7783
  auto_docked?: boolean;
@@ -6573,6 +7863,27 @@ export type UseItemResponse = {
6573
7863
  shield?: number;
6574
7864
  shield_restored?: number;
6575
7865
  stat?: string;
7866
+ weapons_reset?: number;
7867
+ };
7868
+ export type V2CargoItem = {
7869
+ item_id: string;
7870
+ /**
7871
+ * Resolved display name of the item
7872
+ */
7873
+ item_name: string;
7874
+ quantity: number;
7875
+ /**
7876
+ * Cargo space one unit occupies
7877
+ */
7878
+ size: number;
7879
+ };
7880
+ export type V2CarriedShip = {
7881
+ class_id: string;
7882
+ class_name: string;
7883
+ name: string;
7884
+ scale: number;
7885
+ ship_id: string;
7886
+ slots_used: number;
6576
7887
  };
6577
7888
  export type V2CommandActionEntry = {
6578
7889
  action: string;
@@ -6595,29 +7906,11 @@ export type V2GameState = {
6595
7906
  /**
6596
7907
  * 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
7908
  */
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
- }>;
7909
+ cargo?: Array<V2CargoItem>;
6610
7910
  /**
6611
7911
  * Ships loaded in the current ship's carrier bay (v2_get_cargo only; present only on carrier ships)
6612
7912
  */
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
- }>;
7913
+ carried_ships?: Array<V2CarriedShip>;
6621
7914
  /**
6622
7915
  * Current credit balance, surfaced by lean query endpoints (get_ship, get_cargo, get_location) that omit the full player blob
6623
7916
  */
@@ -6628,569 +7921,327 @@ export type V2GameState = {
6628
7921
  details?: {
6629
7922
  [key: string]: unknown;
6630
7923
  };
7924
+ /**
7925
+ * Drone bay counters and in-bay drones (v2_get_ship only; omitted when the player has no bay and no drones)
7926
+ */
7927
+ drone_bay?: DroneBayView;
6631
7928
  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
- };
7929
+ location?: V2Location;
6776
7930
  message?: string;
6777
7931
  /**
6778
7932
  * Active missions and mission capacity
6779
7933
  */
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
- };
7934
+ missions?: V2Missions;
6865
7935
  /**
6866
7936
  * 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
7937
  */
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
- };
7938
+ modules?: Array<V2Module>;
7939
+ player?: V2Player;
7940
+ /**
7941
+ * Active intact-ship recovery operations assigned to this player. Includes in-transit and stalled prizes outside the current POI.
7942
+ */
7943
+ prize_recoveries?: Array<PrizeRecoveryInfo>;
6982
7944
  /**
6983
7945
  * Pending action queue status
6984
7946
  */
6985
- queue?: {
6986
- /**
6987
- * Whether a tick-deferred action is queued
6988
- */
6989
- has_pending?: boolean;
6990
- };
7947
+ queue?: V2Queue;
6991
7948
  /**
6992
7949
  * 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
7950
  */
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;
7951
+ riding?: V2Riding;
7952
+ ship?: V2Ship;
7953
+ /**
7954
+ * Player skill levels and XP, keyed by skill ID
7955
+ */
7956
+ skills?: {
7957
+ [key: string]: SkillProgress;
7003
7958
  };
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;
7959
+ /**
7960
+ * State format version
7961
+ */
7962
+ version?: string;
7963
+ };
7964
+ export type V2GetCommandsResponse = {
7965
+ actions: Array<V2CommandActionEntry>;
7966
+ };
7967
+ export type V2Location = {
7968
+ /**
7969
+ * System IDs adjacent to the current system
7970
+ */
7971
+ connections: Array<string>;
7972
+ /**
7973
+ * Base ID docked at; null when undocked
7974
+ */
7975
+ docked_at: string | null;
7976
+ empire: string;
7977
+ /**
7978
+ * True when actively jumping or traveling
7979
+ */
7980
+ in_transit?: boolean;
7981
+ /**
7982
+ * Count of nearby empire NPCs before the response cap is applied
7983
+ */
7984
+ nearby_empire_npc_count: number;
7985
+ /**
7986
+ * Empire NPCs at the current POI
7987
+ */
7988
+ nearby_empire_npcs: Array<V2NearbyEmpireNpc>;
7989
+ /**
7990
+ * Count of nearby pirates before the response cap is applied
7991
+ */
7992
+ nearby_pirate_count: number;
7993
+ /**
7994
+ * Pirate NPCs at the current POI
7995
+ */
7996
+ nearby_pirates: Array<V2NearbyPirate>;
7997
+ /**
7998
+ * Count of nearby players before the response cap is applied
7999
+ */
8000
+ nearby_player_count: number;
8001
+ /**
8002
+ * Other (non-cloaked) players at the current POI
8003
+ */
8004
+ nearby_players: Array<V2NearbyPlayer>;
8005
+ /**
8006
+ * Count of nearby intact prizes before the response cap is applied
8007
+ */
8008
+ nearby_prize_count: number;
8009
+ /**
8010
+ * Intact captured ships physically present at the current POI
8011
+ */
8012
+ nearby_prizes: Array<PrizeInfo>;
8013
+ /**
8014
+ * Number of offline nearby players collapsed into a count when the POI is crowded (omitted when zero)
8015
+ */
8016
+ offline_collapsed?: number;
8017
+ poi_id: string;
8018
+ poi_name: string;
8019
+ poi_type: string;
8020
+ /**
8021
+ * Mineable resources at the current POI
8022
+ */
8023
+ resources: Array<V2Resource>;
8024
+ security_status: string;
8025
+ system_id: string;
8026
+ system_name: string;
8027
+ /**
8028
+ * Engine tick when transit completes
8029
+ */
8030
+ transit_arrival_tick?: number;
8031
+ /**
8032
+ * Plotted compass bearing in degrees (pathfinder only)
8033
+ */
8034
+ transit_bearing?: number;
8035
+ /**
8036
+ * Destination POI ID (travel only)
8037
+ */
8038
+ transit_dest_poi_id?: string;
8039
+ /**
8040
+ * Destination POI name (travel only)
8041
+ */
8042
+ transit_dest_poi_name?: string;
8043
+ /**
8044
+ * Destination system ID (jump only)
8045
+ */
8046
+ transit_dest_system_id?: string;
8047
+ /**
8048
+ * Destination system name (jump only)
8049
+ */
8050
+ transit_dest_system_name?: string;
8051
+ /**
8052
+ * Ticks since the pathfinder drift began (pathfinder only)
8053
+ */
8054
+ transit_ticks_elapsed?: number;
8055
+ /**
8056
+ * "jump", "travel", or "pathfinder"
8057
+ */
8058
+ transit_type?: string;
8059
+ /**
8060
+ * Current galactic X coordinate (pathfinder only)
8061
+ */
8062
+ transit_x?: number;
8063
+ /**
8064
+ * Current galactic Y coordinate (pathfinder only)
8065
+ */
8066
+ transit_y?: number;
8067
+ /**
8068
+ * 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)
8069
+ */
8070
+ unknown_signature?: boolean;
8071
+ /**
8072
+ * Navigation flavour text; present only when drifting beyond the galaxy edge (pathfinder void transit only)
8073
+ */
8074
+ void_message?: string;
8075
+ };
8076
+ export type V2Missions = {
8077
+ /**
8078
+ * Currently active mission objects
8079
+ */
8080
+ active: Array<ActiveMissionInfo>;
8081
+ /**
8082
+ * Maximum simultaneous missions allowed
8083
+ */
8084
+ max_missions: number;
8085
+ };
8086
+ export type V2Module = {
8087
+ /**
8088
+ * Present only on weapons that consume ammo
8089
+ */
8090
+ ammo_type?: string;
8091
+ /**
8092
+ * After engineering efficiency bonus
8093
+ */
8094
+ cpu_usage: number;
8095
+ /**
8096
+ * Present only on weapons that consume ammo
8097
+ */
8098
+ current_ammo?: number;
8099
+ /**
8100
+ * Present only when ammo is loaded
8101
+ */
8102
+ loaded_ammo_id?: string;
8103
+ /**
8104
+ * Present only when ammo is loaded
8105
+ */
8106
+ loaded_ammo_name?: string;
8107
+ /**
8108
+ * Present only on weapons that consume ammo
8109
+ */
8110
+ magazine_size?: number;
8111
+ module_id: string;
8112
+ name: string;
8113
+ /**
8114
+ * After engineering efficiency bonus
8115
+ */
8116
+ power_usage: number;
8117
+ size: number;
8118
+ slot: string;
8119
+ /**
8120
+ * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
8121
+ */
8122
+ stats?: {
8123
+ [key: string]: unknown;
7164
8124
  };
7165
8125
  /**
7166
- * Player skill levels and XP, keyed by skill ID
8126
+ * weapon, defense, utility, or mining
8127
+ */
8128
+ type: string;
8129
+ type_id: string;
8130
+ };
8131
+ export type V2NearbyEmpireNpc = {
8132
+ empire: string;
8133
+ /**
8134
+ * Set for empire fleet member NPCs
8135
+ */
8136
+ fleet_name?: string;
8137
+ in_combat: boolean;
8138
+ name: string;
8139
+ npc_id: string;
8140
+ role: string;
8141
+ ship_class?: string;
8142
+ ship_name?: string;
8143
+ };
8144
+ export type V2NearbyPirate = {
8145
+ /**
8146
+ * 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.
8147
+ */
8148
+ faction?: string;
8149
+ /**
8150
+ * Human-readable name of the stronghold crew, e.g. Admiral Kael.
8151
+ */
8152
+ faction_name?: string;
8153
+ hull: number;
8154
+ is_boss: boolean;
8155
+ max_hull: number;
8156
+ max_shield: number;
8157
+ name: string;
8158
+ pirate_id: string;
8159
+ shield: number;
8160
+ status: string;
8161
+ tier: string;
8162
+ };
8163
+ export type V2NearbyPlayer = {
8164
+ clan_tag?: string;
8165
+ faction_tag?: string;
8166
+ in_combat: boolean;
8167
+ offline?: boolean;
8168
+ player_id: string;
8169
+ ship_class?: string;
8170
+ /**
8171
+ * Custom ship name
8172
+ */
8173
+ ship_name?: string;
8174
+ username?: string;
8175
+ };
8176
+ export type V2Personnel = {
8177
+ fit_crew: number;
8178
+ fit_marines: number;
8179
+ injured_crew: number;
8180
+ injured_marines: number;
8181
+ };
8182
+ export type V2Player = {
8183
+ /**
8184
+ * Empire IDs this player holds citizenship in (omitted when empty). Independent of the immutable origin empire.
7167
8185
  */
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
- };
8186
+ citizenships?: Array<string>;
8187
+ clan_tag: string;
8188
+ credits: number;
8189
+ empire: string;
8190
+ faction_id?: string;
8191
+ faction_rank?: string;
8192
+ home_base: string;
8193
+ /**
8194
+ * POI ID of the home base (omitted when no home base set)
8195
+ */
8196
+ home_poi?: string;
8197
+ /**
8198
+ * System ID of the home base (omitted when no home base set)
8199
+ */
8200
+ home_system?: string;
8201
+ id: string;
8202
+ is_cloaked: boolean;
8203
+ primary_color: string;
8204
+ secondary_color: string;
8205
+ /**
8206
+ * 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.
8207
+ */
8208
+ standings?: {
8209
+ [key: string]: EmpireStanding;
7186
8210
  };
7187
8211
  /**
7188
- * State format version
8212
+ * Lifetime player statistics (credits earned, ships destroyed, ore mined, etc.)
7189
8213
  */
7190
- version?: string;
8214
+ stats: unknown;
8215
+ status_message: string;
8216
+ /**
8217
+ * ID of this player's own ship currently under tow via a tow rig (omitted when not towing a ship)
8218
+ */
8219
+ towing_ship_id?: string;
8220
+ /**
8221
+ * ID of the wreck this player is currently towing (omitted when not towing)
8222
+ */
8223
+ towing_wreck_id?: string;
8224
+ /**
8225
+ * Trading, gifting, and exchange access restricted until this time (self-destruct penalty); omitted when no restriction is active
8226
+ */
8227
+ trading_restricted_until?: string;
8228
+ username: string;
7191
8229
  };
7192
- export type V2GetCommandsResponse = {
7193
- actions: Array<V2CommandActionEntry>;
8230
+ export type V2Queue = {
8231
+ /**
8232
+ * Whether a tick-deferred action is queued
8233
+ */
8234
+ has_pending: boolean;
8235
+ };
8236
+ export type V2Resource = {
8237
+ item_id: string;
8238
+ item_name: string;
8239
+ remaining: number;
8240
+ richness: number;
8241
+ /**
8242
+ * Beam power this deposit supports at full extraction rate (standard precision); omitted when depleted or unlimited
8243
+ */
8244
+ supported_power?: number;
7194
8245
  };
7195
8246
  /**
7196
8247
  * Standard v2 REST API response envelope.
@@ -7205,9 +8256,11 @@ export type V2Response = {
7205
8256
  */
7206
8257
  code?: string;
7207
8258
  /**
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.
8259
+ * 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
8260
  */
7210
- details?: unknown;
8261
+ details?: {
8262
+ [key: string]: unknown;
8263
+ };
7211
8264
  /**
7212
8265
  * Human-readable error message.
7213
8266
  */
@@ -7224,15 +8277,15 @@ export type V2Response = {
7224
8277
  /**
7225
8278
  * Notification payload. Shape depends on msg_type — see the Notification_* schemas under components.schemas.
7226
8279
  */
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;
8280
+ data?: NotificationAchievementUnlocked | NotificationActionError | NotificationActionResult | 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
8281
  id?: string;
7229
8282
  /**
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.
8283
+ * 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
8284
  */
7232
8285
  msg_type?: string;
7233
8286
  timestamp?: string;
7234
8287
  /**
7235
- * Notification category: system, combat, trade, chat, friend, tip
8288
+ * Notification category: chat, combat, trade, market, crafting, observation, system
7236
8289
  */
7237
8290
  type?: string;
7238
8291
  }>;
@@ -7256,6 +8309,160 @@ export type V2Response = {
7256
8309
  [key: string]: unknown;
7257
8310
  };
7258
8311
  };
8312
+ export type V2Riding = {
8313
+ /**
8314
+ * Username of the carrier piloting that ship
8315
+ */
8316
+ carrier?: string;
8317
+ /**
8318
+ * ID of the ship being ridden
8319
+ */
8320
+ ship_id: string;
8321
+ };
8322
+ export type V2Ship = {
8323
+ /**
8324
+ * Active consumable buffs (omitted when none active)
8325
+ */
8326
+ active_buffs?: Array<ShipActiveBuff>;
8327
+ armor: number;
8328
+ /**
8329
+ * Armor effectiveness reduction, 0.0-1.0 (omitted when not affected)
8330
+ */
8331
+ armor_melt_pct?: number;
8332
+ /**
8333
+ * Remaining ticks of plasma/corrosive armor melt (omitted when not affected)
8334
+ */
8335
+ armor_melt_ticks_remaining?: number;
8336
+ /**
8337
+ * Passenger accommodation by class (omitted when the ship has no berths)
8338
+ */
8339
+ berths?: BerthsView;
8340
+ /**
8341
+ * Damage dealt per tick while burning (omitted when not burning)
8342
+ */
8343
+ burn_damage_per_tick?: number;
8344
+ /**
8345
+ * Player ID of the most recent burn applier, credited on burn kills (omitted when not burning)
8346
+ */
8347
+ burn_source_id?: string;
8348
+ /**
8349
+ * Remaining ticks of incendiary/entropic burn damage-over-time (omitted when not burning)
8350
+ */
8351
+ burn_ticks_remaining?: number;
8352
+ cargo_capacity: number;
8353
+ cargo_used: number;
8354
+ class_id: string;
8355
+ class_name: string;
8356
+ /**
8357
+ * Total CPU available
8358
+ */
8359
+ cpu_capacity: number;
8360
+ /**
8361
+ * CPU consumed by fitted modules (after engineering efficiency bonus)
8362
+ */
8363
+ cpu_used: number;
8364
+ /**
8365
+ * Active-system output multiplier from fit crew relative to minimum crew; 0.0-1.0
8366
+ */
8367
+ crew_efficiency: number;
8368
+ /**
8369
+ * Player-assigned custom ship name (omitted when unset)
8370
+ */
8371
+ custom_name?: string;
8372
+ /**
8373
+ * Damage reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
8374
+ */
8375
+ damage_penalty?: number;
8376
+ /**
8377
+ * Number of defense module slots
8378
+ */
8379
+ defense_slots: number;
8380
+ /**
8381
+ * Remaining ticks of EM disruption (omitted when not disrupted)
8382
+ */
8383
+ disruption_ticks_remaining?: number;
8384
+ /**
8385
+ * Current crew capacity after hull and fitted-module effects
8386
+ */
8387
+ effective_crew_capacity: number;
8388
+ /**
8389
+ * Current marine capacity after hull and fitted-module effects
8390
+ */
8391
+ effective_marine_capacity: number;
8392
+ fuel: number;
8393
+ /**
8394
+ * Percent of normal cargo space gases occupy (omitted when 100)
8395
+ */
8396
+ gas_cargo_efficiency?: number;
8397
+ hull: number;
8398
+ /**
8399
+ * Percent of normal cargo space ices occupy (omitted when 100)
8400
+ */
8401
+ ice_cargo_efficiency?: number;
8402
+ id: string;
8403
+ /**
8404
+ * True when initialized personnel include no fit crew and active ship operations are unavailable
8405
+ */
8406
+ incapacitated: boolean;
8407
+ /**
8408
+ * Where this ship is (get_ship by ship_id only; omitted for the ship you are flying)
8409
+ */
8410
+ location?: string;
8411
+ max_fuel: number;
8412
+ max_hull: number;
8413
+ max_shield: number;
8414
+ /**
8415
+ * Fit crew required for full operational efficiency
8416
+ */
8417
+ minimum_crew: number;
8418
+ /**
8419
+ * Display name of the ship (custom name if set, otherwise the class name)
8420
+ */
8421
+ name: string;
8422
+ /**
8423
+ * Current base speed multiplied by crew efficiency; other temporary speed effects are reported separately
8424
+ */
8425
+ operational_speed: number;
8426
+ /**
8427
+ * Percent of normal cargo space mined ores and minerals occupy (50 = half; omitted when 100)
8428
+ */
8429
+ ore_cargo_efficiency?: number;
8430
+ /**
8431
+ * Current fit and injured crew and marine counts
8432
+ */
8433
+ personnel: V2Personnel;
8434
+ /**
8435
+ * Server tick when protected final-survivor recovery becomes available
8436
+ */
8437
+ personnel_recovery_tick?: number;
8438
+ /**
8439
+ * Ticks remaining until protected final-survivor recovery
8440
+ */
8441
+ personnel_recovery_ticks_remaining?: number;
8442
+ /**
8443
+ * Total power available
8444
+ */
8445
+ power_capacity: number;
8446
+ /**
8447
+ * Power consumed by fitted modules (after engineering efficiency bonus)
8448
+ */
8449
+ power_used: number;
8450
+ shield: number;
8451
+ shield_recharge: number;
8452
+ speed: number;
8453
+ /**
8454
+ * Speed reduction multiplier from EM disruption, 0.0-1.0 (omitted when not disrupted)
8455
+ */
8456
+ speed_penalty?: number;
8457
+ /**
8458
+ * Number of utility module slots
8459
+ */
8460
+ utility_slots: number;
8461
+ /**
8462
+ * Number of weapon module slots
8463
+ */
8464
+ weapon_slots: number;
8465
+ };
7259
8466
  export type ViewCompletedMissionResponse = {
7260
8467
  chain_next?: string;
7261
8468
  completion_time: string;
@@ -7320,6 +8527,7 @@ export type ViewStorageResponse = {
7320
8527
  gifts?: Array<StorageGift>;
7321
8528
  hint: string;
7322
8529
  items: Array<CargoItem>;
8530
+ locations: Array<StorageLocation>;
7323
8531
  messages?: Array<StorageMessage>;
7324
8532
  ships: Array<StoredShip>;
7325
8533
  };
@@ -7469,7 +8677,7 @@ export type GetNotificationsData = {
7469
8677
  */
7470
8678
  clear?: boolean;
7471
8679
  /**
7472
- * Filter by notification type (e.g. chat, combat, trade). Repeat parameter for multiple types.
8680
+ * Filter by notification type (chat, combat, trade, market, crafting, observation, system). Repeat parameter for multiple types.
7473
8681
  */
7474
8682
  types?: Array<string>;
7475
8683
  };
@@ -7580,7 +8788,7 @@ export type SpacemoltAcceptMissionResponse = SpacemoltAcceptMissionResponses[key
7580
8788
  export type SpacemoltAttackData = {
7581
8789
  body?: {
7582
8790
  /**
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.
8791
+ * 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
8792
  */
7585
8793
  id: string;
7586
8794
  };
@@ -7775,7 +8983,7 @@ export type SpacemoltCraftData = {
7775
8983
  */
7776
8984
  count?: number;
7777
8985
  /**
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.
8986
+ * 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
8987
  */
7780
8988
  deliver_to?: string;
7781
8989
  /**
@@ -7798,7 +9006,7 @@ export type SpacemoltCraftData = {
7798
9006
  quantity: number;
7799
9007
  }>;
7800
9008
  /**
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.
9009
+ * 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
9010
  */
7803
9011
  job_id?: string;
7804
9012
  /**
@@ -8003,7 +9211,7 @@ export type SpacemoltDockResponse = SpacemoltDockResponses[keyof SpacemoltDockRe
8003
9211
  export type SpacemoltFindRouteData = {
8004
9212
  body?: {
8005
9213
  /**
8006
- * ID of the destination system. Use search_systems to find system IDs by name.
9214
+ * 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
9215
  */
8008
9216
  id: string;
8009
9217
  };
@@ -8259,7 +9467,7 @@ export type SpacemoltGetGuideData = {
8259
9467
  /**
8260
9468
  * Guide to read (omit to list available guides)
8261
9469
  */
8262
- id?: 'miner' | 'trader' | 'pirate-hunter' | 'explorer' | 'base-builder' | 'drones' | 'fuel' | 'crafting';
9470
+ id?: 'miner' | 'trader' | 'pirate-hunter' | 'boarding' | 'explorer' | 'base-builder' | 'drones' | 'fuel' | 'crafting';
8263
9471
  };
8264
9472
  path?: never;
8265
9473
  query?: never;
@@ -8428,7 +9636,7 @@ export type SpacemoltGetNotificationsData = {
8428
9636
  /**
8429
9637
  * Filter by notification types. Omit for all types.
8430
9638
  */
8431
- types?: Array<'chat' | 'combat' | 'trade' | 'market' | 'crafting' | 'system'>;
9639
+ types?: Array<'chat' | 'combat' | 'trade' | 'market' | 'crafting' | 'observation' | 'system'>;
8432
9640
  };
8433
9641
  path?: never;
8434
9642
  query?: never;
@@ -8552,7 +9760,10 @@ export type SpacemoltGetQueueResponses = {
8552
9760
  export type SpacemoltGetQueueResponse = SpacemoltGetQueueResponses[keyof SpacemoltGetQueueResponses];
8553
9761
  export type SpacemoltGetShipData = {
8554
9762
  body?: {
8555
- [key: string]: unknown;
9763
+ /**
9764
+ * 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.
9765
+ */
9766
+ id?: string;
8556
9767
  };
8557
9768
  path?: never;
8558
9769
  query?: never;
@@ -9103,7 +10314,7 @@ export type SpacemoltListStationPassengersResponse = SpacemoltListStationPasseng
9103
10314
  export type SpacemoltLoadPassengerData = {
9104
10315
  body?: {
9105
10316
  /**
9106
- * Destination station ID or name. Loads all waiting passengers here bound for it, up to your free berths.
10317
+ * Destination station Base ID, station POI ID, or name. Loads all waiting passengers here bound for it, up to your free berths.
9107
10318
  */
9108
10319
  id: string;
9109
10320
  };
@@ -9169,6 +10380,46 @@ export type SpacemoltMineResponses = {
9169
10380
  };
9170
10381
  };
9171
10382
  export type SpacemoltMineResponse = SpacemoltMineResponses[keyof SpacemoltMineResponses];
10383
+ export type SpacemoltPayBountyData = {
10384
+ body?: {
10385
+ /**
10386
+ * Empire whose bounty to clear: solarian, voidborn, crimson, nebula, outerrim. Omit when you owe exactly one empire.
10387
+ */
10388
+ id?: string;
10389
+ /**
10390
+ * Who funds it: "self" (your wallet, the default) or "faction" (the faction treasury; requires ManageTreasury).
10391
+ */
10392
+ source?: 'self' | 'faction';
10393
+ };
10394
+ path?: never;
10395
+ query?: never;
10396
+ url: '/api/v2/spacemolt/pay_bounty';
10397
+ };
10398
+ export type SpacemoltPayBountyErrors = {
10399
+ /**
10400
+ * Bad request — invalid params, unknown command, or game error
10401
+ */
10402
+ 400: unknown;
10403
+ /**
10404
+ * Not authenticated — missing or invalid session
10405
+ */
10406
+ 401: unknown;
10407
+ /**
10408
+ * Rate limited — mutations allow 1 per tick (10 seconds)
10409
+ */
10410
+ 429: unknown;
10411
+ };
10412
+ export type SpacemoltPayBountyResponses = {
10413
+ /**
10414
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (PayBountyResponse)
10415
+ */
10416
+ 200: V2Response & {
10417
+ structuredContent?: V2GameState & {
10418
+ details?: PayBountyResponse;
10419
+ };
10420
+ };
10421
+ };
10422
+ export type SpacemoltPayBountyResponse = SpacemoltPayBountyResponses[keyof SpacemoltPayBountyResponses];
9172
10423
  export type SpacemoltPrepayTaxData = {
9173
10424
  body?: {
9174
10425
  /**
@@ -9208,7 +10459,7 @@ export type SpacemoltPrepayTaxResponse = SpacemoltPrepayTaxResponses[keyof Space
9208
10459
  export type SpacemoltRecycleData = {
9209
10460
  body?: {
9210
10461
  /**
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.
10462
+ * 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
10463
  */
9213
10464
  deliver_to?: string;
9214
10465
  /**
@@ -9224,7 +10475,7 @@ export type SpacemoltRecycleData = {
9224
10475
  */
9225
10476
  id?: string;
9226
10477
  /**
9227
- * Cancel this queued job (refunding its unconsumed escrow) instead of recycling. Setting job_id implies cancel.
10478
+ * 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
10479
  */
9229
10480
  job_id?: string;
9230
10481
  /**
@@ -9286,11 +10537,11 @@ export type SpacemoltRefuelData = {
9286
10537
  */
9287
10538
  id?: string;
9288
10539
  /**
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.
10540
+ * 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
10541
  */
9291
10542
  quantity?: number;
9292
10543
  /**
9293
- * Player ID or username to transfer fuel to, or 'fleet' for fleet fuel status. Requires a Refueling Pump module for transfers.
10544
+ * 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
10545
  */
9295
10546
  target?: string;
9296
10547
  };
@@ -9328,13 +10579,13 @@ export type SpacemoltRepairData = {
9328
10579
  /**
9329
10580
  * Specific repair item to use (e.g. repair_kit, hull_patch). Auto-selects cheapest if omitted.
9330
10581
  */
9331
- item_id?: string;
10582
+ id?: string;
9332
10583
  /**
9333
- * Number of repair kits to use (default 1). Capped to what's available and what hull needs.
10584
+ * 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
10585
  */
9335
10586
  quantity?: number;
9336
10587
  /**
9337
- * Player ID or username to repair, or 'fleet' for fleet hull status. Requires a Repair Arm module for ship-to-ship repair.
10588
+ * 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
10589
  */
9339
10590
  target?: string;
9340
10591
  };
@@ -9367,46 +10618,10 @@ export type SpacemoltRepairResponses = {
9367
10618
  };
9368
10619
  };
9369
10620
  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
10621
  export type SpacemoltScanData = {
9407
10622
  body?: {
9408
10623
  /**
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.
10624
+ * 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
10625
  */
9411
10626
  id?: string;
9412
10627
  };
@@ -9620,7 +10835,7 @@ export type SpacemoltSurveySystemResponse = SpacemoltSurveySystemResponses[keyof
9620
10835
  export type SpacemoltTravelData = {
9621
10836
  body?: {
9622
10837
  /**
9623
- * UUID of the POI to travel to (use get_system to see available POIs)
10838
+ * 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
10839
  */
9625
10840
  id: string;
9626
10841
  };
@@ -10116,7 +11331,7 @@ export type SpacemoltAuthRegisterData = {
10116
11331
  */
10117
11332
  registration_code: string;
10118
11333
  /**
10119
- * Your unique username (3-24 chars: letters, digits, spaces, underscores, hyphens, apostrophes, periods, exclamation marks, emoji)
11334
+ * Your unique username (3-24 chars: Latin letters, digits, spaces, underscores, hyphens, apostrophes, periods, exclamation marks, single-codepoint emoji. Other scripts and joined emoji are rejected.)
10120
11335
  */
10121
11336
  username: string;
10122
11337
  };
@@ -10181,7 +11396,7 @@ export type SpacemoltBattleAdvanceResponse = SpacemoltBattleAdvanceResponses[key
10181
11396
  export type SpacemoltBattleEngageData = {
10182
11397
  body?: {
10183
11398
  /**
10184
- * Side to join (optional for action=engage — auto-assigned by faction if omitted)
11399
+ * Side to join (optional when you engage — auto-assigned by faction if omitted)
10185
11400
  */
10186
11401
  side_id?: number;
10187
11402
  };
@@ -10328,21 +11543,52 @@ export type SpacemoltBattleReloadResponses = {
10328
11543
  * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (ReloadResponse)
10329
11544
  */
10330
11545
  200: V2Response & {
10331
- structuredContent?: V2GameState & {
10332
- details?: ReloadResponse;
10333
- };
11546
+ structuredContent?: V2GameState & {
11547
+ details?: ReloadResponse;
11548
+ };
11549
+ };
11550
+ };
11551
+ export type SpacemoltBattleReloadResponse = SpacemoltBattleReloadResponses[keyof SpacemoltBattleReloadResponses];
11552
+ export type SpacemoltBattleRetreatData = {
11553
+ body?: {
11554
+ [key: string]: unknown;
11555
+ };
11556
+ path?: never;
11557
+ query?: never;
11558
+ url: '/api/v2/spacemolt_battle/retreat';
11559
+ };
11560
+ export type SpacemoltBattleRetreatErrors = {
11561
+ /**
11562
+ * Bad request — invalid params, unknown command, or game error
11563
+ */
11564
+ 400: unknown;
11565
+ /**
11566
+ * Not authenticated — missing or invalid session
11567
+ */
11568
+ 401: unknown;
11569
+ /**
11570
+ * Rate limited — mutations allow 1 per tick (10 seconds)
11571
+ */
11572
+ 429: unknown;
11573
+ };
11574
+ export type SpacemoltBattleRetreatResponses = {
11575
+ /**
11576
+ * Result. structuredContent type: BattleResponse
11577
+ */
11578
+ 200: V2Response & {
11579
+ structuredContent?: BattleResponse;
10334
11580
  };
10335
11581
  };
10336
- export type SpacemoltBattleReloadResponse = SpacemoltBattleReloadResponses[keyof SpacemoltBattleReloadResponses];
10337
- export type SpacemoltBattleRetreatData = {
11582
+ export type SpacemoltBattleRetreatResponse = SpacemoltBattleRetreatResponses[keyof SpacemoltBattleRetreatResponses];
11583
+ export type SpacemoltBattleSelfDestructData = {
10338
11584
  body?: {
10339
11585
  [key: string]: unknown;
10340
11586
  };
10341
11587
  path?: never;
10342
11588
  query?: never;
10343
- url: '/api/v2/spacemolt_battle/retreat';
11589
+ url: '/api/v2/spacemolt_battle/self_destruct';
10344
11590
  };
10345
- export type SpacemoltBattleRetreatErrors = {
11591
+ export type SpacemoltBattleSelfDestructErrors = {
10346
11592
  /**
10347
11593
  * Bad request — invalid params, unknown command, or game error
10348
11594
  */
@@ -10356,7 +11602,7 @@ export type SpacemoltBattleRetreatErrors = {
10356
11602
  */
10357
11603
  429: unknown;
10358
11604
  };
10359
- export type SpacemoltBattleRetreatResponses = {
11605
+ export type SpacemoltBattleSelfDestructResponses = {
10360
11606
  /**
10361
11607
  * Result. structuredContent type: BattleResponse
10362
11608
  */
@@ -10364,13 +11610,21 @@ export type SpacemoltBattleRetreatResponses = {
10364
11610
  structuredContent?: BattleResponse;
10365
11611
  };
10366
11612
  };
10367
- export type SpacemoltBattleRetreatResponse = SpacemoltBattleRetreatResponses[keyof SpacemoltBattleRetreatResponses];
11613
+ export type SpacemoltBattleSelfDestructResponse = SpacemoltBattleSelfDestructResponses[keyof SpacemoltBattleSelfDestructResponses];
10368
11614
  export type SpacemoltBattleStanceData = {
10369
11615
  body?: {
10370
11616
  /**
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)
11617
+ * 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.
11618
+ */
11619
+ id: 'fire' | 'evade' | 'brace' | 'flee' | 'board';
11620
+ /**
11621
+ * Positive fit-marine commitment required when setting stance=board. The battle tick caps it to the fit marines actually available.
11622
+ */
11623
+ marines?: number;
11624
+ /**
11625
+ * ID or name of the enemy — required when focusing a target and when entering the board stance
10372
11626
  */
10373
- id: 'fire' | 'evade' | 'brace' | 'flee';
11627
+ target?: string;
10374
11628
  };
10375
11629
  path?: never;
10376
11630
  query?: never;
@@ -10467,7 +11721,7 @@ export type SpacemoltBattleSummaryResponse = SpacemoltBattleSummaryResponses[key
10467
11721
  export type SpacemoltBattleTargetData = {
10468
11722
  body?: {
10469
11723
  /**
10470
- * Player ID or username of enemy to target (required for action=target)
11724
+ * ID or name of the enemy — required when focusing a target and when entering the board stance
10471
11725
  */
10472
11726
  id: string;
10473
11727
  };
@@ -10786,7 +12040,7 @@ export type SpacemoltDroneDeployData = {
10786
12040
  */
10787
12041
  all?: boolean;
10788
12042
  /**
10789
- * ID of a specific drone to deploy from your bay (see get_drones)
12043
+ * ID of a specific drone to deploy from your bay
10790
12044
  */
10791
12045
  id?: string;
10792
12046
  };
@@ -14397,6 +15651,10 @@ export type SpacemoltFactionAdminPostMissionData = {
14397
15651
  item_id?: string;
14398
15652
  quantity?: number;
14399
15653
  system_id?: string;
15654
+ /**
15655
+ * 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.
15656
+ */
15657
+ target_base_id?: string;
14400
15658
  target_id?: string;
14401
15659
  /**
14402
15660
  * Objective type (deliver_item, kill_player, visit_system, etc.)
@@ -15238,7 +16496,7 @@ export type SpacemoltIntelQueryIntelResponse = SpacemoltIntelQueryIntelResponses
15238
16496
  export type SpacemoltIntelQueryTradeIntelData = {
15239
16497
  body?: {
15240
16498
  /**
15241
- * Filter by base/station ID
16499
+ * Filter by station Base ID or station POI ID
15242
16500
  */
15243
16501
  base_id?: string;
15244
16502
  /**
@@ -15292,7 +16550,7 @@ export type SpacemoltIntelQueryTradeIntelResponse = SpacemoltIntelQueryTradeInte
15292
16550
  export type SpacemoltIntelScanPoiData = {
15293
16551
  body?: {
15294
16552
  /**
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).
16553
+ * 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
16554
  */
15297
16555
  poi_id: string;
15298
16556
  };
@@ -15872,7 +17130,7 @@ export type SpacemoltMarketViewOrdersData = {
15872
17130
  */
15873
17131
  sort_by?: 'newest' | 'oldest' | 'price_asc' | 'price_desc';
15874
17132
  /**
15875
- * Optional: station ID to view your orders at without being docked. If omitted, must be docked and uses the current station.
17133
+ * 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
17134
  */
15877
17135
  station_id?: string;
15878
17136
  };
@@ -15903,6 +17161,50 @@ export type SpacemoltMarketViewOrdersResponses = {
15903
17161
  };
15904
17162
  };
15905
17163
  export type SpacemoltMarketViewOrdersResponse = SpacemoltMarketViewOrdersResponses[keyof SpacemoltMarketViewOrdersResponses];
17164
+ export type SpacemoltSalvageClaimPrizeData = {
17165
+ body?: {
17166
+ /**
17167
+ * Where surviving assigned crew go on delivery. Defaults to aboard; faction_reserve requires and reserves capacity in your faction's destination reserve.
17168
+ */
17169
+ crew_disposition?: 'aboard' | 'faction_reserve';
17170
+ /**
17171
+ * Intact prize record ID at your current POI
17172
+ */
17173
+ id: string;
17174
+ /**
17175
+ * Accessible station base ID where the autonomous prize should recover
17176
+ */
17177
+ target: string;
17178
+ };
17179
+ path?: never;
17180
+ query?: never;
17181
+ url: '/api/v2/spacemolt_salvage/claim_prize';
17182
+ };
17183
+ export type SpacemoltSalvageClaimPrizeErrors = {
17184
+ /**
17185
+ * Bad request — invalid params, unknown command, or game error
17186
+ */
17187
+ 400: unknown;
17188
+ /**
17189
+ * Not authenticated — missing or invalid session
17190
+ */
17191
+ 401: unknown;
17192
+ /**
17193
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17194
+ */
17195
+ 429: unknown;
17196
+ };
17197
+ export type SpacemoltSalvageClaimPrizeResponses = {
17198
+ /**
17199
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (ClaimPrizeResponse)
17200
+ */
17201
+ 200: V2Response & {
17202
+ structuredContent?: V2GameState & {
17203
+ details?: ClaimPrizeResponse;
17204
+ };
17205
+ };
17206
+ };
17207
+ export type SpacemoltSalvageClaimPrizeResponse = SpacemoltSalvageClaimPrizeResponses[keyof SpacemoltSalvageClaimPrizeResponses];
15906
17208
  export type SpacemoltSalvageHelpData = {
15907
17209
  body?: never;
15908
17210
  path?: never;
@@ -16181,6 +17483,54 @@ export type SpacemoltSalvageSellResponses = {
16181
17483
  };
16182
17484
  };
16183
17485
  export type SpacemoltSalvageSellResponse = SpacemoltSalvageSellResponses[keyof SpacemoltSalvageSellResponses];
17486
+ export type SpacemoltSalvageServicePrizeData = {
17487
+ body?: {
17488
+ /**
17489
+ * Claimed intact prize record ID at your current POI
17490
+ */
17491
+ id: string;
17492
+ /**
17493
+ * Optional quantity. For refuel, zero or omission transfers the safe maximum; for repair, zero or omission uses one repair kit.
17494
+ */
17495
+ quantity?: number;
17496
+ /**
17497
+ * Physical recovery action to perform
17498
+ */
17499
+ service_action: 'stop' | 'resume' | 'redirect' | 'refuel' | 'repair';
17500
+ /**
17501
+ * Accessible replacement station for redirect
17502
+ */
17503
+ target?: string;
17504
+ };
17505
+ path?: never;
17506
+ query?: never;
17507
+ url: '/api/v2/spacemolt_salvage/service_prize';
17508
+ };
17509
+ export type SpacemoltSalvageServicePrizeErrors = {
17510
+ /**
17511
+ * Bad request — invalid params, unknown command, or game error
17512
+ */
17513
+ 400: unknown;
17514
+ /**
17515
+ * Not authenticated — missing or invalid session
17516
+ */
17517
+ 401: unknown;
17518
+ /**
17519
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17520
+ */
17521
+ 429: unknown;
17522
+ };
17523
+ export type SpacemoltSalvageServicePrizeResponses = {
17524
+ /**
17525
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (PrizeServiceResponse)
17526
+ */
17527
+ 200: V2Response & {
17528
+ structuredContent?: V2GameState & {
17529
+ details?: PrizeServiceResponse;
17530
+ };
17531
+ };
17532
+ };
17533
+ export type SpacemoltSalvageServicePrizeResponse = SpacemoltSalvageServicePrizeResponses[keyof SpacemoltSalvageServicePrizeResponses];
16184
17534
  export type SpacemoltSalvageSetHomeData = {
16185
17535
  body?: {
16186
17536
  /**
@@ -16287,7 +17637,7 @@ export type SpacemoltSalvageWrecksResponse = SpacemoltSalvageWrecksResponses[key
16287
17637
  export type SpacemoltShipBrowseShipsData = {
16288
17638
  body?: {
16289
17639
  /**
16290
- * Base to browse listings at (defaults to current base)
17640
+ * Station to browse listings at, given by either its Base ID or station POI ID (defaults to current station)
16291
17641
  */
16292
17642
  base_id?: string;
16293
17643
  /**
@@ -16472,10 +17822,18 @@ export type SpacemoltShipCancelShipListingResponses = {
16472
17822
  export type SpacemoltShipCancelShipListingResponse = SpacemoltShipCancelShipListingResponses[keyof SpacemoltShipCancelShipListingResponses];
16473
17823
  export type SpacemoltShipCommissionQuoteData = {
16474
17824
  body?: {
17825
+ /**
17826
+ * If true, quote the hull without its default module loadout.
17827
+ */
17828
+ bare_hull?: boolean;
16475
17829
  /**
16476
17830
  * Ship class ID to get a quote for
16477
17831
  */
16478
17832
  id: string;
17833
+ /**
17834
+ * Preview the materials you can contribute, the remaining deficit, and partial-sourcing total.
17835
+ */
17836
+ source_missing_materials?: boolean;
16479
17837
  };
16480
17838
  path?: never;
16481
17839
  query?: never;
@@ -16506,6 +17864,10 @@ export type SpacemoltShipCommissionQuoteResponses = {
16506
17864
  export type SpacemoltShipCommissionQuoteResponse = SpacemoltShipCommissionQuoteResponses[keyof SpacemoltShipCommissionQuoteResponses];
16507
17865
  export type SpacemoltShipCommissionShipData = {
16508
17866
  body?: {
17867
+ /**
17868
+ * If true, commission only the hull without its default module loadout. Defaults to false so ships arrive fitted.
17869
+ */
17870
+ bare_hull?: boolean;
16509
17871
  /**
16510
17872
  * At your own faction's station: build from faction storage and treasury (requires ManageTreasury). Required there; credits-only and provide_materials are rejected.
16511
17873
  */
@@ -16518,6 +17880,10 @@ export type SpacemoltShipCommissionShipData = {
16518
17880
  * At an empire/NPC shipyard: if true, supply build materials from cargo/storage (cheaper); if false, pay credits for everything (default).
16519
17881
  */
16520
17882
  provide_materials?: boolean;
17883
+ /**
17884
+ * 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.
17885
+ */
17886
+ source_missing_materials?: boolean;
16521
17887
  };
16522
17888
  path?: never;
16523
17889
  query?: never;
@@ -16551,7 +17917,7 @@ export type SpacemoltShipCommissionShipResponse = SpacemoltShipCommissionShipRes
16551
17917
  export type SpacemoltShipCommissionStatusData = {
16552
17918
  body?: {
16553
17919
  /**
16554
- * Optional: filter commissions to a specific base
17920
+ * Optional: filter commissions to a station by either its Base ID or station POI ID
16555
17921
  */
16556
17922
  base_id?: string;
16557
17923
  };
@@ -16582,6 +17948,46 @@ export type SpacemoltShipCommissionStatusResponses = {
16582
17948
  };
16583
17949
  };
16584
17950
  export type SpacemoltShipCommissionStatusResponse = SpacemoltShipCommissionStatusResponses[keyof SpacemoltShipCommissionStatusResponses];
17951
+ export type SpacemoltShipFactionPersonnelData = {
17952
+ body?: {
17953
+ fit_crew?: number;
17954
+ fit_marines?: number;
17955
+ injured_crew?: number;
17956
+ injured_marines?: number;
17957
+ /**
17958
+ * Reserve operation; defaults to status. On v2 transports this field is named personnel_action.
17959
+ */
17960
+ personnel_action?: 'status' | 'recruit' | 'deposit' | 'withdraw';
17961
+ };
17962
+ path?: never;
17963
+ query?: never;
17964
+ url: '/api/v2/spacemolt_ship/faction_personnel';
17965
+ };
17966
+ export type SpacemoltShipFactionPersonnelErrors = {
17967
+ /**
17968
+ * Bad request — invalid params, unknown command, or game error
17969
+ */
17970
+ 400: unknown;
17971
+ /**
17972
+ * Not authenticated — missing or invalid session
17973
+ */
17974
+ 401: unknown;
17975
+ /**
17976
+ * Rate limited — mutations allow 1 per tick (10 seconds)
17977
+ */
17978
+ 429: unknown;
17979
+ };
17980
+ export type SpacemoltShipFactionPersonnelResponses = {
17981
+ /**
17982
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionPersonnelResponse)
17983
+ */
17984
+ 200: V2Response & {
17985
+ structuredContent?: V2GameState & {
17986
+ details?: FactionPersonnelResponse;
17987
+ };
17988
+ };
17989
+ };
17990
+ export type SpacemoltShipFactionPersonnelResponse = SpacemoltShipFactionPersonnelResponses[keyof SpacemoltShipFactionPersonnelResponses];
16585
17991
  export type SpacemoltShipHelpData = {
16586
17992
  body?: never;
16587
17993
  path?: never;
@@ -16729,6 +18135,46 @@ export type SpacemoltShipPlaceShipBuyOrderResponses = {
16729
18135
  };
16730
18136
  };
16731
18137
  export type SpacemoltShipPlaceShipBuyOrderResponse = SpacemoltShipPlaceShipBuyOrderResponses[keyof SpacemoltShipPlaceShipBuyOrderResponses];
18138
+ export type SpacemoltShipRecruitPersonnelData = {
18139
+ body?: {
18140
+ /**
18141
+ * Fit crew to recruit into the active ship. Request crew and/or marines; at least one count must be positive.
18142
+ */
18143
+ crew?: number;
18144
+ /**
18145
+ * Fit marines to recruit into the active ship. Request crew and/or marines; at least one count must be positive.
18146
+ */
18147
+ marines?: number;
18148
+ };
18149
+ path?: never;
18150
+ query?: never;
18151
+ url: '/api/v2/spacemolt_ship/recruit_personnel';
18152
+ };
18153
+ export type SpacemoltShipRecruitPersonnelErrors = {
18154
+ /**
18155
+ * Bad request — invalid params, unknown command, or game error
18156
+ */
18157
+ 400: unknown;
18158
+ /**
18159
+ * Not authenticated — missing or invalid session
18160
+ */
18161
+ 401: unknown;
18162
+ /**
18163
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18164
+ */
18165
+ 429: unknown;
18166
+ };
18167
+ export type SpacemoltShipRecruitPersonnelResponses = {
18168
+ /**
18169
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (RecruitPersonnelResponse)
18170
+ */
18171
+ 200: V2Response & {
18172
+ structuredContent?: V2GameState & {
18173
+ details?: RecruitPersonnelResponse;
18174
+ };
18175
+ };
18176
+ };
18177
+ export type SpacemoltShipRecruitPersonnelResponse = SpacemoltShipRecruitPersonnelResponses[keyof SpacemoltShipRecruitPersonnelResponses];
16732
18178
  export type SpacemoltShipRefitShipData = {
16733
18179
  body?: {
16734
18180
  [key: string]: unknown;
@@ -16954,6 +18400,98 @@ export type SpacemoltShipSwitchShipResponses = {
16954
18400
  };
16955
18401
  };
16956
18402
  export type SpacemoltShipSwitchShipResponse = SpacemoltShipSwitchShipResponses[keyof SpacemoltShipSwitchShipResponses];
18403
+ export type SpacemoltShipTransferPersonnelData = {
18404
+ body?: {
18405
+ fit_crew?: number;
18406
+ fit_marines?: number;
18407
+ /**
18408
+ * Allied player ID or username at the same POI.
18409
+ */
18410
+ id: string;
18411
+ injured_crew?: number;
18412
+ injured_marines?: number;
18413
+ };
18414
+ path?: never;
18415
+ query?: never;
18416
+ url: '/api/v2/spacemolt_ship/transfer_personnel';
18417
+ };
18418
+ export type SpacemoltShipTransferPersonnelErrors = {
18419
+ /**
18420
+ * Bad request — invalid params, unknown command, or game error
18421
+ */
18422
+ 400: unknown;
18423
+ /**
18424
+ * Not authenticated — missing or invalid session
18425
+ */
18426
+ 401: unknown;
18427
+ /**
18428
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18429
+ */
18430
+ 429: unknown;
18431
+ };
18432
+ export type SpacemoltShipTransferPersonnelResponses = {
18433
+ /**
18434
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (TransferPersonnelResponse)
18435
+ */
18436
+ 200: V2Response & {
18437
+ structuredContent?: V2GameState & {
18438
+ details?: TransferPersonnelResponse;
18439
+ };
18440
+ };
18441
+ };
18442
+ export type SpacemoltShipTransferPersonnelResponse = SpacemoltShipTransferPersonnelResponses[keyof SpacemoltShipTransferPersonnelResponses];
18443
+ export type SpacemoltShipTreatPersonnelData = {
18444
+ body?: {
18445
+ /**
18446
+ * Injured crew to treat. Omit or use zero to treat as many as possible.
18447
+ */
18448
+ crew?: number;
18449
+ /**
18450
+ * Optional allied player ID or username for remote field treatment. Omit to treat your active ship or faction reserve.
18451
+ */
18452
+ id?: string;
18453
+ /**
18454
+ * Injured marines to treat. Omit or use zero to treat as many as possible.
18455
+ */
18456
+ marines?: number;
18457
+ /**
18458
+ * Treatment source. Omit to choose the appropriate local station or field provider automatically.
18459
+ */
18460
+ provider?: 'station' | 'field' | 'faction';
18461
+ /**
18462
+ * Treat personnel in the local faction reserve. Requires provider=faction and ManageTreasury permission.
18463
+ */
18464
+ reserve?: boolean;
18465
+ };
18466
+ path?: never;
18467
+ query?: never;
18468
+ url: '/api/v2/spacemolt_ship/treat_personnel';
18469
+ };
18470
+ export type SpacemoltShipTreatPersonnelErrors = {
18471
+ /**
18472
+ * Bad request — invalid params, unknown command, or game error
18473
+ */
18474
+ 400: unknown;
18475
+ /**
18476
+ * Not authenticated — missing or invalid session
18477
+ */
18478
+ 401: unknown;
18479
+ /**
18480
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18481
+ */
18482
+ 429: unknown;
18483
+ };
18484
+ export type SpacemoltShipTreatPersonnelResponses = {
18485
+ /**
18486
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (TreatPersonnelResponse)
18487
+ */
18488
+ 200: V2Response & {
18489
+ structuredContent?: V2GameState & {
18490
+ details?: TreatPersonnelResponse;
18491
+ };
18492
+ };
18493
+ };
18494
+ export type SpacemoltShipTreatPersonnelResponse = SpacemoltShipTreatPersonnelResponses[keyof SpacemoltShipTreatPersonnelResponses];
16957
18495
  export type SpacemoltShipViewShipBuyOrdersData = {
16958
18496
  body?: {
16959
18497
  [key: string]: unknown;
@@ -16992,7 +18530,7 @@ export type SpacemoltShippingAcceptData = {
16992
18530
  */
16993
18531
  carrier?: 'player' | 'faction';
16994
18532
  /**
16995
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18533
+ * 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
18534
  */
16997
18535
  shipment_id: string;
16998
18536
  };
@@ -17025,10 +18563,41 @@ export type SpacemoltShippingAcceptResponses = {
17025
18563
  };
17026
18564
  };
17027
18565
  export type SpacemoltShippingAcceptResponse = SpacemoltShippingAcceptResponses[keyof SpacemoltShippingAcceptResponses];
18566
+ export type SpacemoltShippingActiveData = {
18567
+ body?: {
18568
+ [key: string]: unknown;
18569
+ };
18570
+ path?: never;
18571
+ query?: never;
18572
+ url: '/api/v2/spacemolt_shipping/active';
18573
+ };
18574
+ export type SpacemoltShippingActiveErrors = {
18575
+ /**
18576
+ * Bad request — invalid params, unknown command, or game error
18577
+ */
18578
+ 400: unknown;
18579
+ /**
18580
+ * Not authenticated — missing or invalid session
18581
+ */
18582
+ 401: unknown;
18583
+ /**
18584
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18585
+ */
18586
+ 429: unknown;
18587
+ };
18588
+ export type SpacemoltShippingActiveResponses = {
18589
+ /**
18590
+ * Result. structuredContent type: ShippingActiveResponse
18591
+ */
18592
+ 200: V2Response & {
18593
+ structuredContent?: ShippingActiveResponse;
18594
+ };
18595
+ };
18596
+ export type SpacemoltShippingActiveResponse = SpacemoltShippingActiveResponses[keyof SpacemoltShippingActiveResponses];
17028
18597
  export type SpacemoltShippingCancelData = {
17029
18598
  body?: {
17030
18599
  /**
17031
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18600
+ * 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
18601
  */
17033
18602
  shipment_id: string;
17034
18603
  };
@@ -17064,9 +18633,13 @@ export type SpacemoltShippingCancelResponse = SpacemoltShippingCancelResponses[k
17064
18633
  export type SpacemoltShippingDeliverData = {
17065
18634
  body?: {
17066
18635
  /**
17067
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18636
+ * 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
18637
  */
17069
- shipment_id: string;
18638
+ package_id?: string;
18639
+ /**
18640
+ * 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.
18641
+ */
18642
+ shipment_id?: string;
17070
18643
  };
17071
18644
  path?: never;
17072
18645
  query?: never;
@@ -17100,9 +18673,13 @@ export type SpacemoltShippingDeliverResponse = SpacemoltShippingDeliverResponses
17100
18673
  export type SpacemoltShippingGetData = {
17101
18674
  body?: {
17102
18675
  /**
17103
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
18676
+ * 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
18677
  */
17105
- shipment_id: string;
18678
+ package_id?: string;
18679
+ /**
18680
+ * 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.
18681
+ */
18682
+ shipment_id?: string;
17106
18683
  };
17107
18684
  path?: never;
17108
18685
  query?: never;
@@ -17174,7 +18751,7 @@ export type SpacemoltShippingListData = {
17174
18751
  */
17175
18752
  eligible_as?: 'player' | 'faction';
17176
18753
  /**
17177
- * For list, only show runs bound for this destination station (ID or name).
18754
+ * For list, only show runs bound for this destination station, given by either its Base ID or station POI ID.
17178
18755
  */
17179
18756
  filter_destination?: string;
17180
18757
  /**
@@ -17270,9 +18847,9 @@ export type SpacemoltShippingPostData = {
17270
18847
  /**
17271
18848
  * 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
18849
  */
17273
- base_reward?: number;
18850
+ base_reward: number;
17274
18851
  /**
17275
- * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
18852
+ * 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
18853
  */
17277
18854
  destination_base_id: string;
17278
18855
  /**
@@ -17292,11 +18869,11 @@ export type SpacemoltShippingPostData = {
17292
18869
  */
17293
18870
  max_total_cost?: number;
17294
18871
  /**
17295
- * Sealed package to quote or post. The package must be owned by the selected shipper at this station.
18872
+ * 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
18873
  */
17297
18874
  package_id: string;
17298
18875
  /**
17299
- * Player, faction, or station ID matching recipient_type.
18876
+ * Player, faction, or station ID matching recipient_type; a station takes either the base ID or the station POI ID.
17300
18877
  */
17301
18878
  recipient_id?: string;
17302
18879
  /**
@@ -17398,7 +18975,7 @@ export type SpacemoltShippingQuoteData = {
17398
18975
  */
17399
18976
  base_reward?: number;
17400
18977
  /**
17401
- * Destination station/base ID for quote or post. It must differ from the origin station; another station in the same system is valid.
18978
+ * 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
18979
  */
17403
18980
  destination_base_id: string;
17404
18981
  /**
@@ -17414,11 +18991,11 @@ export type SpacemoltShippingQuoteData = {
17414
18991
  */
17415
18992
  invited_carrier_type?: 'player' | 'faction';
17416
18993
  /**
17417
- * Sealed package to quote or post. The package must be owned by the selected shipper at this station.
18994
+ * 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
18995
  */
17419
18996
  package_id: string;
17420
18997
  /**
17421
- * Player, faction, or station ID matching recipient_type.
18998
+ * Player, faction, or station ID matching recipient_type; a station takes either the base ID or the station POI ID.
17422
18999
  */
17423
19000
  recipient_id?: string;
17424
19001
  /**
@@ -17480,9 +19057,13 @@ export type SpacemoltShippingQuoteResponse = SpacemoltShippingQuoteResponses[key
17480
19057
  export type SpacemoltShippingReturnData = {
17481
19058
  body?: {
17482
19059
  /**
17483
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
19060
+ * 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
19061
  */
17485
- shipment_id: string;
19062
+ package_id?: string;
19063
+ /**
19064
+ * 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.
19065
+ */
19066
+ shipment_id?: string;
17486
19067
  };
17487
19068
  path?: never;
17488
19069
  query?: never;
@@ -17520,9 +19101,13 @@ export type SpacemoltShippingTrackData = {
17520
19101
  */
17521
19102
  limit?: number;
17522
19103
  /**
17523
- * Freight contract ID for get, track, accept, deliver, return, or cancel.
19104
+ * 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
19105
  */
17525
- shipment_id: string;
19106
+ package_id?: string;
19107
+ /**
19108
+ * 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.
19109
+ */
19110
+ shipment_id?: string;
17526
19111
  };
17527
19112
  path?: never;
17528
19113
  query?: never;
@@ -18583,7 +20168,7 @@ export type SpacemoltSocialWriteNoteResponse = SpacemoltSocialWriteNoteResponses
18583
20168
  export type SpacemoltStorageDepositData = {
18584
20169
  body?: {
18585
20170
  /**
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.
20171
+ * 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
20172
  */
18588
20173
  bucket?: string;
18589
20174
  /**
@@ -18595,7 +20180,7 @@ export type SpacemoltStorageDepositData = {
18595
20180
  */
18596
20181
  dest_bucket?: string;
18597
20182
  /**
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.
20183
+ * 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
20184
  */
18600
20185
  item_id?: string;
18601
20186
  /**
@@ -18618,7 +20203,7 @@ export type SpacemoltStorageDepositData = {
18618
20203
  */
18619
20204
  source?: string;
18620
20205
  /**
18621
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
20206
+ * 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
20207
  */
18623
20208
  target?: string;
18624
20209
  };
@@ -18785,11 +20370,11 @@ export type SpacemoltStorageLootResponse = SpacemoltStorageLootResponses[keyof S
18785
20370
  export type SpacemoltStorageViewData = {
18786
20371
  body?: {
18787
20372
  /**
18788
- * Optional: station ID to view storage at without being docked. Only applies to action="view", target="self".
20373
+ * 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
20374
  */
18790
20375
  station_id?: string;
18791
20376
  /**
18792
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
20377
+ * 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
20378
  */
18794
20379
  target?: string;
18795
20380
  };
@@ -18827,7 +20412,7 @@ export type SpacemoltStorageViewResponse = SpacemoltStorageViewResponses[keyof S
18827
20412
  export type SpacemoltStorageWithdrawData = {
18828
20413
  body?: {
18829
20414
  /**
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.
20415
+ * 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
20416
  */
18832
20417
  bucket?: string;
18833
20418
  /**
@@ -18835,7 +20420,7 @@ export type SpacemoltStorageWithdrawData = {
18835
20420
  */
18836
20421
  dest_bucket?: string;
18837
20422
  /**
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.
20423
+ * 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
20424
  */
18840
20425
  item_id?: string;
18841
20426
  /**
@@ -18854,7 +20439,7 @@ export type SpacemoltStorageWithdrawData = {
18854
20439
  */
18855
20440
  source?: string;
18856
20441
  /**
18857
- * Target: 'self' (personal storage), 'faction' (faction storage), or a player name/ID (gift)
20442
+ * 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
20443
  */
18859
20444
  target?: string;
18860
20445
  };