feagi_api/v1/
genome_dtos.rs1use serde::{Deserialize, Serialize};
9use utoipa::ToSchema;
10
11#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
13#[schema(example = json!({
14 "genome_id": "human_cortex_v1",
15 "title": "Human Cortex Model v1",
16 "version": "1.0.0",
17 "cortical_area_count": 52,
18 "brain_region_count": 12,
19 "created_at": "2025-01-15T10:30:00Z",
20 "modified_at": "2025-01-20T14:45:00Z"
21}))]
22pub struct GenomeInfoResponse {
23 pub genome_id: Option<String>,
25
26 pub title: Option<String>,
28
29 pub version: Option<String>,
31
32 pub cortical_area_count: usize,
34
35 pub brain_region_count: usize,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub created_at: Option<String>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub modified_at: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
49pub struct LoadGenomeRequest {
50 pub genome_json: String,
52
53 #[serde(default)]
55 pub reset_before_load: bool,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
60pub struct SaveGenomeRequest {
61 #[serde(default)]
63 pub genome_id: Option<String>,
64
65 #[serde(default)]
67 pub title: Option<String>,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
72pub struct SaveGenomeResponse {
73 pub genome_json: String,
75
76 pub genome_info: GenomeInfoResponse,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
82pub struct ValidateGenomeRequest {
83 pub genome_json: String,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
89pub struct ValidateGenomeResponse {
90 pub is_valid: bool,
92
93 #[serde(skip_serializing_if = "Option::is_none")]
95 pub errors: Option<Vec<String>>,
96}