Skip to main content

esi_openapi/groups/
character.rs

1use crate::prelude::*;
2
3/// Endpoints for Character
4pub struct CharacterGroup<'a> {
5    pub(crate) esi: &'a Esi,
6}
7
8#[derive(Debug, Deserialize)]
9#[allow(missing_docs)]
10pub struct CharacterPublicInfo {
11    pub achievement_score: Option<i64>,
12    pub alliance_id: Option<i32>,
13    pub birthday: String,
14    pub bloodline_id: i32,
15    pub character_title_id: Option<String>,
16    pub corporation_id: i32,
17    pub corporation_title: Option<String>,
18    pub description: Option<String>,
19    pub faction_id: Option<i32>,
20    pub gender: String,
21    pub name: String,
22    pub race_id: u16,
23    pub security_status: Option<f64>,
24}
25
26#[derive(Debug, Deserialize)]
27#[allow(missing_docs)]
28pub struct CharacterCorporationHistoryItem {
29    pub corporation_id: i32,
30    pub is_deleted: Option<bool>,
31    pub record_id: i32,
32    pub start_date: String,
33}
34
35#[derive(Debug, Deserialize)]
36#[allow(missing_docs)]
37pub struct CharacterPortraitInfo {
38    pub px128x128: Option<String>,
39    pub px256x256: Option<String>,
40    pub px512x512: Option<String>,
41    pub px64x64: Option<String>,
42}
43
44#[derive(Debug, Deserialize)]
45#[allow(missing_docs)]
46pub struct CharacterAffiliation {
47    pub alliance_id: Option<i32>,
48    pub character_id: i32,
49    pub corporation_id: i32,
50    pub faction_id: Option<i32>,
51}
52
53#[derive(Debug, Deserialize)]
54#[allow(missing_docs)]
55pub struct Blueprint {
56    pub item_id: i64,
57    pub location_flag: String,
58    pub location_id: i64,
59    pub material_efficiency: i32,
60    pub quantity: i32,
61    pub runs: i32,
62    pub time_efficiency: i32,
63    pub type_id: i32,
64}
65
66#[derive(Debug, Deserialize)]
67#[allow(missing_docs)]
68pub struct Notification {
69    #[serde(default)]
70    pub is_read: bool,
71    pub notification_id: i64,
72    pub sender_id: i32,
73    pub sender_type: String,
74    pub text: Option<String>,
75    pub timestamp: String,
76    #[serde(rename = "type")]
77    pub notification_type: String,
78}
79
80#[derive(Debug, Deserialize)]
81#[allow(missing_docs)]
82pub struct WalletTransaction {
83    pub client_id: i32,
84    pub date: String,
85    pub is_buy: bool,
86    pub is_personal: bool,
87    pub journal_ref_id: i64,
88    pub location_id: i64,
89    pub quantity: i32,
90    pub transaction_id: i64,
91    pub type_id: i32,
92    pub unit_price: f64,
93}
94
95impl CharacterGroup<'_> {
96    api_get!(
97        /// Get a character's public information.
98        get_public_info,
99        "GetCharactersDetail",
100        RequestType::Public,
101        CharacterPublicInfo,
102        (character_id: i32) => "{character_id}"
103    );
104
105    api_get!(
106        /// Get a character's corporation history.
107        get_history,
108        "GetCharactersCharacterIdCorporationhistory",
109        RequestType::Public,
110        Vec<CharacterCorporationHistoryItem>,
111        (character_id: i32) => "{character_id}"
112    );
113
114    api_get!(
115        /// Get a character's portrait URLs on the image server.
116        get_portrait,
117        "GetCharactersCharacterIdPortrait",
118        RequestType::Public,
119        CharacterPortraitInfo,
120        (character_id: i32) => "{character_id}"
121    );
122
123    api_post!(
124        /// Get character affiliations.
125        get_affiliation,
126        "PostCharactersAffiliation",
127        RequestType::Public,
128        Vec<CharacterAffiliation>,
129        ,
130        character_ids: &[u64],
131    );
132
133    api_get!(
134        /// Get character blueprints.
135        get_blueprints,
136        "GetCharactersCharacterIdBlueprints",
137        RequestType::Authenticated,
138        Vec<Blueprint>,
139        (character_id: i32) => "{character_id}"
140    );
141
142    api_get!(
143        /// Get character notifications.
144        get_notifications,
145        "GetCharactersCharacterIdNotifications",
146        RequestType::Authenticated,
147        Vec<Notification>,
148        (character_id: i32) => "{character_id}"
149    );
150
151    api_get!(
152        /// Get character wallet transactions.
153        get_wallet_transactions,
154        "GetCharactersCharacterIdWalletTransactions",
155        RequestType::Authenticated,
156        Vec<WalletTransaction>,
157        (character_id: i32) => "{character_id}"
158    );
159}