orign 0.2.3

A globally distributed container orchestrator
Documentation
use nebulous::models::V1ResourceMeta;
use nebulous::resources::v1::containers::models::V1ContainerRequest;
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1HumanRequest {
    pub metadata: V1ResourceMeta,
    pub medium: String,
    pub channel: Option<String>,
    pub response_job: V1ContainerRequest,
}

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1UpdateHumanRequest {
    pub medium: Option<String>,
    pub channel: Option<String>,
    pub response_job: Option<V1ContainerRequest>,
}

#[derive(Deserialize, Serialize, Clone, Default)]
pub struct V1HumanStatus {
    pub is_active: Option<bool>,
    pub last_active: Option<String>,
}

#[derive(Deserialize, Serialize, Clone, Default)]
pub struct V1Human {
    pub metadata: V1ResourceMeta,
    pub medium: String,
    pub channel: Option<String>,
    pub response_job: V1ContainerRequest,
    pub status: V1HumanStatus,
}

#[derive(Deserialize, Serialize, Clone, Default)]
pub struct V1Humans {
    pub humans: Vec<V1Human>,
}

#[derive(Deserialize, Serialize, Clone, Default)]
pub struct V1FeedbackRequest {
    pub kind: String,
    pub request: Option<V1FeedbackRequestKind>,
}

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1Feedback {
    pub kind: String,
    pub request: V1FeedbackRequestKind,
    pub response: Option<V1FeedbackResponseKind>,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(untagged)]
pub enum V1FeedbackRequestKind {
    V1ApprovalRequest(V1ApprovalRequest),
}

impl Default for V1FeedbackRequestKind {
    fn default() -> Self {
        Self::V1ApprovalRequest(V1ApprovalRequest::default())
    }
}

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ApprovalRequest {
    pub content: String,
    pub messages: Option<serde_json::Value>,
    pub images: Option<Vec<String>>,
    pub videos: Option<Vec<String>>,
}

#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(untagged)]
pub enum V1FeedbackResponseKind {
    V1ApprovalResponse(V1ApprovalResponse),
}

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ApprovalResponse {
    pub content: String,
    pub messages: Option<serde_json::Value>,
    pub images: Option<Vec<String>>,
    pub videos: Option<Vec<String>>,
}

#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1FeedbackResponse {
    pub kind: String,
    pub response: Option<V1FeedbackResponseKind>,
}