//! Contract types API handler. use axum::{http::StatusCode, response::IntoResponse, Json}; use serde::Serialize; use utoipa::ToSchema; use crate::llm::templates; use crate::llm::templates::ContractTypeTemplate; // ============================================================================= // Contract Type Templates (Workflow Definitions) // ============================================================================= /// Response for listing contract types #[derive(Debug, Serialize, ToSchema)] #[serde(rename_all = "camelCase")] pub struct ListContractTypesResponse { pub contract_types: Vec, } /// List all available contract type templates #[utoipa::path( get, path = "/api/v1/contract-types", responses( (status = 200, description = "Contract types retrieved successfully", body = ListContractTypesResponse) ), tag = "templates" )] pub async fn list_contract_types() -> impl IntoResponse { let contract_types = templates::all_contract_types(); ( StatusCode::OK, Json(ListContractTypesResponse { contract_types }), ) .into_response() }