Skip to main content

nea_esi/types/
character.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4use super::misc::EsiFwTotals;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct EsiCharacterInfo {
8    pub name: String,
9    #[serde(default)]
10    pub corporation_id: Option<i64>,
11    #[serde(default)]
12    pub alliance_id: Option<i64>,
13}
14
15/// Character skills overview.
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct EsiSkills {
18    #[serde(default)]
19    pub skills: Vec<EsiSkill>,
20    pub total_sp: i64,
21    #[serde(default)]
22    pub unallocated_sp: Option<i32>,
23}
24
25/// A single trained skill.
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct EsiSkill {
28    pub skill_id: i32,
29    pub trained_skill_level: i32,
30    pub active_skill_level: i32,
31    pub skillpoints_in_skill: i64,
32}
33
34/// A skill queue entry.
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct EsiSkillqueueEntry {
37    pub skill_id: i32,
38    pub finish_level: i32,
39    pub queue_position: i32,
40    #[serde(default)]
41    pub start_date: Option<DateTime<Utc>>,
42    #[serde(default)]
43    pub finish_date: Option<DateTime<Utc>>,
44    #[serde(default)]
45    pub training_start_sp: Option<i32>,
46    #[serde(default)]
47    pub level_start_sp: Option<i32>,
48    #[serde(default)]
49    pub level_end_sp: Option<i32>,
50}
51
52/// Character attributes.
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct EsiAttributes {
55    pub intelligence: i32,
56    pub memory: i32,
57    pub perception: i32,
58    pub willpower: i32,
59    pub charisma: i32,
60    #[serde(default)]
61    pub bonus_remaps: Option<i32>,
62    #[serde(default)]
63    pub last_remap_date: Option<DateTime<Utc>>,
64    #[serde(default)]
65    pub accrued_remap_cooldown_date: Option<DateTime<Utc>>,
66}
67
68/// A character's current location.
69#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct EsiLocation {
71    pub solar_system_id: i32,
72    #[serde(default)]
73    pub station_id: Option<i64>,
74    #[serde(default)]
75    pub structure_id: Option<i64>,
76}
77
78/// A character's current ship.
79#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct EsiShip {
81    pub ship_type_id: i32,
82    pub ship_item_id: i64,
83    pub ship_name: String,
84}
85
86/// A character's online status.
87#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct EsiOnlineStatus {
89    pub online: bool,
90    #[serde(default)]
91    pub last_login: Option<DateTime<Utc>>,
92    #[serde(default)]
93    pub last_logout: Option<DateTime<Utc>>,
94    #[serde(default)]
95    pub logins: Option<i32>,
96}
97
98/// Character clones info.
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct EsiClones {
101    #[serde(default)]
102    pub home_location: Option<EsiCloneLocation>,
103    #[serde(default)]
104    pub last_clone_jump_date: Option<DateTime<Utc>>,
105    #[serde(default)]
106    pub last_station_change_date: Option<DateTime<Utc>>,
107    #[serde(default)]
108    pub jump_clones: Vec<EsiJumpClone>,
109}
110
111/// A clone home location.
112#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct EsiCloneLocation {
114    pub location_id: i64,
115    pub location_type: String,
116}
117
118/// A jump clone.
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct EsiJumpClone {
121    pub jump_clone_id: i64,
122    pub location_id: i64,
123    pub location_type: String,
124    #[serde(default)]
125    pub implants: Vec<i32>,
126    #[serde(default)]
127    pub name: Option<String>,
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct EsiCompletedOpportunity {
132    pub opportunity_id: i32,
133    pub completed_at: DateTime<Utc>,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct EsiAllianceHistoryEntry {
138    pub record_id: i32,
139    pub start_date: DateTime<Utc>,
140    #[serde(default)]
141    pub alliance_id: Option<i64>,
142    #[serde(default)]
143    pub is_deleted: bool,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
147pub struct EsiCorporationHistoryEntry {
148    pub record_id: i32,
149    pub start_date: DateTime<Utc>,
150    pub corporation_id: i64,
151    #[serde(default)]
152    pub is_deleted: bool,
153}
154
155/// Character affiliation (corporation, alliance, faction).
156#[derive(Debug, Clone, Serialize, Deserialize)]
157pub struct EsiCharacterAffiliation {
158    pub character_id: i64,
159    pub corporation_id: i64,
160    #[serde(default)]
161    pub alliance_id: Option<i64>,
162    #[serde(default)]
163    pub faction_id: Option<i32>,
164}
165
166/// Character portrait URLs.
167#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct EsiCharacterPortrait {
169    #[serde(default)]
170    pub px64: Option<String>,
171    #[serde(default)]
172    pub px128: Option<String>,
173    #[serde(default)]
174    pub px256: Option<String>,
175    #[serde(default)]
176    pub px512: Option<String>,
177}
178
179/// Character roles.
180#[derive(Debug, Clone, Serialize, Deserialize)]
181pub struct EsiCharacterRoles {
182    #[serde(default)]
183    pub roles: Vec<String>,
184    #[serde(default)]
185    pub roles_at_hq: Vec<String>,
186    #[serde(default)]
187    pub roles_at_base: Vec<String>,
188    #[serde(default)]
189    pub roles_at_other: Vec<String>,
190}
191
192/// A character title.
193#[derive(Debug, Clone, Serialize, Deserialize)]
194pub struct EsiCharacterTitle {
195    pub title_id: i32,
196    #[serde(default)]
197    pub name: Option<String>,
198}
199
200/// A standing entry.
201#[derive(Debug, Clone, Serialize, Deserialize)]
202pub struct EsiStanding {
203    pub from_id: i64,
204    pub from_type: String,
205    pub standing: f64,
206}
207
208/// A character medal.
209#[derive(Debug, Clone, Serialize, Deserialize)]
210pub struct EsiCharacterMedal {
211    pub medal_id: i32,
212    pub title: String,
213    pub description: String,
214    pub corporation_id: i64,
215    pub issuer_id: i64,
216    pub date: DateTime<Utc>,
217    pub reason: String,
218    pub status: String,
219    #[serde(default)]
220    pub graphics: Vec<EsiMedalGraphic>,
221}
222
223/// A medal graphic layer.
224#[derive(Debug, Clone, Serialize, Deserialize)]
225pub struct EsiMedalGraphic {
226    pub part: i32,
227    pub layer: i32,
228    #[serde(default)]
229    pub graphic: Option<String>,
230    #[serde(default)]
231    pub color: Option<i32>,
232}
233
234/// Agent research info.
235#[derive(Debug, Clone, Serialize, Deserialize)]
236pub struct EsiAgentResearch {
237    pub agent_id: i64,
238    pub skill_type_id: i32,
239    pub started_at: DateTime<Utc>,
240    pub points_per_day: f64,
241    pub remainder_points: f64,
242}
243
244/// Jump fatigue info.
245#[derive(Debug, Clone, Serialize, Deserialize)]
246pub struct EsiFatigue {
247    #[serde(default)]
248    pub last_jump_date: Option<DateTime<Utc>>,
249    #[serde(default)]
250    pub jump_fatigue_expire_date: Option<DateTime<Utc>>,
251    #[serde(default)]
252    pub last_update_date: Option<DateTime<Utc>>,
253}
254
255/// Character FW stats.
256#[derive(Debug, Clone, Serialize, Deserialize)]
257pub struct EsiCharacterFwStats {
258    #[serde(default)]
259    pub faction_id: Option<i32>,
260    #[serde(default)]
261    pub enlisted_on: Option<DateTime<Utc>>,
262    #[serde(default)]
263    pub current_rank: Option<i32>,
264    #[serde(default)]
265    pub highest_rank: Option<i32>,
266    #[serde(default)]
267    pub kills: Option<EsiFwTotals>,
268    #[serde(default)]
269    pub victory_points: Option<EsiFwTotals>,
270}