fireblocks_sdk/apis/
mod.rs

1use std::{error, fmt};
2
3#[derive(Debug, Clone)]
4pub struct ResponseContent<T> {
5    pub status: reqwest::StatusCode,
6    pub content: String,
7    pub entity: Option<T>,
8}
9
10#[derive(Debug)]
11pub enum Error<T> {
12    Reqwest(reqwest::Error),
13    ReqwestMiddleware(reqwest_middleware::Error),
14    Serde(serde_json::Error),
15    Io(std::io::Error),
16    ResponseError(ResponseContent<T>),
17}
18
19impl<T> fmt::Display for Error<T> {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        let (module, e) = match self {
22            Error::Reqwest(e) => ("reqwest", e.to_string()),
23            Error::ReqwestMiddleware(e) => ("reqwest-middleware", e.to_string()),
24            Error::Serde(e) => ("serde", e.to_string()),
25            Error::Io(e) => ("IO", e.to_string()),
26            Error::ResponseError(e) => ("response", format!("status code {}", e.status)),
27        };
28        write!(f, "error in {}: {}", module, e)
29    }
30}
31
32impl<T: fmt::Debug> error::Error for Error<T> {
33    fn source(&self) -> Option<&(dyn error::Error + 'static)> {
34        Some(match self {
35            Error::Reqwest(e) => e,
36            Error::ReqwestMiddleware(e) => e,
37            Error::Serde(e) => e,
38            Error::Io(e) => e,
39            Error::ResponseError(_) => return None,
40        })
41    }
42}
43
44impl<T> From<reqwest::Error> for Error<T> {
45    fn from(e: reqwest::Error) -> Self {
46        Error::Reqwest(e)
47    }
48}
49
50impl<T> From<reqwest_middleware::Error> for Error<T> {
51    fn from(e: reqwest_middleware::Error) -> Self {
52        Error::ReqwestMiddleware(e)
53    }
54}
55
56impl<T> From<serde_json::Error> for Error<T> {
57    fn from(e: serde_json::Error) -> Self {
58        Error::Serde(e)
59    }
60}
61
62impl<T> From<std::io::Error> for Error<T> {
63    fn from(e: std::io::Error) -> Self {
64        Error::Io(e)
65    }
66}
67
68pub fn urlencode<T: AsRef<str>>(s: T) -> String {
69    ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect()
70}
71
72pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> {
73    if let serde_json::Value::Object(object) = value {
74        let mut params = vec![];
75
76        for (key, value) in object {
77            match value {
78                serde_json::Value::Object(_) => params.append(&mut parse_deep_object(
79                    &format!("{}[{}]", prefix, key),
80                    value,
81                )),
82                serde_json::Value::Array(array) => {
83                    for (i, value) in array.iter().enumerate() {
84                        params.append(&mut parse_deep_object(
85                            &format!("{}[{}][{}]", prefix, key, i),
86                            value,
87                        ));
88                    }
89                }
90                serde_json::Value::String(s) => {
91                    params.push((format!("{}[{}]", prefix, key), s.clone()))
92                }
93                _ => params.push((format!("{}[{}]", prefix, key), value.to_string())),
94            }
95        }
96
97        return params;
98    }
99
100    unimplemented!("Only objects are supported with style=deepObject")
101}
102
103pub mod blockchains_assets_api;
104pub mod blockchains_assets_beta_api;
105pub mod compliance_api;
106pub mod contract_interactions_api;
107pub mod contract_templates_api;
108pub mod d_app_connections_api;
109pub mod deployed_contracts_api;
110pub mod exchange_accounts_api;
111pub mod fiat_accounts_api;
112pub mod fireblocks_network_api;
113pub mod gas_station_api;
114pub mod job_management_api;
115pub mod key_link_beta_api;
116pub mod keys_beta_api;
117pub mod nfts_api;
118pub mod off_exchange_api;
119pub mod payments_payout_api;
120pub mod policy_editor_beta_api;
121pub mod smart_transfers_api;
122pub mod staking_api;
123pub mod tokenization_api;
124pub mod transactions_api;
125pub mod vaults_api;
126pub mod webhooks_api;
127pub mod webhooks_v2_beta_api;
128pub mod whitelisted_contracts_api;
129pub mod whitelisted_external_wallets_api;
130pub mod whitelisted_internal_wallets_api;
131pub mod workspace_management_api;
132
133pub mod configuration;
134
135use std::sync::Arc;
136
137pub trait Api {
138    fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi;
139    fn blockchains_assets_beta_api(
140        &self,
141    ) -> &dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi;
142    fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi;
143    fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi;
144    fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi;
145    fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi;
146    fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi;
147    fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi;
148    fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi;
149    fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi;
150    fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi;
151    fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi;
152    fn key_link_beta_api(&self) -> &dyn key_link_beta_api::KeyLinkBetaApi;
153    fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi;
154    fn nfts_api(&self) -> &dyn nfts_api::NftsApi;
155    fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi;
156    fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi;
157    fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi;
158    fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi;
159    fn staking_api(&self) -> &dyn staking_api::StakingApi;
160    fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi;
161    fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi;
162    fn vaults_api(&self) -> &dyn vaults_api::VaultsApi;
163    fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi;
164    fn webhooks_v2_beta_api(&self) -> &dyn webhooks_v2_beta_api::WebhooksV2BetaApi;
165    fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi;
166    fn whitelisted_external_wallets_api(
167        &self,
168    ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi;
169    fn whitelisted_internal_wallets_api(
170        &self,
171    ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi;
172    fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi;
173}
174
175pub struct ApiClient {
176    blockchains_assets_api: Box<dyn blockchains_assets_api::BlockchainsAssetsApi>,
177    blockchains_assets_beta_api: Box<dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi>,
178    compliance_api: Box<dyn compliance_api::ComplianceApi>,
179    contract_interactions_api: Box<dyn contract_interactions_api::ContractInteractionsApi>,
180    contract_templates_api: Box<dyn contract_templates_api::ContractTemplatesApi>,
181    d_app_connections_api: Box<dyn d_app_connections_api::DAppConnectionsApi>,
182    deployed_contracts_api: Box<dyn deployed_contracts_api::DeployedContractsApi>,
183    exchange_accounts_api: Box<dyn exchange_accounts_api::ExchangeAccountsApi>,
184    fiat_accounts_api: Box<dyn fiat_accounts_api::FiatAccountsApi>,
185    fireblocks_network_api: Box<dyn fireblocks_network_api::FireblocksNetworkApi>,
186    gas_station_api: Box<dyn gas_station_api::GasStationApi>,
187    job_management_api: Box<dyn job_management_api::JobManagementApi>,
188    key_link_beta_api: Box<dyn key_link_beta_api::KeyLinkBetaApi>,
189    keys_beta_api: Box<dyn keys_beta_api::KeysBetaApi>,
190    nfts_api: Box<dyn nfts_api::NftsApi>,
191    off_exchange_api: Box<dyn off_exchange_api::OffExchangeApi>,
192    payments_payout_api: Box<dyn payments_payout_api::PaymentsPayoutApi>,
193    policy_editor_beta_api: Box<dyn policy_editor_beta_api::PolicyEditorBetaApi>,
194    smart_transfers_api: Box<dyn smart_transfers_api::SmartTransfersApi>,
195    staking_api: Box<dyn staking_api::StakingApi>,
196    tokenization_api: Box<dyn tokenization_api::TokenizationApi>,
197    transactions_api: Box<dyn transactions_api::TransactionsApi>,
198    vaults_api: Box<dyn vaults_api::VaultsApi>,
199    webhooks_api: Box<dyn webhooks_api::WebhooksApi>,
200    webhooks_v2_beta_api: Box<dyn webhooks_v2_beta_api::WebhooksV2BetaApi>,
201    whitelisted_contracts_api: Box<dyn whitelisted_contracts_api::WhitelistedContractsApi>,
202    whitelisted_external_wallets_api:
203        Box<dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi>,
204    whitelisted_internal_wallets_api:
205        Box<dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi>,
206    workspace_management_api: Box<dyn workspace_management_api::WorkspaceManagementApi>,
207}
208
209impl ApiClient {
210    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
211        Self {
212            blockchains_assets_api: Box::new(
213                blockchains_assets_api::BlockchainsAssetsApiClient::new(configuration.clone()),
214            ),
215            blockchains_assets_beta_api: Box::new(
216                blockchains_assets_beta_api::BlockchainsAssetsBetaApiClient::new(
217                    configuration.clone(),
218                ),
219            ),
220            compliance_api: Box::new(compliance_api::ComplianceApiClient::new(
221                configuration.clone(),
222            )),
223            contract_interactions_api: Box::new(
224                contract_interactions_api::ContractInteractionsApiClient::new(
225                    configuration.clone(),
226                ),
227            ),
228            contract_templates_api: Box::new(
229                contract_templates_api::ContractTemplatesApiClient::new(configuration.clone()),
230            ),
231            d_app_connections_api: Box::new(d_app_connections_api::DAppConnectionsApiClient::new(
232                configuration.clone(),
233            )),
234            deployed_contracts_api: Box::new(
235                deployed_contracts_api::DeployedContractsApiClient::new(configuration.clone()),
236            ),
237            exchange_accounts_api: Box::new(exchange_accounts_api::ExchangeAccountsApiClient::new(
238                configuration.clone(),
239            )),
240            fiat_accounts_api: Box::new(fiat_accounts_api::FiatAccountsApiClient::new(
241                configuration.clone(),
242            )),
243            fireblocks_network_api: Box::new(
244                fireblocks_network_api::FireblocksNetworkApiClient::new(configuration.clone()),
245            ),
246            gas_station_api: Box::new(gas_station_api::GasStationApiClient::new(
247                configuration.clone(),
248            )),
249            job_management_api: Box::new(job_management_api::JobManagementApiClient::new(
250                configuration.clone(),
251            )),
252            key_link_beta_api: Box::new(key_link_beta_api::KeyLinkBetaApiClient::new(
253                configuration.clone(),
254            )),
255            keys_beta_api: Box::new(keys_beta_api::KeysBetaApiClient::new(configuration.clone())),
256            nfts_api: Box::new(nfts_api::NftsApiClient::new(configuration.clone())),
257            off_exchange_api: Box::new(off_exchange_api::OffExchangeApiClient::new(
258                configuration.clone(),
259            )),
260            payments_payout_api: Box::new(payments_payout_api::PaymentsPayoutApiClient::new(
261                configuration.clone(),
262            )),
263            policy_editor_beta_api: Box::new(
264                policy_editor_beta_api::PolicyEditorBetaApiClient::new(configuration.clone()),
265            ),
266            smart_transfers_api: Box::new(smart_transfers_api::SmartTransfersApiClient::new(
267                configuration.clone(),
268            )),
269            staking_api: Box::new(staking_api::StakingApiClient::new(configuration.clone())),
270            tokenization_api: Box::new(tokenization_api::TokenizationApiClient::new(
271                configuration.clone(),
272            )),
273            transactions_api: Box::new(transactions_api::TransactionsApiClient::new(
274                configuration.clone(),
275            )),
276            vaults_api: Box::new(vaults_api::VaultsApiClient::new(configuration.clone())),
277            webhooks_api: Box::new(webhooks_api::WebhooksApiClient::new(configuration.clone())),
278            webhooks_v2_beta_api: Box::new(webhooks_v2_beta_api::WebhooksV2BetaApiClient::new(
279                configuration.clone(),
280            )),
281            whitelisted_contracts_api: Box::new(
282                whitelisted_contracts_api::WhitelistedContractsApiClient::new(
283                    configuration.clone(),
284                ),
285            ),
286            whitelisted_external_wallets_api: Box::new(
287                whitelisted_external_wallets_api::WhitelistedExternalWalletsApiClient::new(
288                    configuration.clone(),
289                ),
290            ),
291            whitelisted_internal_wallets_api: Box::new(
292                whitelisted_internal_wallets_api::WhitelistedInternalWalletsApiClient::new(
293                    configuration.clone(),
294                ),
295            ),
296            workspace_management_api: Box::new(
297                workspace_management_api::WorkspaceManagementApiClient::new(configuration.clone()),
298            ),
299        }
300    }
301}
302
303impl Api for ApiClient {
304    fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi {
305        self.blockchains_assets_api.as_ref()
306    }
307
308    fn blockchains_assets_beta_api(
309        &self,
310    ) -> &dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi {
311        self.blockchains_assets_beta_api.as_ref()
312    }
313
314    fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi {
315        self.compliance_api.as_ref()
316    }
317
318    fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi {
319        self.contract_interactions_api.as_ref()
320    }
321
322    fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi {
323        self.contract_templates_api.as_ref()
324    }
325
326    fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi {
327        self.d_app_connections_api.as_ref()
328    }
329
330    fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi {
331        self.deployed_contracts_api.as_ref()
332    }
333
334    fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi {
335        self.exchange_accounts_api.as_ref()
336    }
337
338    fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi {
339        self.fiat_accounts_api.as_ref()
340    }
341
342    fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi {
343        self.fireblocks_network_api.as_ref()
344    }
345
346    fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi {
347        self.gas_station_api.as_ref()
348    }
349
350    fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi {
351        self.job_management_api.as_ref()
352    }
353
354    fn key_link_beta_api(&self) -> &dyn key_link_beta_api::KeyLinkBetaApi {
355        self.key_link_beta_api.as_ref()
356    }
357
358    fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi {
359        self.keys_beta_api.as_ref()
360    }
361
362    fn nfts_api(&self) -> &dyn nfts_api::NftsApi {
363        self.nfts_api.as_ref()
364    }
365
366    fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi {
367        self.off_exchange_api.as_ref()
368    }
369
370    fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi {
371        self.payments_payout_api.as_ref()
372    }
373
374    fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi {
375        self.policy_editor_beta_api.as_ref()
376    }
377
378    fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi {
379        self.smart_transfers_api.as_ref()
380    }
381
382    fn staking_api(&self) -> &dyn staking_api::StakingApi {
383        self.staking_api.as_ref()
384    }
385
386    fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi {
387        self.tokenization_api.as_ref()
388    }
389
390    fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi {
391        self.transactions_api.as_ref()
392    }
393
394    fn vaults_api(&self) -> &dyn vaults_api::VaultsApi {
395        self.vaults_api.as_ref()
396    }
397
398    fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi {
399        self.webhooks_api.as_ref()
400    }
401
402    fn webhooks_v2_beta_api(&self) -> &dyn webhooks_v2_beta_api::WebhooksV2BetaApi {
403        self.webhooks_v2_beta_api.as_ref()
404    }
405
406    fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi {
407        self.whitelisted_contracts_api.as_ref()
408    }
409
410    fn whitelisted_external_wallets_api(
411        &self,
412    ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi {
413        self.whitelisted_external_wallets_api.as_ref()
414    }
415
416    fn whitelisted_internal_wallets_api(
417        &self,
418    ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi {
419        self.whitelisted_internal_wallets_api.as_ref()
420    }
421
422    fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi {
423        self.workspace_management_api.as_ref()
424    }
425}