feagi_api/v1/
brain_region_dtos.rs1use serde::{Deserialize, Serialize};
9use utoipa::ToSchema;
10
11#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
13#[schema(example = json!({
14 "region_id": "visual_cortex",
15 "name": "Visual Cortex",
16 "region_type": "Sensory",
17 "parent_id": "neocortex",
18 "cortical_areas": ["v1", "v2", "v4"],
19 "child_count": 3
20}))]
21pub struct BrainRegionSummary {
22 pub region_id: String,
24
25 pub name: String,
27
28 pub region_type: String,
30
31 pub parent_id: Option<String>,
33
34 pub cortical_areas: Vec<String>,
36
37 pub child_count: usize,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
43#[schema(example = json!({
44 "region_id": "visual_cortex",
45 "name": "Visual Cortex",
46 "region_type": "Sensory",
47 "parent_id": "neocortex",
48 "cortical_areas": ["v1", "v2", "v4"],
49 "child_regions": ["primary_visual", "secondary_visual"],
50 "properties": {}
51}))]
52pub struct BrainRegionDetail {
53 pub region_id: String,
55
56 pub name: String,
58
59 pub region_type: String,
61
62 pub parent_id: Option<String>,
64
65 pub cortical_areas: Vec<String>,
67
68 pub child_regions: Vec<String>,
70
71 pub properties: serde_json::Value,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
77pub struct CreateBrainRegionRequest {
78 pub region_id: String,
80
81 pub name: String,
83
84 pub region_type: String,
86
87 #[serde(default)]
89 pub parent_id: Option<String>,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
94pub struct BrainRegionListResponse {
95 pub brain_regions: Vec<BrainRegionSummary>,
97
98 pub total_count: usize,
100}