oxinbox_backend/routes/
mod.rs1pub mod ai;
2pub mod auth;
3pub mod geo;
4pub mod push_routes;
5pub mod query;
6pub mod tasks;
7pub mod voice;
8
9use axum::Json;
10use serde::Serialize;
11
12#[derive(Serialize)]
13pub struct HealthResponse {
14 pub status: &'static str,
15}
16
17pub async fn health() -> Json<HealthResponse> {
18 Json(HealthResponse { status: "ok" })
19}
20
21pub fn api_routes(state: &crate::auth::AuthState) -> axum::Router<crate::auth::AuthState> {
22 axum::Router::new()
23 .route("/health", axum::routing::get(health))
24 .merge(tasks::task_routes(state.clone()))
25 .merge(ai::ai_routes(state.clone()))
26 .merge(query::query_routes(state.clone()))
27 .merge(voice::voice_routes())
28 .route(
29 "/api/push/subscribe",
30 axum::routing::post(push_routes::subscribe_push),
31 )
32 .route(
33 "/api/push/unsubscribe",
34 axum::routing::post(push_routes::unsubscribe_push),
35 )
36 .merge(geo::geo_routes())
37 .route(
38 "/auth/register/start",
39 axum::routing::post(auth::start_registration),
40 )
41 .route(
42 "/auth/register/finish",
43 axum::routing::post(auth::finish_registration),
44 )
45 .route("/auth/login/start", axum::routing::post(auth::start_login))
46 .route(
47 "/auth/login/finish",
48 axum::routing::post(auth::finish_login),
49 )
50}