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#[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#[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#[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#[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#[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#[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#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct EsiCloneLocation {
114 pub location_id: i64,
115 pub location_type: String,
116}
117
118#[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#[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#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
194pub struct EsiCharacterTitle {
195 pub title_id: i32,
196 #[serde(default)]
197 pub name: Option<String>,
198}
199
200#[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#[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#[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#[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#[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#[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}