// Code generated by oagen. DO NOT EDIT.

#[allow(unused_imports)]
use super::*;
#[allow(unused_imports)]
use crate::enums::*;
use serde::{Deserialize, Serialize};
/// Public step status object.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkflowRunStep {
    /// Logical ID of the block
    pub block_id: String,
    /// Full step ID with iteration context. Assigned ONCE at creation, never recomputed.
    pub step_id: String,
    /// Type of the block
    pub block_type: WorkflowRunStepBlockType,
    /// Label of the block
    pub block_label: String,
    /// Current step lifecycle
    pub lifecycle: WorkflowRunStepLifecycleOneOf,
    /// When the step started executing
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub started_at: Option<String>,
    /// When the step finished executing
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub completed_at: Option<String>,
    /// LLM model used by this step, when applicable
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub model: Option<String>,
    /// Container hierarchy from outermost to innermost. Empty when not inside any container.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub loop_containers: Option<Vec<ContainerContextData>>,
    /// Parent workflow run ID
    pub run_id: String,
    /// When the step doc was first persisted
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub created_at: Option<String>,
    /// Handle input payloads consumed by this step
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub handle_inputs: Option<std::collections::HashMap<String, HandlePayload>>,
    /// Handle output payloads produced by this step
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub handle_outputs: Option<std::collections::HashMap<String, HandlePayload>>,
    /// Canonical persisted result of this step
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub artifact: Option<StepArtifactRef>,
    /// Number of retry attempts
    ///
    /// Defaults to `0`.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub retry_count: Option<i64>,
}
