use crate::serde_helpers::double_option;
use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataTemplate {
pub id: String,
pub r#type: MetadataTemplateType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(
rename = "templateKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub template_key: Option<String>,
#[serde(
rename = "displayName",
default,
skip_serializing_if = "Option::is_none"
)]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<MetadataTemplateFields>>,
#[serde(
rename = "copyInstanceOnItemCopy",
default,
skip_serializing_if = "Option::is_none"
)]
pub copy_instance_on_item_copy: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataTemplates {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub next_marker: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub prev_marker: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<MetadataTemplate>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct MetadataTemplateFieldsType(pub String);
impl MetadataTemplateFieldsType {
pub const STRING: &'static str = "string";
pub const FLOAT: &'static str = "float";
pub const DATE: &'static str = "date";
pub const ENUM: &'static str = "enum";
pub const MULTISELECT: &'static str = "multiSelect";
pub const TAXONOMY: &'static str = "taxonomy";
pub const INTEGER: &'static str = "integer";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataTemplateFieldsOptions {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FieldsOptionsRules {
#[serde(
rename = "multiSelect",
default,
skip_serializing_if = "Option::is_none"
)]
pub multi_select: Option<bool>,
#[serde(
rename = "selectableLevels",
default,
skip_serializing_if = "Option::is_none"
)]
pub selectable_levels: Option<Vec<i64>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetadataTemplateFields {
pub r#type: MetadataTemplateFieldsType,
pub key: String,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<MetadataTemplateFieldsOptions>>,
#[serde(
rename = "taxonomyKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub taxonomy_key: Option<String>,
#[serde(
rename = "taxonomyId",
default,
skip_serializing_if = "Option::is_none"
)]
pub taxonomy_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(
rename = "optionsRules",
default,
skip_serializing_if = "Option::is_none"
)]
pub options_rules: Option<FieldsOptionsRules>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct PutIdSchemaOp(pub String);
impl PutIdSchemaOp {
pub const EDITTEMPLATE: &'static str = "editTemplate";
pub const ADDFIELD: &'static str = "addField";
pub const REORDERFIELDS: &'static str = "reorderFields";
pub const ADDENUMOPTION: &'static str = "addEnumOption";
pub const REORDERENUMOPTIONS: &'static str = "reorderEnumOptions";
pub const REORDERMULTISELECTOPTIONS: &'static str = "reorderMultiSelectOptions";
pub const ADDMULTISELECTOPTION: &'static str = "addMultiSelectOption";
pub const EDITFIELD: &'static str = "editField";
pub const REMOVEFIELD: &'static str = "removeField";
pub const EDITENUMOPTION: &'static str = "editEnumOption";
pub const REMOVEENUMOPTION: &'static str = "removeEnumOption";
pub const EDITMULTISELECTOPTION: &'static str = "editMultiSelectOption";
pub const REMOVEMULTISELECTOPTION: &'static str = "removeMultiSelectOption";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateSchemaRequest {
pub op: PutIdSchemaOp,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<std::collections::HashMap<String, serde_json::Value>>,
#[serde(rename = "fieldKey", default, skip_serializing_if = "Option::is_none")]
pub field_key: Option<String>,
#[serde(rename = "fieldKeys", default, skip_serializing_if = "Option::is_none")]
pub field_keys: Option<Vec<String>>,
#[serde(
rename = "enumOptionKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub enum_option_key: Option<String>,
#[serde(
rename = "enumOptionKeys",
default,
skip_serializing_if = "Option::is_none"
)]
pub enum_option_keys: Option<Vec<String>>,
#[serde(
rename = "multiSelectOptionKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub multi_select_option_key: Option<String>,
#[serde(
rename = "multiSelectOptionKeys",
default,
skip_serializing_if = "Option::is_none"
)]
pub multi_select_option_keys: Option<Vec<String>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct CreateSchemaRequestFieldsType(pub String);
impl CreateSchemaRequestFieldsType {
pub const STRING: &'static str = "string";
pub const FLOAT: &'static str = "float";
pub const DATE: &'static str = "date";
pub const ENUM: &'static str = "enum";
pub const MULTISELECT: &'static str = "multiSelect";
pub const TAXONOMY: &'static str = "taxonomy";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PostSchemaFields {
pub r#type: CreateSchemaRequestFieldsType,
pub key: String,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<FieldsOptions>>,
#[serde(
rename = "taxonomyKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub taxonomy_key: Option<String>,
#[serde(
rename = "taxonomyId",
default,
skip_serializing_if = "Option::is_none"
)]
pub taxonomy_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(
rename = "optionsRules",
default,
skip_serializing_if = "Option::is_none"
)]
pub options_rules: Option<FieldsOptionsRules>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateSchemaRequest {
pub scope: String,
#[serde(
rename = "templateKey",
default,
skip_serializing_if = "Option::is_none"
)]
pub template_key: Option<String>,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<PostSchemaFields>>,
#[serde(
rename = "copyInstanceOnItemCopy",
default,
skip_serializing_if = "Option::is_none"
)]
pub copy_instance_on_item_copy: Option<bool>,
}