diff options
Diffstat (limited to 'makima/src/server/handlers')
| -rw-r--r-- | makima/src/server/handlers/templates.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/makima/src/server/handlers/templates.rs b/makima/src/server/handlers/templates.rs index 868d5b4..6d95e86 100644 --- a/makima/src/server/handlers/templates.rs +++ b/makima/src/server/handlers/templates.rs @@ -5,6 +5,7 @@ use serde::{Deserialize, Serialize}; use utoipa::ToSchema; use crate::llm::templates; +use crate::llm::templates::ContractTypeTemplate; /// Query parameters for listing templates #[derive(Debug, Deserialize, ToSchema)] @@ -105,3 +106,33 @@ pub async fn get_template( .into_response(), } } + +// ============================================================================= +// 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<ContractTypeTemplate>, +} + +/// 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() +} |
