turbomcp_protocol/context/
templates.rs

1//! Template context types for resource template operations.
2//!
3//! This module contains types for handling URI template operations,
4//! parameter validation, and template metadata management.
5
6use std::collections::HashMap;
7
8use serde::{Deserialize, Serialize};
9
10/// Context for resource template operations
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct ResourceTemplateContext {
13    /// Template name
14    pub template_name: String,
15    /// URI template pattern (RFC 6570)
16    pub uri_template: String,
17    /// Available template parameters
18    pub parameters: HashMap<String, TemplateParameter>,
19    /// Template description
20    pub description: Option<String>,
21    /// Template category/preset type
22    pub preset_type: Option<String>,
23    /// Template metadata
24    pub metadata: HashMap<String, serde_json::Value>,
25}
26
27/// Template parameter definition
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct TemplateParameter {
30    /// Parameter name
31    pub name: String,
32    /// Parameter type
33    pub param_type: String,
34    /// Whether parameter is required
35    pub required: bool,
36    /// Default value
37    pub default: Option<serde_json::Value>,
38    /// Parameter description
39    pub description: Option<String>,
40    /// Validation pattern (regex)
41    pub pattern: Option<String>,
42    /// Enum values (if applicable)
43    pub enum_values: Option<Vec<serde_json::Value>>,
44}