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>,
}