about summary refs log tree commit diff stats
path: root/crates/rocie-client/src/models
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-02-15 22:25:39 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-02-15 22:25:39 +0100
commitb467f7202f5c0c3970e39ea396a0cec0fd6a36ee (patch)
treeaa567f84f0c2891d03de5b6414507c2d9a5f4754 /crates/rocie-client/src/models
parentfeat(treewide): Add recipes and user handling (diff)
downloadserver-b467f7202f5c0c3970e39ea396a0cec0fd6a36ee.zip
chore(rocie-client): Re-generate the client api
Diffstat (limited to 'crates/rocie-client/src/models')
-rw-r--r--crates/rocie-client/src/models/barcode.rs6
-rw-r--r--crates/rocie-client/src/models/barcode_id.rs5
-rw-r--r--crates/rocie-client/src/models/content.rs42
-rw-r--r--crates/rocie-client/src/models/content_one_of.rs45
-rw-r--r--crates/rocie-client/src/models/content_one_of_1.rs45
-rw-r--r--crates/rocie-client/src/models/cooklang_recipe.rs46
-rw-r--r--crates/rocie-client/src/models/cookware.rs42
-rw-r--r--crates/rocie-client/src/models/ingredient.rs29
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of.rs29
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of_1.rs29
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of_1_not_registered_product.rs33
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of_2.rs29
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of_2_recipe_reference.rs29
-rw-r--r--crates/rocie-client/src/models/ingredient_one_of_registered_product.rs37
-rw-r--r--crates/rocie-client/src/models/item.rs51
-rw-r--r--crates/rocie-client/src/models/item_one_of.rs44
-rw-r--r--crates/rocie-client/src/models/item_one_of_1.rs42
-rw-r--r--crates/rocie-client/src/models/item_one_of_2.rs42
-rw-r--r--crates/rocie-client/src/models/item_one_of_3.rs42
-rw-r--r--crates/rocie-client/src/models/item_one_of_4.rs42
-rw-r--r--crates/rocie-client/src/models/login_info.rs14
-rw-r--r--crates/rocie-client/src/models/metadata.rs39
-rw-r--r--crates/rocie-client/src/models/mod.rs52
-rw-r--r--crates/rocie-client/src/models/name_and_url.rs30
-rw-r--r--crates/rocie-client/src/models/password_hash.rs5
-rw-r--r--crates/rocie-client/src/models/product.rs10
-rw-r--r--crates/rocie-client/src/models/product_amount.rs6
-rw-r--r--crates/rocie-client/src/models/product_id.rs5
-rw-r--r--crates/rocie-client/src/models/product_parent.rs1
-rw-r--r--crates/rocie-client/src/models/product_parent_id.rs5
-rw-r--r--crates/rocie-client/src/models/product_parent_stub.rs1
-rw-r--r--crates/rocie-client/src/models/product_stub.rs1
-rw-r--r--crates/rocie-client/src/models/recipe.rs24
-rw-r--r--crates/rocie-client/src/models/recipe_id.rs5
-rw-r--r--crates/rocie-client/src/models/recipe_parent.rs42
-rw-r--r--crates/rocie-client/src/models/recipe_parent_id.rs27
-rw-r--r--crates/rocie-client/src/models/recipe_parent_stub.rs36
-rw-r--r--crates/rocie-client/src/models/recipe_stub.rs18
-rw-r--r--crates/rocie-client/src/models/refined_recipe.rs33
-rw-r--r--crates/rocie-client/src/models/section.rs34
-rw-r--r--crates/rocie-client/src/models/step.rs34
-rw-r--r--crates/rocie-client/src/models/timer.rs34
-rw-r--r--crates/rocie-client/src/models/unit.rs9
-rw-r--r--crates/rocie-client/src/models/unit_amount.rs6
-rw-r--r--crates/rocie-client/src/models/unit_id.rs5
-rw-r--r--crates/rocie-client/src/models/unit_property.rs7
-rw-r--r--crates/rocie-client/src/models/unit_property_id.rs5
-rw-r--r--crates/rocie-client/src/models/unit_property_stub.rs1
-rw-r--r--crates/rocie-client/src/models/unit_stub.rs8
-rw-r--r--crates/rocie-client/src/models/user.rs1
-rw-r--r--crates/rocie-client/src/models/user_id.rs5
-rw-r--r--crates/rocie-client/src/models/user_stub.rs1
52 files changed, 1162 insertions, 51 deletions
diff --git a/crates/rocie-client/src/models/barcode.rs b/crates/rocie-client/src/models/barcode.rs
index ca950cd..f44caa9 100644
--- a/crates/rocie-client/src/models/barcode.rs
+++ b/crates/rocie-client/src/models/barcode.rs
@@ -21,6 +21,10 @@ pub struct Barcode {
 
 impl Barcode {
     pub fn new(amount: models::UnitAmount, id: models::BarcodeId) -> Barcode {
-        Barcode { amount, id }
+        Barcode {
+            amount,
+            id,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/barcode_id.rs b/crates/rocie-client/src/models/barcode_id.rs
index 581c07d..a081913 100644
--- a/crates/rocie-client/src/models/barcode_id.rs
+++ b/crates/rocie-client/src/models/barcode_id.rs
@@ -19,6 +19,9 @@ pub struct BarcodeId {
 
 impl BarcodeId {
     pub fn new(value: u32) -> BarcodeId {
-        BarcodeId { value }
+        BarcodeId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/content.rs b/crates/rocie-client/src/models/content.rs
new file mode 100644
index 0000000..8823605
--- /dev/null
+++ b/crates/rocie-client/src/models/content.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Content : Each type of content inside a section
+/// Each type of content inside a section
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum Content {
+    ContentOneOf(models::ContentOneOf),
+    ContentOneOf1(models::ContentOneOf1),
+}
+
+impl Default for Content {
+    fn default() -> Self {
+        Self::ContentOneOf(Default::default())
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "step")]
+    Step,
+    #[serde(rename = "text")]
+    Text,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Step
+    }
+}
+
diff --git a/crates/rocie-client/src/models/content_one_of.rs b/crates/rocie-client/src/models/content_one_of.rs
new file mode 100644
index 0000000..1c82c61
--- /dev/null
+++ b/crates/rocie-client/src/models/content_one_of.rs
@@ -0,0 +1,45 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// ContentOneOf : A step
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ContentOneOf {
+    #[serde(rename = "type")]
+    pub r#type: Type,
+    /// A step
+    #[serde(rename = "value")]
+    pub value: models::Step,
+}
+
+impl ContentOneOf {
+    /// A step
+    pub fn new(r#type: Type, value: models::Step) -> ContentOneOf {
+        ContentOneOf {
+            r#type,
+            value,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "step")]
+    Step,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Step
+    }
+}
+
diff --git a/crates/rocie-client/src/models/content_one_of_1.rs b/crates/rocie-client/src/models/content_one_of_1.rs
new file mode 100644
index 0000000..148999d
--- /dev/null
+++ b/crates/rocie-client/src/models/content_one_of_1.rs
@@ -0,0 +1,45 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// ContentOneOf1 : A paragraph of just text, no instructions
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ContentOneOf1 {
+    #[serde(rename = "type")]
+    pub r#type: Type,
+    /// A paragraph of just text, no instructions
+    #[serde(rename = "value")]
+    pub value: String,
+}
+
+impl ContentOneOf1 {
+    /// A paragraph of just text, no instructions
+    pub fn new(r#type: Type, value: String) -> ContentOneOf1 {
+        ContentOneOf1 {
+            r#type,
+            value,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "text")]
+    Text,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Text
+    }
+}
+
diff --git a/crates/rocie-client/src/models/cooklang_recipe.rs b/crates/rocie-client/src/models/cooklang_recipe.rs
new file mode 100644
index 0000000..3d4bb35
--- /dev/null
+++ b/crates/rocie-client/src/models/cooklang_recipe.rs
@@ -0,0 +1,46 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// CooklangRecipe : A complete recipe  The recipes do not have a name. You give it externally or maybe use some metadata key.  The recipe returned from parsing is a [`ScalableRecipe`].  The difference between [`ScalableRecipe`] and [`ScaledRecipe`] is in the values of the quantities of ingredients, cookware and timers. The parser returns [`ScalableValue`]s and after scaling, these are converted to regular [`Value`]s.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct CooklangRecipe {
+    /// All the cookware
+    #[serde(rename = "cookware")]
+    pub cookware: Vec<models::Cookware>,
+    /// All the ingredients
+    #[serde(rename = "ingredients")]
+    pub ingredients: Vec<models::Ingredient>,
+    /// Metadata as read from preamble
+    #[serde(rename = "metadata")]
+    pub metadata: models::Metadata,
+    /// Each of the sections  If no sections declared, a section without name is the default.
+    #[serde(rename = "sections")]
+    pub sections: Vec<models::Section>,
+    /// All the timers
+    #[serde(rename = "timers")]
+    pub timers: Vec<models::Timer>,
+}
+
+impl CooklangRecipe {
+    /// A complete recipe  The recipes do not have a name. You give it externally or maybe use some metadata key.  The recipe returned from parsing is a [`ScalableRecipe`].  The difference between [`ScalableRecipe`] and [`ScaledRecipe`] is in the values of the quantities of ingredients, cookware and timers. The parser returns [`ScalableValue`]s and after scaling, these are converted to regular [`Value`]s.
+    pub fn new(cookware: Vec<models::Cookware>, ingredients: Vec<models::Ingredient>, metadata: models::Metadata, sections: Vec<models::Section>, timers: Vec<models::Timer>) -> CooklangRecipe {
+        CooklangRecipe {
+            cookware,
+            ingredients,
+            metadata,
+            sections,
+            timers,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/cookware.rs b/crates/rocie-client/src/models/cookware.rs
new file mode 100644
index 0000000..c2dc745
--- /dev/null
+++ b/crates/rocie-client/src/models/cookware.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Cookware : A recipe cookware item
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Cookware {
+    /// Alias
+    #[serde(rename = "alias", skip_serializing_if = "Option::is_none")]
+    pub alias: Option<String>,
+    /// Name
+    #[serde(rename = "name")]
+    pub name: String,
+    /// Note
+    #[serde(rename = "note", skip_serializing_if = "Option::is_none")]
+    pub note: Option<String>,
+    /// Amount needed  Note that this is a value, not a quantity, so it doesn't have units.
+    #[serde(rename = "quantity", skip_serializing_if = "Option::is_none")]
+    pub quantity: Option<u32>,
+}
+
+impl Cookware {
+    /// A recipe cookware item
+    pub fn new(name: String) -> Cookware {
+        Cookware {
+            alias: None,
+            name,
+            note: None,
+            quantity: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient.rs b/crates/rocie-client/src/models/ingredient.rs
new file mode 100644
index 0000000..46bdef1
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient.rs
@@ -0,0 +1,29 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Ingredient : A recipe ingredient
+/// A recipe ingredient
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum Ingredient {
+    IngredientOneOf(models::IngredientOneOf),
+    IngredientOneOf1(models::IngredientOneOf1),
+    IngredientOneOf2(models::IngredientOneOf2),
+}
+
+impl Default for Ingredient {
+    fn default() -> Self {
+        Self::IngredientOneOf(Default::default())
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of.rs b/crates/rocie-client/src/models/ingredient_one_of.rs
new file mode 100644
index 0000000..5681115
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of.rs
@@ -0,0 +1,29 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOf : This ingredient is a registered product.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOf {
+    #[serde(rename = "RegisteredProduct")]
+    pub registered_product: models::IngredientOneOfRegisteredProduct,
+}
+
+impl IngredientOneOf {
+    /// This ingredient is a registered product.
+    pub fn new(registered_product: models::IngredientOneOfRegisteredProduct) -> IngredientOneOf {
+        IngredientOneOf {
+            registered_product,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of_1.rs b/crates/rocie-client/src/models/ingredient_one_of_1.rs
new file mode 100644
index 0000000..e35fa89
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of_1.rs
@@ -0,0 +1,29 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOf1 : This ingredient is a not yet registered product.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOf1 {
+    #[serde(rename = "NotRegisteredProduct")]
+    pub not_registered_product: models::IngredientOneOf1NotRegisteredProduct,
+}
+
+impl IngredientOneOf1 {
+    /// This ingredient is a not yet registered product.
+    pub fn new(not_registered_product: models::IngredientOneOf1NotRegisteredProduct) -> IngredientOneOf1 {
+        IngredientOneOf1 {
+            not_registered_product,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of_1_not_registered_product.rs b/crates/rocie-client/src/models/ingredient_one_of_1_not_registered_product.rs
new file mode 100644
index 0000000..bd7938f
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of_1_not_registered_product.rs
@@ -0,0 +1,33 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOf1NotRegisteredProduct : This ingredient is a not yet registered product.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOf1NotRegisteredProduct {
+    #[serde(rename = "name")]
+    pub name: String,
+    /// Quantity
+    #[serde(rename = "quantity", skip_serializing_if = "Option::is_none")]
+    pub quantity: Option<models::UnitAmount>,
+}
+
+impl IngredientOneOf1NotRegisteredProduct {
+    /// This ingredient is a not yet registered product.
+    pub fn new(name: String) -> IngredientOneOf1NotRegisteredProduct {
+        IngredientOneOf1NotRegisteredProduct {
+            name,
+            quantity: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of_2.rs b/crates/rocie-client/src/models/ingredient_one_of_2.rs
new file mode 100644
index 0000000..646a803
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of_2.rs
@@ -0,0 +1,29 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOf2 : This ingredient is a reference to another recipe.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOf2 {
+    #[serde(rename = "RecipeReference")]
+    pub recipe_reference: models::IngredientOneOf2RecipeReference,
+}
+
+impl IngredientOneOf2 {
+    /// This ingredient is a reference to another recipe.
+    pub fn new(recipe_reference: models::IngredientOneOf2RecipeReference) -> IngredientOneOf2 {
+        IngredientOneOf2 {
+            recipe_reference,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of_2_recipe_reference.rs b/crates/rocie-client/src/models/ingredient_one_of_2_recipe_reference.rs
new file mode 100644
index 0000000..5081008
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of_2_recipe_reference.rs
@@ -0,0 +1,29 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOf2RecipeReference : This ingredient is a reference to another recipe.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOf2RecipeReference {
+    #[serde(rename = "id")]
+    pub id: models::RecipeId,
+}
+
+impl IngredientOneOf2RecipeReference {
+    /// This ingredient is a reference to another recipe.
+    pub fn new(id: models::RecipeId) -> IngredientOneOf2RecipeReference {
+        IngredientOneOf2RecipeReference {
+            id,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/ingredient_one_of_registered_product.rs b/crates/rocie-client/src/models/ingredient_one_of_registered_product.rs
new file mode 100644
index 0000000..495911a
--- /dev/null
+++ b/crates/rocie-client/src/models/ingredient_one_of_registered_product.rs
@@ -0,0 +1,37 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// IngredientOneOfRegisteredProduct : This ingredient is a registered product.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct IngredientOneOfRegisteredProduct {
+    /// Alias
+    #[serde(rename = "alias", skip_serializing_if = "Option::is_none")]
+    pub alias: Option<String>,
+    #[serde(rename = "id")]
+    pub id: models::ProductId,
+    /// Quantity
+    #[serde(rename = "quantity", skip_serializing_if = "Option::is_none")]
+    pub quantity: Option<models::ProductAmount>,
+}
+
+impl IngredientOneOfRegisteredProduct {
+    /// This ingredient is a registered product.
+    pub fn new(id: models::ProductId) -> IngredientOneOfRegisteredProduct {
+        IngredientOneOfRegisteredProduct {
+            alias: None,
+            id,
+            quantity: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item.rs b/crates/rocie-client/src/models/item.rs
new file mode 100644
index 0000000..d3460bc
--- /dev/null
+++ b/crates/rocie-client/src/models/item.rs
@@ -0,0 +1,51 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Item : A step item  Except for [`Item::Text`], the value is the index where the item is located in it's corresponding [`Vec`] in the [`Recipe`].
+/// A step item  Except for [`Item::Text`], the value is the index where the item is located in it's corresponding [`Vec`] in the [`Recipe`].
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum Item {
+    ItemOneOf(models::ItemOneOf),
+    ItemOneOf1(models::ItemOneOf1),
+    ItemOneOf2(models::ItemOneOf2),
+    ItemOneOf3(models::ItemOneOf3),
+    ItemOneOf4(models::ItemOneOf4),
+}
+
+impl Default for Item {
+    fn default() -> Self {
+        Self::ItemOneOf(Default::default())
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "text")]
+    Text,
+    #[serde(rename = "ingredient")]
+    Ingredient,
+    #[serde(rename = "cookware")]
+    Cookware,
+    #[serde(rename = "timer")]
+    Timer,
+    #[serde(rename = "inlineQuantity")]
+    InlineQuantity,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Text
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item_one_of.rs b/crates/rocie-client/src/models/item_one_of.rs
new file mode 100644
index 0000000..af9bbcc
--- /dev/null
+++ b/crates/rocie-client/src/models/item_one_of.rs
@@ -0,0 +1,44 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// ItemOneOf : Just plain text
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ItemOneOf {
+    #[serde(rename = "type")]
+    pub r#type: Type,
+    #[serde(rename = "value")]
+    pub value: String,
+}
+
+impl ItemOneOf {
+    /// Just plain text
+    pub fn new(r#type: Type, value: String) -> ItemOneOf {
+        ItemOneOf {
+            r#type,
+            value,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "text")]
+    Text,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Text
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item_one_of_1.rs b/crates/rocie-client/src/models/item_one_of_1.rs
new file mode 100644
index 0000000..82888e7
--- /dev/null
+++ b/crates/rocie-client/src/models/item_one_of_1.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ItemOneOf1 {
+    #[serde(rename = "index")]
+    pub index: u32,
+    #[serde(rename = "type")]
+    pub r#type: Type,
+}
+
+impl ItemOneOf1 {
+    pub fn new(index: u32, r#type: Type) -> ItemOneOf1 {
+        ItemOneOf1 {
+            index,
+            r#type,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "ingredient")]
+    Ingredient,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Ingredient
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item_one_of_2.rs b/crates/rocie-client/src/models/item_one_of_2.rs
new file mode 100644
index 0000000..93fb342
--- /dev/null
+++ b/crates/rocie-client/src/models/item_one_of_2.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ItemOneOf2 {
+    #[serde(rename = "index")]
+    pub index: u32,
+    #[serde(rename = "type")]
+    pub r#type: Type,
+}
+
+impl ItemOneOf2 {
+    pub fn new(index: u32, r#type: Type) -> ItemOneOf2 {
+        ItemOneOf2 {
+            index,
+            r#type,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "cookware")]
+    Cookware,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Cookware
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item_one_of_3.rs b/crates/rocie-client/src/models/item_one_of_3.rs
new file mode 100644
index 0000000..eaae1ad
--- /dev/null
+++ b/crates/rocie-client/src/models/item_one_of_3.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ItemOneOf3 {
+    #[serde(rename = "index")]
+    pub index: u32,
+    #[serde(rename = "type")]
+    pub r#type: Type,
+}
+
+impl ItemOneOf3 {
+    pub fn new(index: u32, r#type: Type) -> ItemOneOf3 {
+        ItemOneOf3 {
+            index,
+            r#type,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "timer")]
+    Timer,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::Timer
+    }
+}
+
diff --git a/crates/rocie-client/src/models/item_one_of_4.rs b/crates/rocie-client/src/models/item_one_of_4.rs
new file mode 100644
index 0000000..2abaf27
--- /dev/null
+++ b/crates/rocie-client/src/models/item_one_of_4.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct ItemOneOf4 {
+    #[serde(rename = "index")]
+    pub index: u32,
+    #[serde(rename = "type")]
+    pub r#type: Type,
+}
+
+impl ItemOneOf4 {
+    pub fn new(index: u32, r#type: Type) -> ItemOneOf4 {
+        ItemOneOf4 {
+            index,
+            r#type,
+        }
+    }
+}
+/// 
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
+pub enum Type {
+    #[serde(rename = "inlineQuantity")]
+    InlineQuantity,
+}
+
+impl Default for Type {
+    fn default() -> Type {
+        Self::InlineQuantity
+    }
+}
+
diff --git a/crates/rocie-client/src/models/login_info.rs b/crates/rocie-client/src/models/login_info.rs
index 1f9215b..e99311b 100644
--- a/crates/rocie-client/src/models/login_info.rs
+++ b/crates/rocie-client/src/models/login_info.rs
@@ -13,16 +13,20 @@ use serde::{Deserialize, Serialize};
 
 #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
 pub struct LoginInfo {
-    /// The id of the user.
-    #[serde(rename = "id")]
-    pub id: models::UserId,
     /// The password of the user.
     #[serde(rename = "password")]
     pub password: String,
+    /// The user name of the user.
+    #[serde(rename = "user_name")]
+    pub user_name: String,
 }
 
 impl LoginInfo {
-    pub fn new(id: models::UserId, password: String) -> LoginInfo {
-        LoginInfo { id, password }
+    pub fn new(password: String, user_name: String) -> LoginInfo {
+        LoginInfo {
+            password,
+            user_name,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/metadata.rs b/crates/rocie-client/src/models/metadata.rs
new file mode 100644
index 0000000..c62007d
--- /dev/null
+++ b/crates/rocie-client/src/models/metadata.rs
@@ -0,0 +1,39 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Metadata {
+    #[serde(rename = "author", skip_serializing_if = "Option::is_none")]
+    pub author: Option<models::NameAndUrl>,
+    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
+    pub description: Option<String>,
+    #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
+    pub source: Option<models::NameAndUrl>,
+    #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
+    pub tags: Option<Vec<String>>,
+    #[serde(rename = "title", skip_serializing_if = "Option::is_none")]
+    pub title: Option<String>,
+}
+
+impl Metadata {
+    pub fn new() -> Metadata {
+        Metadata {
+            author: None,
+            description: None,
+            source: None,
+            tags: None,
+            title: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/mod.rs b/crates/rocie-client/src/models/mod.rs
index 135d612..53b0c13 100644
--- a/crates/rocie-client/src/models/mod.rs
+++ b/crates/rocie-client/src/models/mod.rs
@@ -2,8 +2,48 @@ pub mod barcode;
 pub use self::barcode::Barcode;
 pub mod barcode_id;
 pub use self::barcode_id::BarcodeId;
+pub mod content;
+pub use self::content::Content;
+pub mod content_one_of;
+pub use self::content_one_of::ContentOneOf;
+pub mod content_one_of_1;
+pub use self::content_one_of_1::ContentOneOf1;
+pub mod cooklang_recipe;
+pub use self::cooklang_recipe::CooklangRecipe;
+pub mod cookware;
+pub use self::cookware::Cookware;
+pub mod ingredient;
+pub use self::ingredient::Ingredient;
+pub mod ingredient_one_of;
+pub use self::ingredient_one_of::IngredientOneOf;
+pub mod ingredient_one_of_1;
+pub use self::ingredient_one_of_1::IngredientOneOf1;
+pub mod ingredient_one_of_1_not_registered_product;
+pub use self::ingredient_one_of_1_not_registered_product::IngredientOneOf1NotRegisteredProduct;
+pub mod ingredient_one_of_2;
+pub use self::ingredient_one_of_2::IngredientOneOf2;
+pub mod ingredient_one_of_2_recipe_reference;
+pub use self::ingredient_one_of_2_recipe_reference::IngredientOneOf2RecipeReference;
+pub mod ingredient_one_of_registered_product;
+pub use self::ingredient_one_of_registered_product::IngredientOneOfRegisteredProduct;
+pub mod item;
+pub use self::item::Item;
+pub mod item_one_of;
+pub use self::item_one_of::ItemOneOf;
+pub mod item_one_of_1;
+pub use self::item_one_of_1::ItemOneOf1;
+pub mod item_one_of_2;
+pub use self::item_one_of_2::ItemOneOf2;
+pub mod item_one_of_3;
+pub use self::item_one_of_3::ItemOneOf3;
+pub mod item_one_of_4;
+pub use self::item_one_of_4::ItemOneOf4;
 pub mod login_info;
 pub use self::login_info::LoginInfo;
+pub mod metadata;
+pub use self::metadata::Metadata;
+pub mod name_and_url;
+pub use self::name_and_url::NameAndUrl;
 pub mod password_hash;
 pub use self::password_hash::PasswordHash;
 pub mod product;
@@ -24,8 +64,20 @@ pub mod recipe;
 pub use self::recipe::Recipe;
 pub mod recipe_id;
 pub use self::recipe_id::RecipeId;
+pub mod recipe_parent;
+pub use self::recipe_parent::RecipeParent;
+pub mod recipe_parent_id;
+pub use self::recipe_parent_id::RecipeParentId;
+pub mod recipe_parent_stub;
+pub use self::recipe_parent_stub::RecipeParentStub;
 pub mod recipe_stub;
 pub use self::recipe_stub::RecipeStub;
+pub mod section;
+pub use self::section::Section;
+pub mod step;
+pub use self::step::Step;
+pub mod timer;
+pub use self::timer::Timer;
 pub mod unit;
 pub use self::unit::Unit;
 pub mod unit_amount;
diff --git a/crates/rocie-client/src/models/name_and_url.rs b/crates/rocie-client/src/models/name_and_url.rs
new file mode 100644
index 0000000..42ffd79
--- /dev/null
+++ b/crates/rocie-client/src/models/name_and_url.rs
@@ -0,0 +1,30 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct NameAndUrl {
+    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
+    pub name: Option<String>,
+    #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
+    pub url: Option<String>,
+}
+
+impl NameAndUrl {
+    pub fn new() -> NameAndUrl {
+        NameAndUrl {
+            name: None,
+            url: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/password_hash.rs b/crates/rocie-client/src/models/password_hash.rs
index b73a944..31413bf 100644
--- a/crates/rocie-client/src/models/password_hash.rs
+++ b/crates/rocie-client/src/models/password_hash.rs
@@ -21,6 +21,9 @@ pub struct PasswordHash {
 impl PasswordHash {
     /// This is stored as an PHC password string.  This type corresponds to the string representation of a PHC string as described in the [PHC string format specification][1].  PHC strings have the following format:  ```text $<id>[$v=<version>][$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]] ```
     pub fn new(value: String) -> PasswordHash {
-        PasswordHash { value }
+        PasswordHash {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product.rs b/crates/rocie-client/src/models/product.rs
index e2546e0..e5e7da1 100644
--- a/crates/rocie-client/src/models/product.rs
+++ b/crates/rocie-client/src/models/product.rs
@@ -26,7 +26,7 @@ pub struct Product {
     /// The name of the product.  This should be globally unique, to make searching easier for the user.
     #[serde(rename = "name")]
     pub name: String,
-    /// The parent this product has.  This is effectively it's anchor in the product DAG.
+    /// The parent this product has.  This is effectively it's anchor in the product DAG. None means, that it has no parents and as such is in the toplevel.
     #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
     pub parent: Option<models::ProductParentId>,
     /// The property this product is measured in.  (This is probably always either Mass, Volume or Quantity).
@@ -36,12 +36,7 @@ pub struct Product {
 
 impl Product {
     /// The base of rocie.  Products can be bought and consumed and represent, what you actually have in storage. Not every product is bought, as some can also be obtained by cooking a recipe.
-    pub fn new(
-        associated_bar_codes: Vec<models::Barcode>,
-        id: models::ProductId,
-        name: String,
-        unit_property: models::UnitPropertyId,
-    ) -> Product {
+    pub fn new(associated_bar_codes: Vec<models::Barcode>, id: models::ProductId, name: String, unit_property: models::UnitPropertyId) -> Product {
         Product {
             associated_bar_codes,
             description: None,
@@ -52,3 +47,4 @@ impl Product {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_amount.rs b/crates/rocie-client/src/models/product_amount.rs
index 66e967b..43ab725 100644
--- a/crates/rocie-client/src/models/product_amount.rs
+++ b/crates/rocie-client/src/models/product_amount.rs
@@ -21,6 +21,10 @@ pub struct ProductAmount {
 
 impl ProductAmount {
     pub fn new(amount: models::UnitAmount, product_id: models::ProductId) -> ProductAmount {
-        ProductAmount { amount, product_id }
+        ProductAmount {
+            amount,
+            product_id,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_id.rs b/crates/rocie-client/src/models/product_id.rs
index 0f0c3db..0f65bb8 100644
--- a/crates/rocie-client/src/models/product_id.rs
+++ b/crates/rocie-client/src/models/product_id.rs
@@ -19,6 +19,9 @@ pub struct ProductId {
 
 impl ProductId {
     pub fn new(value: uuid::Uuid) -> ProductId {
-        ProductId { value }
+        ProductId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_parent.rs b/crates/rocie-client/src/models/product_parent.rs
index 79aec15..7ce26c9 100644
--- a/crates/rocie-client/src/models/product_parent.rs
+++ b/crates/rocie-client/src/models/product_parent.rs
@@ -39,3 +39,4 @@ impl ProductParent {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_parent_id.rs b/crates/rocie-client/src/models/product_parent_id.rs
index 9701ab3..1305117 100644
--- a/crates/rocie-client/src/models/product_parent_id.rs
+++ b/crates/rocie-client/src/models/product_parent_id.rs
@@ -19,6 +19,9 @@ pub struct ProductParentId {
 
 impl ProductParentId {
     pub fn new(value: uuid::Uuid) -> ProductParentId {
-        ProductParentId { value }
+        ProductParentId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_parent_stub.rs b/crates/rocie-client/src/models/product_parent_stub.rs
index 878762e..a874502 100644
--- a/crates/rocie-client/src/models/product_parent_stub.rs
+++ b/crates/rocie-client/src/models/product_parent_stub.rs
@@ -33,3 +33,4 @@ impl ProductParentStub {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/product_stub.rs b/crates/rocie-client/src/models/product_stub.rs
index 2332d0f..76bc086 100644
--- a/crates/rocie-client/src/models/product_stub.rs
+++ b/crates/rocie-client/src/models/product_stub.rs
@@ -37,3 +37,4 @@ impl ProductStub {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/recipe.rs b/crates/rocie-client/src/models/recipe.rs
index e3b9d56..dfbbc03 100644
--- a/crates/rocie-client/src/models/recipe.rs
+++ b/crates/rocie-client/src/models/recipe.rs
@@ -11,18 +11,32 @@
 use crate::models;
 use serde::{Deserialize, Serialize};
 
+/// Recipe : An recipe.  These are transparently expressed in cooklang.
 #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
 pub struct Recipe {
+    /// The actual content of this recipe.
     #[serde(rename = "content")]
-    pub content: String,
+    pub content: models::CooklangRecipe,
+    /// The unique id of this recipe.
     #[serde(rename = "id")]
     pub id: models::RecipeId,
-    #[serde(rename = "path")]
-    pub path: String,
+    /// The name of the recipe.  This should be globally unique, to make searching easier for the user.
+    #[serde(rename = "name")]
+    pub name: String,
+    /// The parent this recipe has.  This is effectively it's anchor in the recipe DAG. None means, that it has no parents and as such is in the toplevel.
+    #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
+    pub parent: Option<models::RecipeParentId>,
 }
 
 impl Recipe {
-    pub fn new(content: String, id: models::RecipeId, path: String) -> Recipe {
-        Recipe { content, id, path }
+    /// An recipe.  These are transparently expressed in cooklang.
+    pub fn new(content: models::CooklangRecipe, id: models::RecipeId, name: String) -> Recipe {
+        Recipe {
+            content,
+            id,
+            name,
+            parent: None,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/recipe_id.rs b/crates/rocie-client/src/models/recipe_id.rs
index f08b956..7d13aed 100644
--- a/crates/rocie-client/src/models/recipe_id.rs
+++ b/crates/rocie-client/src/models/recipe_id.rs
@@ -19,6 +19,9 @@ pub struct RecipeId {
 
 impl RecipeId {
     pub fn new(value: uuid::Uuid) -> RecipeId {
-        RecipeId { value }
+        RecipeId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/recipe_parent.rs b/crates/rocie-client/src/models/recipe_parent.rs
new file mode 100644
index 0000000..50c5113
--- /dev/null
+++ b/crates/rocie-client/src/models/recipe_parent.rs
@@ -0,0 +1,42 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// RecipeParent : The grouping system for recipes.  Every recipe can have a related parent, and every parent can have a parent themselves. As such, the recipe list constructs a DAG.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct RecipeParent {
+    /// An optional description of this recipe parent.
+    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
+    pub description: Option<String>,
+    /// The id of the recipe parent.
+    #[serde(rename = "id")]
+    pub id: models::RecipeParentId,
+    /// The name of the recipe parent.  This should be globally unique, to make searching easier for the user.
+    #[serde(rename = "name")]
+    pub name: String,
+    /// The optional id of the parent of this recipe parent.  This must not form a cycle.
+    #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
+    pub parent: Option<models::RecipeParentId>,
+}
+
+impl RecipeParent {
+    /// The grouping system for recipes.  Every recipe can have a related parent, and every parent can have a parent themselves. As such, the recipe list constructs a DAG.
+    pub fn new(id: models::RecipeParentId, name: String) -> RecipeParent {
+        RecipeParent {
+            description: None,
+            id,
+            name,
+            parent: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/recipe_parent_id.rs b/crates/rocie-client/src/models/recipe_parent_id.rs
new file mode 100644
index 0000000..68f2e87
--- /dev/null
+++ b/crates/rocie-client/src/models/recipe_parent_id.rs
@@ -0,0 +1,27 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct RecipeParentId {
+    #[serde(rename = "value")]
+    pub value: uuid::Uuid,
+}
+
+impl RecipeParentId {
+    pub fn new(value: uuid::Uuid) -> RecipeParentId {
+        RecipeParentId {
+            value,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/recipe_parent_stub.rs b/crates/rocie-client/src/models/recipe_parent_stub.rs
new file mode 100644
index 0000000..1e04c06
--- /dev/null
+++ b/crates/rocie-client/src/models/recipe_parent_stub.rs
@@ -0,0 +1,36 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct RecipeParentStub {
+    /// A description.
+    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
+    pub description: Option<String>,
+    /// The name of the recipe parent
+    #[serde(rename = "name")]
+    pub name: String,
+    /// A parent of this recipe parent, otherwise the parent will be the root of the parent tree.
+    #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
+    pub parent: Option<models::RecipeParentId>,
+}
+
+impl RecipeParentStub {
+    pub fn new(name: String) -> RecipeParentStub {
+        RecipeParentStub {
+            description: None,
+            name,
+            parent: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/recipe_stub.rs b/crates/rocie-client/src/models/recipe_stub.rs
index 205faa6..803c8dd 100644
--- a/crates/rocie-client/src/models/recipe_stub.rs
+++ b/crates/rocie-client/src/models/recipe_stub.rs
@@ -16,13 +16,21 @@ pub struct RecipeStub {
     /// The content of this recipe, in cooklang format
     #[serde(rename = "content")]
     pub content: String,
-    /// The path the recipe should have
-    #[serde(rename = "path")]
-    pub path: String,
+    /// The globally unique name of this recipe
+    #[serde(rename = "name")]
+    pub name: String,
+    /// The optional parent of this recipe.
+    #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
+    pub parent: Option<models::RecipeParentId>,
 }
 
 impl RecipeStub {
-    pub fn new(content: String, path: String) -> RecipeStub {
-        RecipeStub { content, path }
+    pub fn new(content: String, name: String) -> RecipeStub {
+        RecipeStub {
+            content,
+            name,
+            parent: None,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/refined_recipe.rs b/crates/rocie-client/src/models/refined_recipe.rs
new file mode 100644
index 0000000..dc840d1
--- /dev/null
+++ b/crates/rocie-client/src/models/refined_recipe.rs
@@ -0,0 +1,33 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// RefinedRecipe : An refined recipe.  This is a decoding of a recipe's cooklang description, already processed in a way to be consumed by a client.
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct RefinedRecipe {
+    /// The unique id of this refined recipe's original recipe.
+    #[serde(rename = "id")]
+    pub id: models::RecipeId,
+    #[serde(rename = "ingridients")]
+    pub ingridients: Vec<models::ProductId>,
+}
+
+impl RefinedRecipe {
+    /// An refined recipe.  This is a decoding of a recipe's cooklang description, already processed in a way to be consumed by a client.
+    pub fn new(id: models::RecipeId, ingridients: Vec<models::ProductId>) -> RefinedRecipe {
+        RefinedRecipe {
+            id,
+            ingridients,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/section.rs b/crates/rocie-client/src/models/section.rs
new file mode 100644
index 0000000..e7a41f3
--- /dev/null
+++ b/crates/rocie-client/src/models/section.rs
@@ -0,0 +1,34 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Section : A section holding steps
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Section {
+    /// Content inside
+    #[serde(rename = "content")]
+    pub content: Vec<models::Content>,
+    /// Name of the section
+    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
+    pub name: Option<String>,
+}
+
+impl Section {
+    /// A section holding steps
+    pub fn new(content: Vec<models::Content>) -> Section {
+        Section {
+            content,
+            name: None,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/step.rs b/crates/rocie-client/src/models/step.rs
new file mode 100644
index 0000000..4ee76f3
--- /dev/null
+++ b/crates/rocie-client/src/models/step.rs
@@ -0,0 +1,34 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Step : A step holding step [`Item`]s
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Step {
+    /// [`Item`]s inside
+    #[serde(rename = "items")]
+    pub items: Vec<models::Item>,
+    /// Step number  The step numbers start at 1 in each section and increase with non text step.
+    #[serde(rename = "number")]
+    pub number: u32,
+}
+
+impl Step {
+    /// A step holding step [`Item`]s
+    pub fn new(items: Vec<models::Item>, number: u32) -> Step {
+        Step {
+            items,
+            number,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/timer.rs b/crates/rocie-client/src/models/timer.rs
new file mode 100644
index 0000000..6c06d61
--- /dev/null
+++ b/crates/rocie-client/src/models/timer.rs
@@ -0,0 +1,34 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system - server
+ *
+ * The version of the OpenAPI document: 0.1.0
+ * Contact: benedikt.peetz@b-peetz.de
+ * Generated by: https://openapi-generator.tech
+ */
+
+use crate::models;
+use serde::{Deserialize, Serialize};
+
+/// Timer : A recipe timer  If created from parsing, at least one of the fields is guaranteed to be [`Some`].
+#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Timer {
+    /// Name
+    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
+    pub name: Option<String>,
+    /// Time quantity
+    #[serde(rename = "quantity")]
+    pub quantity: models::UnitAmount,
+}
+
+impl Timer {
+    /// A recipe timer  If created from parsing, at least one of the fields is guaranteed to be [`Some`].
+    pub fn new(quantity: models::UnitAmount) -> Timer {
+        Timer {
+            name: None,
+            quantity,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/unit.rs b/crates/rocie-client/src/models/unit.rs
index 229866d..873cb33 100644
--- a/crates/rocie-client/src/models/unit.rs
+++ b/crates/rocie-client/src/models/unit.rs
@@ -34,13 +34,7 @@ pub struct Unit {
 }
 
 impl Unit {
-    pub fn new(
-        full_name_plural: String,
-        full_name_singular: String,
-        id: models::UnitId,
-        short_name: String,
-        unit_property: models::UnitPropertyId,
-    ) -> Unit {
+    pub fn new(full_name_plural: String, full_name_singular: String, id: models::UnitId, short_name: String, unit_property: models::UnitPropertyId) -> Unit {
         Unit {
             description: None,
             full_name_plural,
@@ -51,3 +45,4 @@ impl Unit {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_amount.rs b/crates/rocie-client/src/models/unit_amount.rs
index a8e4254..e4b1a54 100644
--- a/crates/rocie-client/src/models/unit_amount.rs
+++ b/crates/rocie-client/src/models/unit_amount.rs
@@ -21,6 +21,10 @@ pub struct UnitAmount {
 
 impl UnitAmount {
     pub fn new(unit: models::UnitId, value: u32) -> UnitAmount {
-        UnitAmount { unit, value }
+        UnitAmount {
+            unit,
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_id.rs b/crates/rocie-client/src/models/unit_id.rs
index 5a09994..8b08d95 100644
--- a/crates/rocie-client/src/models/unit_id.rs
+++ b/crates/rocie-client/src/models/unit_id.rs
@@ -19,6 +19,9 @@ pub struct UnitId {
 
 impl UnitId {
     pub fn new(value: uuid::Uuid) -> UnitId {
-        UnitId { value }
+        UnitId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_property.rs b/crates/rocie-client/src/models/unit_property.rs
index bfe5d9c..b4dfbe1 100644
--- a/crates/rocie-client/src/models/unit_property.rs
+++ b/crates/rocie-client/src/models/unit_property.rs
@@ -30,11 +30,7 @@ pub struct UnitProperty {
 
 impl UnitProperty {
     /// An unit property describes a property that can be measured by units. For example velocity, mass or volume.
-    pub fn new(
-        id: models::UnitPropertyId,
-        name: String,
-        units: Vec<models::UnitId>,
-    ) -> UnitProperty {
+    pub fn new(id: models::UnitPropertyId, name: String, units: Vec<models::UnitId>) -> UnitProperty {
         UnitProperty {
             description: None,
             id,
@@ -43,3 +39,4 @@ impl UnitProperty {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_property_id.rs b/crates/rocie-client/src/models/unit_property_id.rs
index 6e9e50e..aca567c 100644
--- a/crates/rocie-client/src/models/unit_property_id.rs
+++ b/crates/rocie-client/src/models/unit_property_id.rs
@@ -19,6 +19,9 @@ pub struct UnitPropertyId {
 
 impl UnitPropertyId {
     pub fn new(value: uuid::Uuid) -> UnitPropertyId {
-        UnitPropertyId { value }
+        UnitPropertyId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_property_stub.rs b/crates/rocie-client/src/models/unit_property_stub.rs
index 37ccb64..c43d91e 100644
--- a/crates/rocie-client/src/models/unit_property_stub.rs
+++ b/crates/rocie-client/src/models/unit_property_stub.rs
@@ -29,3 +29,4 @@ impl UnitPropertyStub {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/unit_stub.rs b/crates/rocie-client/src/models/unit_stub.rs
index accad53..162674f 100644
--- a/crates/rocie-client/src/models/unit_stub.rs
+++ b/crates/rocie-client/src/models/unit_stub.rs
@@ -26,12 +26,7 @@ pub struct UnitStub {
 }
 
 impl UnitStub {
-    pub fn new(
-        full_name_plural: String,
-        full_name_singular: String,
-        short_name: String,
-        unit_property: models::UnitPropertyId,
-    ) -> UnitStub {
+    pub fn new(full_name_plural: String, full_name_singular: String, short_name: String, unit_property: models::UnitPropertyId) -> UnitStub {
         UnitStub {
             description: None,
             full_name_plural,
@@ -41,3 +36,4 @@ impl UnitStub {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/user.rs b/crates/rocie-client/src/models/user.rs
index d7bdb99..7397275 100644
--- a/crates/rocie-client/src/models/user.rs
+++ b/crates/rocie-client/src/models/user.rs
@@ -39,3 +39,4 @@ impl User {
         }
     }
 }
+
diff --git a/crates/rocie-client/src/models/user_id.rs b/crates/rocie-client/src/models/user_id.rs
index 677fb37..3a67fd6 100644
--- a/crates/rocie-client/src/models/user_id.rs
+++ b/crates/rocie-client/src/models/user_id.rs
@@ -19,6 +19,9 @@ pub struct UserId {
 
 impl UserId {
     pub fn new(value: uuid::Uuid) -> UserId {
-        UserId { value }
+        UserId {
+            value,
+        }
     }
 }
+
diff --git a/crates/rocie-client/src/models/user_stub.rs b/crates/rocie-client/src/models/user_stub.rs
index e49b034..8f620db 100644
--- a/crates/rocie-client/src/models/user_stub.rs
+++ b/crates/rocie-client/src/models/user_stub.rs
@@ -33,3 +33,4 @@ impl UserStub {
         }
     }
 }
+