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")
}