Skip to main content

byokey_proxy/
openapi.rs

1//! `OpenAPI` specification aggregation.
2
3use utoipa::OpenApi;
4#[derive(OpenApi)]
5#[openapi(
6    paths(
7        crate::handler::status::status_handler,
8        crate::handler::accounts::accounts_handler,
9        crate::handler::accounts::remove_account_handler,
10        crate::handler::accounts::activate_account_handler,
11        crate::handler::ratelimits::ratelimits_handler,
12        crate::handler::usage::usage_handler,
13        crate::handler::usage::usage_history_handler,
14        crate::handler::models::list_models,
15        crate::handler::amp_threads::list_threads,
16        crate::handler::amp_threads::get_thread,
17    ),
18    components(schemas(
19        crate::handler::status::StatusResponse,
20        crate::handler::status::ServerInfo,
21        crate::handler::status::ProviderStatus,
22        crate::handler::status::AuthStatus,
23        crate::handler::accounts::AccountsResponse,
24        crate::handler::accounts::ProviderAccounts,
25        crate::handler::accounts::AccountDetail,
26        crate::handler::accounts::TokenStateDto,
27        crate::handler::ratelimits::RateLimitsResponse,
28        crate::handler::ratelimits::ProviderRateLimits,
29        crate::handler::ratelimits::AccountRateLimit,
30        byokey_types::RateLimitSnapshot,
31        crate::usage::UsageSnapshot,
32        crate::usage::ModelStats,
33        crate::handler::usage::UsageHistoryQuery,
34        crate::handler::usage::UsageHistoryResponse,
35        byokey_types::UsageBucket,
36        crate::handler::models::ModelsResponse,
37        crate::handler::models::ModelEntry,
38        crate::handler::amp_threads::AmpThreadListResponse,
39        crate::handler::amp_threads::AmpThreadListQuery,
40        crate::handler::amp_threads::AmpThreadSummary,
41        crate::handler::amp_threads::AmpThreadDetail,
42        crate::handler::amp_threads::AmpMessage,
43        crate::handler::amp_threads::AmpContentBlock,
44        crate::handler::amp_threads::AmpToolRun,
45        crate::handler::amp_threads::AmpUsage,
46        crate::handler::amp_threads::AmpMessageState,
47        crate::handler::amp_threads::AmpRelationship,
48    )),
49    tags((name = "management", description = "Daemon management API"))
50)]
51pub struct ApiDoc;
52
53/// Returns the `OpenAPI` specification as JSON.
54pub async fn openapi_json() -> axum::Json<utoipa::openapi::OpenApi> {
55    axum::Json(ApiDoc::openapi())
56}