systemprompt-api 0.2.0

HTTP API server and gateway for systemprompt.io OS
Documentation
use super::{clients, endpoints, health, webauthn};
use axum::Router;
use axum::routing::{get, post};
use systemprompt_oauth::OAuthState;

pub fn router() -> Router<OAuthState> {
    Router::new()
        .merge(public_router())
        .merge(authenticated_router())
}

pub fn public_router() -> Router<OAuthState> {
    Router::new()
        .route("/health", get(health::handle_health_api))
        .route(
            "/session",
            post(endpoints::anonymous::generate_anonymous_token),
        )
        .route(
            "/webauthn/complete",
            get(endpoints::webauthn_complete::handle_webauthn_complete),
        )
        .route("/token", post(endpoints::token::handle_token))
        .route(
            "/authorize",
            get(endpoints::authorize::handle_authorize_get),
        )
        .route(
            "/authorize",
            post(endpoints::authorize::handle_authorize_post),
        )
        .route("/callback", get(endpoints::callback::handle_callback))
        .route("/register", post(endpoints::register::register_client))
        .route(
            "/register/{client_id}",
            get(endpoints::client_config::get_client_configuration),
        )
        .route(
            "/register/{client_id}",
            axum::routing::put(endpoints::client_config::update_client_configuration),
        )
        .route(
            "/register/{client_id}",
            axum::routing::delete(endpoints::client_config::delete_client_configuration),
        )
        .route(
            "/webauthn/register/start",
            post(webauthn::register::start_register),
        )
        .route(
            "/webauthn/register/finish",
            post(webauthn::register::finish_register),
        )
        .route(
            "/webauthn/auth/start",
            post(webauthn::authenticate::start_auth),
        )
        .route(
            "/webauthn/auth/finish",
            post(webauthn::authenticate::finish_auth),
        )
        .route("/webauthn/link/start", get(webauthn::link::start_link))
        .route("/webauthn/link/finish", post(webauthn::link::finish_link))
}

pub fn authenticated_router() -> Router<OAuthState> {
    Router::new()
        .nest("/clients", clients::router())
        .route(
            "/introspect",
            post(endpoints::introspect::handle_introspect),
        )
        .route("/revoke", post(endpoints::revoke::handle_revoke))
        .route("/userinfo", get(endpoints::userinfo::handle_userinfo))
        .route("/consent", get(endpoints::consent::handle_consent_get))
        .route("/consent", post(endpoints::consent::handle_consent_post))
}