-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathopenapi.rs
More file actions
99 lines (96 loc) · 3.79 KB
/
openapi.rs
File metadata and controls
99 lines (96 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
use utoipa::openapi::security::{HttpAuthScheme, HttpBuilder, SecurityScheme};
use utoipa::OpenApi;
/// OpenAPI documentation configuration
#[derive(OpenApi)]
#[openapi(
info(
title = "NEAR AI Chat API",
description = "A comprehensive chat API for Private Chat.",
version = "1.0.0",
contact(name = "NEAR AI Team", email = "support@near.ai"),
license(name = "MIT",)
),
paths(
// Health endpoint
crate::routes::health_check,
// Auth endpoints
crate::routes::oauth::google_login,
crate::routes::oauth::github_login,
crate::routes::oauth::oauth_callback,
crate::routes::oauth::near_auth,
crate::routes::oauth::logout,
// User endpoints
crate::routes::users::get_current_user,
// Admin endpoints
crate::routes::admin::list_users,
crate::routes::admin::list_models,
crate::routes::admin::batch_upsert_models,
crate::routes::admin::delete_model,
crate::routes::admin::upsert_system_configs,
// Configs endpoints
crate::routes::configs::get_system_configs,
crate::routes::users::get_user_settings,
crate::routes::users::update_user_settings_partially,
crate::routes::users::update_user_settings,
// Attestation endpoints
crate::routes::attestation::get_attestation_report,
),
components(schemas(
// Request/Response models
crate::routes::HealthResponse,
crate::models::UserResponse,
crate::models::UserListResponse,
crate::models::LinkedAccountResponse,
crate::models::UserProfileResponse,
crate::models::AuthResponse,
crate::error::ApiErrorResponse,
// Auth request models
crate::routes::oauth::LogoutRequest,
crate::routes::oauth::NearAuthRequest,
crate::routes::oauth::NearAuthResponse,
// User settings models
crate::models::UserSettingsResponse,
crate::models::UpdateUserSettingsPartiallyRequest,
crate::models::UpdateUserSettingsRequest,
// Model settings / model admin models
crate::models::ModelResponse,
crate::models::ModelListResponse,
crate::models::BatchUpsertModelsRequest,
crate::models::UpdateModelRequest,
// System configs models
crate::models::SystemConfigsResponse,
crate::models::UpdateSystemConfigsRequest,
// Attestation models
crate::models::ApiGatewayAttestation,
crate::models::ModelAttestation,
crate::models::CombinedAttestationReport,
)),
modifiers(&SecurityAddon),
tags(
(name = "Health", description = "Health check and service status endpoints"),
(name = "Auth", description = "OAuth authentication endpoints"),
(name = "Users", description = "User profile management endpoints"),
(name = "Admin", description = "Admin management endpoints"),
(name = "Configs", description = "System configuration endpoints"),
(name = "attestation", description = "Attestation reporting endpoints for TEE verification")
)
)]
pub struct ApiDoc;
/// Security scheme addon for Bearer token authentication
struct SecurityAddon;
impl utoipa::Modify for SecurityAddon {
fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
if let Some(components) = openapi.components.as_mut() {
components.add_security_scheme(
"session_token",
SecurityScheme::Http(
HttpBuilder::new()
.scheme(HttpAuthScheme::Bearer)
.bearer_format("session_token")
.description(Some("Session token obtained from OAuth authentication"))
.build(),
),
)
}
}
}