use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct WorkflowCapabilities {
#[serde(rename = "connectRules", skip_serializing_if = "Option::is_none")]
pub connect_rules: Option<Vec<models::AvailableWorkflowConnectRule>>,
#[serde(rename = "editorScope", skip_serializing_if = "Option::is_none")]
pub editor_scope: Option<EditorScope>,
#[serde(rename = "forgeRules", skip_serializing_if = "Option::is_none")]
pub forge_rules: Option<Vec<models::AvailableWorkflowForgeRule>>,
#[serde(rename = "projectTypes", skip_serializing_if = "Option::is_none")]
pub project_types: Option<Vec<ProjectTypes>>,
#[serde(rename = "systemRules", skip_serializing_if = "Option::is_none")]
pub system_rules: Option<Vec<models::AvailableWorkflowSystemRule>>,
#[serde(rename = "triggerRules", skip_serializing_if = "Option::is_none")]
pub trigger_rules: Option<Vec<models::AvailableWorkflowTriggers>>,
}
impl WorkflowCapabilities {
pub fn new() -> WorkflowCapabilities {
WorkflowCapabilities {
connect_rules: None,
editor_scope: None,
forge_rules: None,
project_types: None,
system_rules: None,
trigger_rules: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum EditorScope {
#[serde(rename = "PROJECT")]
Project,
#[serde(rename = "GLOBAL")]
Global,
}
impl Default for EditorScope {
fn default() -> EditorScope {
Self::Project
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ProjectTypes {
#[serde(rename = "software")]
Software,
#[serde(rename = "service_desk")]
ServiceDesk,
#[serde(rename = "product_discovery")]
ProductDiscovery,
#[serde(rename = "business")]
Business,
#[serde(rename = "unknown")]
Unknown,
}
impl Default for ProjectTypes {
fn default() -> ProjectTypes {
Self::Software
}
}