Skip to main content

ahri_tre_protocol/
transformation.rs

1use crate::refs::{TransformationRef, VersionRef};
2use crate::{refs::SessionSelector, study::StudySelector};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct TransformationListRequest {
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub session: Option<SessionSelector>,
9    pub study: StudySelector,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub struct TransformationSummary {
14    pub transformation: TransformationDetail,
15    pub inputs: Vec<VersionRef>,
16    pub outputs: Vec<VersionRef>,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20pub struct TransformationListResponse {
21    pub session: crate::session::SessionStatusPayload,
22    pub transformations: Vec<TransformationSummary>,
23}
24
25/// Analyst provenance metadata excludes private source paths and repository credentials.
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
27pub struct TransformationDetail {
28    pub transformation_id: TransformationRef,
29    pub transformation_type: ahri_tre_types::TransformationType,
30    pub description: String,
31    pub date_created: Option<chrono::DateTime<chrono::Utc>>,
32    pub created_by: Option<String>,
33}