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}