datafold 0.1.55

A personal database for data sovereignty with AI-powered ingestion
Documentation
use utoipa::OpenApi;

#[derive(OpenApi)]
#[openapi(
    paths(
        crate::server::routes::schema::list_schemas,
        crate::server::routes::schema::load_schemas,
        crate::server::routes::schema::get_schema,
        crate::server::routes::schema::approve_schema,
        crate::server::routes::schema::block_schema,
        crate::server::routes::query::execute_query,
        crate::server::routes::query::execute_mutation,
        crate::server::routes::query::list_transforms,
        crate::server::routes::query::get_transform_queue,
        crate::server::routes::query::add_to_transform_queue,
        crate::server::routes::query::get_all_backfills,
        crate::server::routes::query::get_active_backfills,
        crate::server::routes::query::get_backfill,
        crate::server::routes::query::get_transform_statistics,
        crate::server::routes::query::get_backfill_statistics,
        crate::server::routes::query::native_index_search,
        crate::server::routes::query::get_indexing_status,
        crate::server::routes::security::get_system_public_key,
        crate::server::routes::system::get_system_status,
        crate::server::routes::system::get_node_private_key,
        crate::server::routes::system::get_node_public_key,
        crate::server::routes::system::reset_database,
        crate::server::routes::system::reset_schema_service,
        crate::server::routes::system::get_database_config,
        crate::server::routes::system::update_database_config,
        crate::server::routes::log::list_logs,
        crate::server::routes::log::stream_logs,
        crate::server::routes::log::get_config,
        crate::server::routes::log::update_feature_level,
        crate::server::routes::log::reload_config,
        crate::server::routes::log::get_features,
        crate::ingestion::routes::process_json,
        crate::ingestion::routes::get_status,
        crate::ingestion::routes::health_check,
        crate::ingestion::routes::validate_json,
        crate::ingestion::routes::get_ingestion_config,
        crate::ingestion::routes::save_ingestion_config,
        crate::datafold_node::llm_query::routes::run_query,
        crate::datafold_node::llm_query::routes::analyze_query,
        crate::datafold_node::llm_query::routes::execute_query_plan,
        crate::datafold_node::llm_query::routes::chat,
        crate::datafold_node::llm_query::routes::get_backfill_status
    ),
    components(
        schemas(
            crate::schema::types::schema::Schema,
            crate::schema::types::schema::DeclarativeSchemaType,
            crate::schema::types::key_config::KeyConfig,
            crate::schema::types::key_value::KeyValue,
            crate::schema::types::field::variant::FieldVariant,
            crate::schema::types::field::single_field::SingleField,
            crate::schema::types::field::range_field::RangeField,
            crate::schema::types::field::hash_range_field::HashRangeField,
            crate::schema::types::field::common::FieldCommon,
            crate::schema::types::transform::Transform,
            crate::schema::types::declarative_schemas::DeclarativeSchemaDefinition,
            crate::schema::types::declarative_schemas::FieldDefinition,
            crate::atom::Molecule,
            crate::atom::MoleculeRange,
            crate::atom::MoleculeHashRange,
            crate::atom::MoleculeStatus,
            crate::atom::MoleculeUpdate,
            crate::ingestion::config::IngestionConfig,
            crate::ingestion::config::SavedConfig,
            crate::ingestion::config::AIProvider,
            crate::ingestion::config::OpenRouterConfig,
            crate::ingestion::config::OllamaConfig,
            crate::ingestion::core::IngestionRequest,
            crate::ingestion::IngestionResponse,
            crate::server::routes::log::LogLevelUpdate,
            crate::server::routes::log::LogConfigResponse,
            crate::server::routes::system::ResetDatabaseRequest,
            crate::server::routes::system::ResetDatabaseResponse,
            crate::server::routes::system::ResetSchemaServiceResponse,
            crate::server::routes::system::DatabaseConfigRequest,
            crate::server::routes::system::DatabaseConfigResponse,
            crate::server::routes::system::DatabaseConfigDto,
            crate::datafold_node::llm_query::types::RunQueryRequest,
            crate::datafold_node::llm_query::types::RunQueryResponse,
            crate::datafold_node::llm_query::types::AnalyzeQueryRequest,
            crate::datafold_node::llm_query::types::AnalyzeQueryResponse,
            crate::datafold_node::llm_query::types::ExecuteQueryPlanRequest,
            crate::datafold_node::llm_query::types::ExecuteQueryPlanResponse,
            crate::datafold_node::llm_query::types::QueryPlan,
            crate::datafold_node::llm_query::types::QueryExecutionStatus,
            crate::datafold_node::llm_query::types::ChatRequest,
            crate::datafold_node::llm_query::types::ChatResponse,
            crate::datafold_node::llm_query::types::BackfillStatusResponse,
            crate::db_operations::IndexResult,
            crate::fold_db_core::orchestration::IndexingStatus,
            crate::fold_db_core::orchestration::IndexingState,
            crate::server::routes::query::MutationResponse
        )
    ),
    tags(
        (name = "schemas", description = "Schema management endpoints"),
        (name = "query", description = "Query and mutation endpoints"),
        (name = "security", description = "Security and key management endpoints"),
        (name = "system", description = "System management endpoints"),
        (name = "logs", description = "Logging endpoints"),
        (name = "ingestion", description = "Ingestion endpoints"),
        (name = "llm-query", description = "LLM-powered natural language query endpoints")
    )
)]
struct ApiDoc;

pub fn build_openapi() -> String {
    serde_json::to_string(&ApiDoc::openapi())
        .expect("Failed to serialize OpenAPI documentation - this is a critical error")
}