openzeppelin_relayer/
openapi.rs1use crate::{
2 api::routes::{
3 docs::{plugin_docs, relayer_docs},
4 health, metrics,
5 },
6 domain, models,
7 services::plugins,
8};
9use utoipa::{
10 openapi::security::{Http, HttpAuthScheme, SecurityScheme},
11 Modify, OpenApi,
12};
13
14struct SecurityAddon;
15
16impl Modify for SecurityAddon {
17 fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
18 if let Some(components) = openapi.components.as_mut() {
19 components.add_security_scheme(
20 "bearer_auth",
21 SecurityScheme::Http(Http::new(HttpAuthScheme::Bearer)),
22 );
23 }
24 }
25}
26#[derive(OpenApi)]
29#[openapi(
30 modifiers(&SecurityAddon),
31 tags(
32 (name = "Relayers", description = "Relayers are the core components of the OpenZeppelin Relayer API. They are responsible for executing transactions on behalf of users and providing a secure and reliable way to interact with the blockchain."),
33 (name = "Plugins", description = "Plugins are TypeScript functions that can be used to extend the OpenZeppelin Relayer API functionality."),
34 (name = "Metrics", description = "Metrics are responsible for showing the metrics related to the relayers."),
35 (name = "Health", description = "Health is responsible for showing the health of the relayers.")
36 ),
37 info(description = "OpenZeppelin Relayer API", version = "0.1.0", title = "OpenZeppelin Relayer API", license(
38 name = "AGPL-3.0 license",
39 url = "https://github.com/OpenZeppelin/openzeppelin-relayer/blob/main/LICENSE"
40 ),
41 contact(
42 name = "OpenZeppelin",
43 url = "https://www.openzeppelin.com",
44 ),
45 terms_of_service = "https://www.openzeppelin.com/tos"),
46 paths(
47 relayer_docs::doc_get_relayer,
48 relayer_docs::doc_list_relayers,
49 relayer_docs::doc_get_relayer_balance,
50 relayer_docs::doc_update_relayer,
51 relayer_docs::doc_get_transaction_by_nonce,
52 relayer_docs::doc_get_transaction_by_id,
53 relayer_docs::doc_list_transactions,
54 relayer_docs::doc_get_relayer_status,
55 relayer_docs::doc_sign_typed_data,
56 relayer_docs::doc_sign,
57 relayer_docs::doc_cancel_transaction,
58 relayer_docs::doc_delete_pending_transactions,
59 relayer_docs::doc_rpc,
60 relayer_docs::doc_send_transaction,
61 relayer_docs::doc_replace_transaction,
62 health::health,
63 metrics::list_metrics,
64 metrics::metric_detail,
65 metrics::scrape_metrics,
66 plugin_docs::doc_call_plugin
67 ),
68 components(schemas(
69 models::RelayerResponse,
70 models::NetworkPolicyResponse,
71 models::EvmPolicyResponse,
72 models::SolanaPolicyResponse,
73 models::StellarPolicyResponse,
74 domain::RelayerUpdateRequest,
75 domain::SignDataRequest,
76 domain::SignTypedDataRequest,
77 models::PluginCallRequest,
78 plugins::PluginCallResponse
79 ))
80)]
81pub struct ApiDoc;