about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--crates/rocie-client/.openapi-generator-ignore17
-rw-r--r--crates/rocie-client/.openapi-generator/FILES7
-rw-r--r--crates/rocie-client/README.md9
-rw-r--r--crates/rocie-client/docs/ApiGetInventoryApi.md2
-rw-r--r--crates/rocie-client/docs/ApiGetProductApi.md2
-rw-r--r--crates/rocie-client/docs/ApiGetUnitApi.md2
-rw-r--r--crates/rocie-client/docs/ApiSetBarcodeApi.md4
-rw-r--r--crates/rocie-client/docs/ApiSetProductApi.md6
-rw-r--r--crates/rocie-client/docs/ApiSetUnitApi.md4
-rw-r--r--crates/rocie-client/docs/Barcode.md2
-rw-r--r--crates/rocie-client/docs/BarcodeId.md11
-rw-r--r--crates/rocie-client/docs/Product.md2
-rw-r--r--crates/rocie-client/docs/ProductAmount.md2
-rw-r--r--crates/rocie-client/docs/ProductId.md11
-rw-r--r--crates/rocie-client/docs/ProductStub.md2
-rw-r--r--crates/rocie-client/docs/Unit.md2
-rw-r--r--crates/rocie-client/docs/UnitAmount.md4
-rw-r--r--crates/rocie-client/docs/UnitId.md11
-rw-r--r--crates/rocie-client/src/apis/api_get_inventory_api.rs4
-rw-r--r--crates/rocie-client/src/apis/api_get_product_api.rs4
-rw-r--r--crates/rocie-client/src/apis/api_get_unit_api.rs4
-rw-r--r--crates/rocie-client/src/apis/api_set_barcode_api.rs8
-rw-r--r--crates/rocie-client/src/apis/api_set_product_api.rs10
-rw-r--r--crates/rocie-client/src/apis/api_set_unit_api.rs6
-rw-r--r--crates/rocie-client/src/implies.rs26
-rw-r--r--crates/rocie-client/src/lib.rs1
-rw-r--r--crates/rocie-client/src/models/barcode.rs8
-rw-r--r--crates/rocie-client/src/models/barcode_id.rs27
-rw-r--r--crates/rocie-client/src/models/mod.rs6
-rw-r--r--crates/rocie-client/src/models/product.rs4
-rw-r--r--crates/rocie-client/src/models/product_amount.rs8
-rw-r--r--crates/rocie-client/src/models/product_id.rs27
-rw-r--r--crates/rocie-client/src/models/product_stub.rs4
-rw-r--r--crates/rocie-client/src/models/unit.rs4
-rw-r--r--crates/rocie-client/src/models/unit_amount.rs6
-rw-r--r--crates/rocie-client/src/models/unit_id.rs27
36 files changed, 213 insertions, 71 deletions
diff --git a/crates/rocie-client/.openapi-generator-ignore b/crates/rocie-client/.openapi-generator-ignore
index b0147e0..d0e9b85 100644
--- a/crates/rocie-client/.openapi-generator-ignore
+++ b/crates/rocie-client/.openapi-generator-ignore
@@ -4,20 +4,7 @@
 # Use this file to prevent files from being overwritten by the generator.
 # The patterns follow closely to .gitignore or .dockerignore.
 
-# As an example, the C# client generator defines ApiClient.cs.
-# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
 Cargo.toml
 
-# You can match any string of characters against a directory, file or extension with a single asterisk (*):
-#foo/*/qux
-# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
-
-# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
-#foo/**/qux
-# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
-
-# You can also negate patterns with an exclamation (!).
-# For example, you can ignore all files in a docs folder with the file extension .md:
-#docs/*.md
-# Then explicitly reverse the ignore rule for a single file:
-#!docs/README.md
+src/lib.rs
+src/implies.rs
diff --git a/crates/rocie-client/.openapi-generator/FILES b/crates/rocie-client/.openapi-generator/FILES
index 496c722..8306709 100644
--- a/crates/rocie-client/.openapi-generator/FILES
+++ b/crates/rocie-client/.openapi-generator/FILES
@@ -8,11 +8,14 @@ docs/ApiSetBarcodeApi.md
 docs/ApiSetProductApi.md
 docs/ApiSetUnitApi.md
 docs/Barcode.md
+docs/BarcodeId.md
 docs/Product.md
 docs/ProductAmount.md
+docs/ProductId.md
 docs/ProductStub.md
 docs/Unit.md
 docs/UnitAmount.md
+docs/UnitId.md
 docs/UnitStub.md
 git_push.sh
 src/apis/api_get_inventory_api.rs
@@ -23,12 +26,14 @@ src/apis/api_set_product_api.rs
 src/apis/api_set_unit_api.rs
 src/apis/configuration.rs
 src/apis/mod.rs
-src/lib.rs
 src/models/barcode.rs
+src/models/barcode_id.rs
 src/models/mod.rs
 src/models/product.rs
 src/models/product_amount.rs
+src/models/product_id.rs
 src/models/product_stub.rs
 src/models/unit.rs
 src/models/unit_amount.rs
+src/models/unit_id.rs
 src/models/unit_stub.rs
diff --git a/crates/rocie-client/README.md b/crates/rocie-client/README.md
index 346da8d..38c4f5e 100644
--- a/crates/rocie-client/README.md
+++ b/crates/rocie-client/README.md
@@ -1,4 +1,4 @@
-# Rust API client for openapi
+# Rust API client for rocie-client
 
 An enterprise grocery management system
 
@@ -14,10 +14,10 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat
 
 ## Installation
 
-Put the package under your project folder in a directory named `openapi` and add the following to `Cargo.toml` under `[dependencies]`:
+Put the package under your project folder in a directory named `rocie-client` and add the following to `Cargo.toml` under `[dependencies]`:
 
 ```
-openapi = { path = "./openapi" }
+rocie-client = { path = "./rocie-client" }
 ```
 
 ## Documentation for API Endpoints
@@ -41,11 +41,14 @@ Class | Method | HTTP request | Description
 ## Documentation For Models
 
  - [Barcode](docs/Barcode.md)
+ - [BarcodeId](docs/BarcodeId.md)
  - [Product](docs/Product.md)
  - [ProductAmount](docs/ProductAmount.md)
+ - [ProductId](docs/ProductId.md)
  - [ProductStub](docs/ProductStub.md)
  - [Unit](docs/Unit.md)
  - [UnitAmount](docs/UnitAmount.md)
+ - [UnitId](docs/UnitId.md)
  - [UnitStub](docs/UnitStub.md)
 
 
diff --git a/crates/rocie-client/docs/ApiGetInventoryApi.md b/crates/rocie-client/docs/ApiGetInventoryApi.md
index 0310b96..92a53f9 100644
--- a/crates/rocie-client/docs/ApiGetInventoryApi.md
+++ b/crates/rocie-client/docs/ApiGetInventoryApi.md
@@ -18,7 +18,7 @@ Get the amount of an product
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **uuid::Uuid** | Product id | [required] |
+**id** | [**ProductId**](.md) | Product id | [required] |
 
 ### Return type
 
diff --git a/crates/rocie-client/docs/ApiGetProductApi.md b/crates/rocie-client/docs/ApiGetProductApi.md
index 58955c6..bc991c5 100644
--- a/crates/rocie-client/docs/ApiGetProductApi.md
+++ b/crates/rocie-client/docs/ApiGetProductApi.md
@@ -19,7 +19,7 @@ Get Product by id
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **uuid::Uuid** | Product id | [required] |
+**id** | [**ProductId**](.md) | Product id | [required] |
 
 ### Return type
 
diff --git a/crates/rocie-client/docs/ApiGetUnitApi.md b/crates/rocie-client/docs/ApiGetUnitApi.md
index 3ac44c0..f539aec 100644
--- a/crates/rocie-client/docs/ApiGetUnitApi.md
+++ b/crates/rocie-client/docs/ApiGetUnitApi.md
@@ -19,7 +19,7 @@ Get Unit by id
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **uuid::Uuid** | Unit id | [required] |
+**id** | [**UnitId**](.md) | Unit id | [required] |
 
 ### Return type
 
diff --git a/crates/rocie-client/docs/ApiSetBarcodeApi.md b/crates/rocie-client/docs/ApiSetBarcodeApi.md
index 2075bb9..d77fa6d 100644
--- a/crates/rocie-client/docs/ApiSetBarcodeApi.md
+++ b/crates/rocie-client/docs/ApiSetBarcodeApi.md
@@ -19,7 +19,7 @@ Buy an barcode
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **i32** | The numeric value of the barcode | [required] |
+**id** | [**BarcodeId**](.md) | The numeric value of the barcode | [required] |
 
 ### Return type
 
@@ -47,7 +47,7 @@ Consume an barcode
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **i32** | The numeric value of the barcode | [required] |
+**id** | [**BarcodeId**](.md) | The numeric value of the barcode | [required] |
 **unit_amount** | [**UnitAmount**](UnitAmount.md) |  | [required] |
 
 ### Return type
diff --git a/crates/rocie-client/docs/ApiSetProductApi.md b/crates/rocie-client/docs/ApiSetProductApi.md
index 6166887..bb4ca4e 100644
--- a/crates/rocie-client/docs/ApiSetProductApi.md
+++ b/crates/rocie-client/docs/ApiSetProductApi.md
@@ -19,7 +19,7 @@ Associate a barcode with a product
 
 Name | Type | Description  | Required | Notes
 ------------- | ------------- | ------------- | ------------- | -------------
-**id** | **uuid::Uuid** | The id of the product to associated the barcode with | [required] |
+**id** | [**ProductId**](.md) | The id of the product to associated the barcode with | [required] |
 **barcode** | [**Barcode**](Barcode.md) |  | [required] |
 
 ### Return type
@@ -40,7 +40,7 @@ No authorization required
 
 ## register_product
 
-> uuid::Uuid register_product(product_stub)
+> models::ProductId register_product(product_stub)
 Register a product
 
 ### Parameters
@@ -52,7 +52,7 @@ Name | Type | Description  | Required | Notes
 
 ### Return type
 
-[**uuid::Uuid**](uuid::Uuid.md)
+[**models::ProductId**](ProductId.md)
 
 ### Authorization
 
diff --git a/crates/rocie-client/docs/ApiSetUnitApi.md b/crates/rocie-client/docs/ApiSetUnitApi.md
index 6d6d397..ebe8e5c 100644
--- a/crates/rocie-client/docs/ApiSetUnitApi.md
+++ b/crates/rocie-client/docs/ApiSetUnitApi.md
@@ -10,7 +10,7 @@ Method | HTTP request | Description
 
 ## register_unit
 
-> uuid::Uuid register_unit(unit_stub)
+> models::UnitId register_unit(unit_stub)
 Register an Unit
 
 ### Parameters
@@ -22,7 +22,7 @@ Name | Type | Description  | Required | Notes
 
 ### Return type
 
-[**uuid::Uuid**](uuid::Uuid.md)
+[**models::UnitId**](UnitId.md)
 
 ### Authorization
 
diff --git a/crates/rocie-client/docs/Barcode.md b/crates/rocie-client/docs/Barcode.md
index 7e6f4fb..622b82d 100644
--- a/crates/rocie-client/docs/Barcode.md
+++ b/crates/rocie-client/docs/Barcode.md
@@ -5,7 +5,7 @@
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **amount** | [**models::UnitAmount**](UnitAmount.md) |  | 
-**id** | **i32** |  | 
+**id** | [**models::BarcodeId**](BarcodeId.md) |  | 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 
diff --git a/crates/rocie-client/docs/BarcodeId.md b/crates/rocie-client/docs/BarcodeId.md
new file mode 100644
index 0000000..630e07f
--- /dev/null
+++ b/crates/rocie-client/docs/BarcodeId.md
@@ -0,0 +1,11 @@
+# BarcodeId
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**value** | **u32** |  | 
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/crates/rocie-client/docs/Product.md b/crates/rocie-client/docs/Product.md
index 3995429..6f0f914 100644
--- a/crates/rocie-client/docs/Product.md
+++ b/crates/rocie-client/docs/Product.md
@@ -6,7 +6,7 @@ Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **associated_bar_codes** | [**Vec<models::Barcode>**](Barcode.md) |  | 
 **description** | Option<**String**> |  | [optional]
-**id** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
+**id** | [**models::ProductId**](ProductId.md) |  | 
 **name** | **String** |  | 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/crates/rocie-client/docs/ProductAmount.md b/crates/rocie-client/docs/ProductAmount.md
index d6e869c..ac5d9cc 100644
--- a/crates/rocie-client/docs/ProductAmount.md
+++ b/crates/rocie-client/docs/ProductAmount.md
@@ -5,7 +5,7 @@
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **amount** | [**models::UnitAmount**](UnitAmount.md) |  | 
-**product_id** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
+**product_id** | [**models::ProductId**](ProductId.md) |  | 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 
diff --git a/crates/rocie-client/docs/ProductId.md b/crates/rocie-client/docs/ProductId.md
new file mode 100644
index 0000000..90dc866
--- /dev/null
+++ b/crates/rocie-client/docs/ProductId.md
@@ -0,0 +1,11 @@
+# ProductId
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**value** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/crates/rocie-client/docs/ProductStub.md b/crates/rocie-client/docs/ProductStub.md
index d0b0db8..4d4ffde 100644
--- a/crates/rocie-client/docs/ProductStub.md
+++ b/crates/rocie-client/docs/ProductStub.md
@@ -6,7 +6,7 @@ Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **description** | Option<**String**> |  | [optional]
 **name** | **String** |  | 
-**parent** | Option<[**uuid::Uuid**](uuid::Uuid.md)> |  | [optional]
+**parent** | Option<[**models::ProductId**](ProductId.md)> |  | [optional]
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 
diff --git a/crates/rocie-client/docs/Unit.md b/crates/rocie-client/docs/Unit.md
index 9fb95a5..5e86ab3 100644
--- a/crates/rocie-client/docs/Unit.md
+++ b/crates/rocie-client/docs/Unit.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
 **description** | Option<**String**> |  | [optional]
 **full_name_plural** | **String** |  | 
 **full_name_singular** | **String** |  | 
-**id** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
+**id** | [**models::UnitId**](UnitId.md) |  | 
 **short_name** | **String** |  | 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/crates/rocie-client/docs/UnitAmount.md b/crates/rocie-client/docs/UnitAmount.md
index f0c1b5f..1546f57 100644
--- a/crates/rocie-client/docs/UnitAmount.md
+++ b/crates/rocie-client/docs/UnitAmount.md
@@ -4,8 +4,8 @@
 
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
-**unit** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
-**value** | **i64** |  | 
+**unit** | [**models::UnitId**](UnitId.md) |  | 
+**value** | **u32** |  | 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
 
diff --git a/crates/rocie-client/docs/UnitId.md b/crates/rocie-client/docs/UnitId.md
new file mode 100644
index 0000000..7d0979c
--- /dev/null
+++ b/crates/rocie-client/docs/UnitId.md
@@ -0,0 +1,11 @@
+# UnitId
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**value** | [**uuid::Uuid**](uuid::Uuid.md) |  | 
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/crates/rocie-client/src/apis/api_get_inventory_api.rs b/crates/rocie-client/src/apis/api_get_inventory_api.rs
index 8cec3d4..965d3e3 100644
--- a/crates/rocie-client/src/apis/api_get_inventory_api.rs
+++ b/crates/rocie-client/src/apis/api_get_inventory_api.rs
@@ -25,11 +25,11 @@ pub enum AmountByIdError {
 }
 
 
-pub async fn amount_by_id(configuration: &configuration::Configuration, id: &str) -> Result<models::ProductAmount, Error<AmountByIdError>> {
+pub async fn amount_by_id(configuration: &configuration::Configuration, id: models::ProductId) -> Result<models::ProductAmount, Error<AmountByIdError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
 
-    let uri_str = format!("{}/inventory/{id}", configuration.base_path, id=crate::apis::urlencode(p_id));
+    let uri_str = format!("{}/inventory/{id}", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
diff --git a/crates/rocie-client/src/apis/api_get_product_api.rs b/crates/rocie-client/src/apis/api_get_product_api.rs
index a8f4c17..88c680b 100644
--- a/crates/rocie-client/src/apis/api_get_product_api.rs
+++ b/crates/rocie-client/src/apis/api_get_product_api.rs
@@ -33,11 +33,11 @@ pub enum ProductsError {
 }
 
 
-pub async fn product_by_id(configuration: &configuration::Configuration, id: &str) -> Result<models::Product, Error<ProductByIdError>> {
+pub async fn product_by_id(configuration: &configuration::Configuration, id: models::ProductId) -> Result<models::Product, Error<ProductByIdError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
 
-    let uri_str = format!("{}/product/{id}", configuration.base_path, id=crate::apis::urlencode(p_id));
+    let uri_str = format!("{}/product/{id}", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
diff --git a/crates/rocie-client/src/apis/api_get_unit_api.rs b/crates/rocie-client/src/apis/api_get_unit_api.rs
index 5895652..81d772b 100644
--- a/crates/rocie-client/src/apis/api_get_unit_api.rs
+++ b/crates/rocie-client/src/apis/api_get_unit_api.rs
@@ -33,11 +33,11 @@ pub enum UnitsError {
 }
 
 
-pub async fn unit_by_id(configuration: &configuration::Configuration, id: &str) -> Result<models::Unit, Error<UnitByIdError>> {
+pub async fn unit_by_id(configuration: &configuration::Configuration, id: models::UnitId) -> Result<models::Unit, Error<UnitByIdError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
 
-    let uri_str = format!("{}/unit/{id}", configuration.base_path, id=crate::apis::urlencode(p_id));
+    let uri_str = format!("{}/unit/{id}", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
diff --git a/crates/rocie-client/src/apis/api_set_barcode_api.rs b/crates/rocie-client/src/apis/api_set_barcode_api.rs
index 0a439a5..e3ac9fb 100644
--- a/crates/rocie-client/src/apis/api_set_barcode_api.rs
+++ b/crates/rocie-client/src/apis/api_set_barcode_api.rs
@@ -34,11 +34,11 @@ pub enum ConsumeBarcodeError {
 }
 
 
-pub async fn buy_barcode(configuration: &configuration::Configuration, id: i32) -> Result<(), Error<BuyBarcodeError>> {
+pub async fn buy_barcode(configuration: &configuration::Configuration, id: models::BarcodeId) -> Result<(), Error<BuyBarcodeError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
 
-    let uri_str = format!("{}/barcode/{id}/buy", configuration.base_path, id=p_id);
+    let uri_str = format!("{}/barcode/{id}/buy", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
@@ -59,12 +59,12 @@ pub async fn buy_barcode(configuration: &configuration::Configuration, id: i32)
     }
 }
 
-pub async fn consume_barcode(configuration: &configuration::Configuration, id: i32, unit_amount: models::UnitAmount) -> Result<(), Error<ConsumeBarcodeError>> {
+pub async fn consume_barcode(configuration: &configuration::Configuration, id: models::BarcodeId, unit_amount: models::UnitAmount) -> Result<(), Error<ConsumeBarcodeError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
     let p_unit_amount = unit_amount;
 
-    let uri_str = format!("{}/barcode/{id}/consume", configuration.base_path, id=p_id);
+    let uri_str = format!("{}/barcode/{id}/consume", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
diff --git a/crates/rocie-client/src/apis/api_set_product_api.rs b/crates/rocie-client/src/apis/api_set_product_api.rs
index 0d2679b..d3cf378 100644
--- a/crates/rocie-client/src/apis/api_set_product_api.rs
+++ b/crates/rocie-client/src/apis/api_set_product_api.rs
@@ -34,12 +34,12 @@ pub enum RegisterProductError {
 }
 
 
-pub async fn associate_barcode(configuration: &configuration::Configuration, id: &str, barcode: models::Barcode) -> Result<(), Error<AssociateBarcodeError>> {
+pub async fn associate_barcode(configuration: &configuration::Configuration, id: models::ProductId, barcode: models::Barcode) -> Result<(), Error<AssociateBarcodeError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_id = id;
     let p_barcode = barcode;
 
-    let uri_str = format!("{}/product/{id}/associate", configuration.base_path, id=crate::apis::urlencode(p_id));
+    let uri_str = format!("{}/product/{id}/associate", configuration.base_path, id=p_id.to_string());
     let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
 
     if let Some(ref user_agent) = configuration.user_agent {
@@ -61,7 +61,7 @@ pub async fn associate_barcode(configuration: &configuration::Configuration, id:
     }
 }
 
-pub async fn register_product(configuration: &configuration::Configuration, product_stub: models::ProductStub) -> Result<uuid::Uuid, Error<RegisterProductError>> {
+pub async fn register_product(configuration: &configuration::Configuration, product_stub: models::ProductStub) -> Result<models::ProductId, Error<RegisterProductError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_product_stub = product_stub;
 
@@ -88,8 +88,8 @@ pub async fn register_product(configuration: &configuration::Configuration, prod
         let content = resp.text().await?;
         match content_type {
             ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
-            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `uuid::Uuid`"))),
-            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `uuid::Uuid`")))),
+            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ProductId`"))),
+            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ProductId`")))),
         }
     } else {
         let content = resp.text().await?;
diff --git a/crates/rocie-client/src/apis/api_set_unit_api.rs b/crates/rocie-client/src/apis/api_set_unit_api.rs
index e894fc3..dc88775 100644
--- a/crates/rocie-client/src/apis/api_set_unit_api.rs
+++ b/crates/rocie-client/src/apis/api_set_unit_api.rs
@@ -24,7 +24,7 @@ pub enum RegisterUnitError {
 }
 
 
-pub async fn register_unit(configuration: &configuration::Configuration, unit_stub: models::UnitStub) -> Result<uuid::Uuid, Error<RegisterUnitError>> {
+pub async fn register_unit(configuration: &configuration::Configuration, unit_stub: models::UnitStub) -> Result<models::UnitId, Error<RegisterUnitError>> {
     // add a prefix to parameters to efficiently prevent name collisions
     let p_unit_stub = unit_stub;
 
@@ -51,8 +51,8 @@ pub async fn register_unit(configuration: &configuration::Configuration, unit_st
         let content = resp.text().await?;
         match content_type {
             ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
-            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `uuid::Uuid`"))),
-            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `uuid::Uuid`")))),
+            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UnitId`"))),
+            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::UnitId`")))),
         }
     } else {
         let content = resp.text().await?;
diff --git a/crates/rocie-client/src/implies.rs b/crates/rocie-client/src/implies.rs
new file mode 100644
index 0000000..147588a
--- /dev/null
+++ b/crates/rocie-client/src/implies.rs
@@ -0,0 +1,26 @@
+use std::fmt::Display;
+
+use crate::models::{BarcodeId, ProductId, UnitId};
+
+// TODO(@bpeetz): The client generator should just do this. <2025-09-23>
+
+impl Display for BarcodeId {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        self.value.fmt(f)
+    }
+}
+impl Copy for BarcodeId {}
+
+impl Display for ProductId {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        self.value.fmt(f)
+    }
+}
+impl Copy for ProductId {}
+
+impl Display for UnitId {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        self.value.fmt(f)
+    }
+}
+impl Copy for UnitId {}
diff --git a/crates/rocie-client/src/lib.rs b/crates/rocie-client/src/lib.rs
index e152062..bbd0eed 100644
--- a/crates/rocie-client/src/lib.rs
+++ b/crates/rocie-client/src/lib.rs
@@ -9,3 +9,4 @@ extern crate reqwest;
 
 pub mod apis;
 pub mod models;
+pub mod implies;
diff --git a/crates/rocie-client/src/models/barcode.rs b/crates/rocie-client/src/models/barcode.rs
index 7690be2..76661dc 100644
--- a/crates/rocie-client/src/models/barcode.rs
+++ b/crates/rocie-client/src/models/barcode.rs
@@ -14,15 +14,15 @@ use serde::{Deserialize, Serialize};
 #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
 pub struct Barcode {
     #[serde(rename = "amount")]
-    pub amount: Box<models::UnitAmount>,
+    pub amount: models::UnitAmount,
     #[serde(rename = "id")]
-    pub id: i32,
+    pub id: models::BarcodeId,
 }
 
 impl Barcode {
-    pub fn new(amount: models::UnitAmount, id: i32) -> Barcode {
+    pub fn new(amount: models::UnitAmount, id: models::BarcodeId) -> Barcode {
         Barcode {
-            amount: Box::new(amount),
+            amount,
             id,
         }
     }
diff --git a/crates/rocie-client/src/models/barcode_id.rs b/crates/rocie-client/src/models/barcode_id.rs
new file mode 100644
index 0000000..2bd4775
--- /dev/null
+++ b/crates/rocie-client/src/models/barcode_id.rs
@@ -0,0 +1,27 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system
+ *
+ * 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 BarcodeId {
+    #[serde(rename = "value")]
+    pub value: u32,
+}
+
+impl BarcodeId {
+    pub fn new(value: u32) -> BarcodeId {
+        BarcodeId {
+            value,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/mod.rs b/crates/rocie-client/src/models/mod.rs
index 20ed0ff..6456de7 100644
--- a/crates/rocie-client/src/models/mod.rs
+++ b/crates/rocie-client/src/models/mod.rs
@@ -1,14 +1,20 @@
 pub mod barcode;
 pub use self::barcode::Barcode;
+pub mod barcode_id;
+pub use self::barcode_id::BarcodeId;
 pub mod product;
 pub use self::product::Product;
 pub mod product_amount;
 pub use self::product_amount::ProductAmount;
+pub mod product_id;
+pub use self::product_id::ProductId;
 pub mod product_stub;
 pub use self::product_stub::ProductStub;
 pub mod unit;
 pub use self::unit::Unit;
 pub mod unit_amount;
 pub use self::unit_amount::UnitAmount;
+pub mod unit_id;
+pub use self::unit_id::UnitId;
 pub mod unit_stub;
 pub use self::unit_stub::UnitStub;
diff --git a/crates/rocie-client/src/models/product.rs b/crates/rocie-client/src/models/product.rs
index acdc6c6..8fe68ee 100644
--- a/crates/rocie-client/src/models/product.rs
+++ b/crates/rocie-client/src/models/product.rs
@@ -18,13 +18,13 @@ pub struct Product {
     #[serde(rename = "description", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
     pub description: Option<Option<String>>,
     #[serde(rename = "id")]
-    pub id: uuid::Uuid,
+    pub id: models::ProductId,
     #[serde(rename = "name")]
     pub name: String,
 }
 
 impl Product {
-    pub fn new(associated_bar_codes: Vec<models::Barcode>, id: uuid::Uuid, name: String) -> Product {
+    pub fn new(associated_bar_codes: Vec<models::Barcode>, id: models::ProductId, name: String) -> Product {
         Product {
             associated_bar_codes,
             description: None,
diff --git a/crates/rocie-client/src/models/product_amount.rs b/crates/rocie-client/src/models/product_amount.rs
index 6f1b436..1a2ed02 100644
--- a/crates/rocie-client/src/models/product_amount.rs
+++ b/crates/rocie-client/src/models/product_amount.rs
@@ -14,15 +14,15 @@ use serde::{Deserialize, Serialize};
 #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
 pub struct ProductAmount {
     #[serde(rename = "amount")]
-    pub amount: Box<models::UnitAmount>,
+    pub amount: models::UnitAmount,
     #[serde(rename = "product_id")]
-    pub product_id: uuid::Uuid,
+    pub product_id: models::ProductId,
 }
 
 impl ProductAmount {
-    pub fn new(amount: models::UnitAmount, product_id: uuid::Uuid) -> ProductAmount {
+    pub fn new(amount: models::UnitAmount, product_id: models::ProductId) -> ProductAmount {
         ProductAmount {
-            amount: Box::new(amount),
+            amount,
             product_id,
         }
     }
diff --git a/crates/rocie-client/src/models/product_id.rs b/crates/rocie-client/src/models/product_id.rs
new file mode 100644
index 0000000..021bd38
--- /dev/null
+++ b/crates/rocie-client/src/models/product_id.rs
@@ -0,0 +1,27 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system
+ *
+ * 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 ProductId {
+    #[serde(rename = "value")]
+    pub value: uuid::Uuid,
+}
+
+impl ProductId {
+    pub fn new(value: uuid::Uuid) -> ProductId {
+        ProductId {
+            value,
+        }
+    }
+}
+
diff --git a/crates/rocie-client/src/models/product_stub.rs b/crates/rocie-client/src/models/product_stub.rs
index 3849c18..40c1123 100644
--- a/crates/rocie-client/src/models/product_stub.rs
+++ b/crates/rocie-client/src/models/product_stub.rs
@@ -17,8 +17,8 @@ pub struct ProductStub {
     pub description: Option<Option<String>>,
     #[serde(rename = "name")]
     pub name: String,
-    #[serde(rename = "parent", skip_serializing_if = "Option::is_none")]
-    pub parent: Option<uuid::Uuid>,
+    #[serde(rename = "parent", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
+    pub parent: Option<Option<models::ProductId>>,
 }
 
 impl ProductStub {
diff --git a/crates/rocie-client/src/models/unit.rs b/crates/rocie-client/src/models/unit.rs
index 95ec588..760d532 100644
--- a/crates/rocie-client/src/models/unit.rs
+++ b/crates/rocie-client/src/models/unit.rs
@@ -20,13 +20,13 @@ pub struct Unit {
     #[serde(rename = "full_name_singular")]
     pub full_name_singular: String,
     #[serde(rename = "id")]
-    pub id: uuid::Uuid,
+    pub id: models::UnitId,
     #[serde(rename = "short_name")]
     pub short_name: String,
 }
 
 impl Unit {
-    pub fn new(full_name_plural: String, full_name_singular: String, id: uuid::Uuid, short_name: String) -> Unit {
+    pub fn new(full_name_plural: String, full_name_singular: String, id: models::UnitId, short_name: String) -> Unit {
         Unit {
             description: None,
             full_name_plural,
diff --git a/crates/rocie-client/src/models/unit_amount.rs b/crates/rocie-client/src/models/unit_amount.rs
index 3ab482c..928a6f4 100644
--- a/crates/rocie-client/src/models/unit_amount.rs
+++ b/crates/rocie-client/src/models/unit_amount.rs
@@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize};
 #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
 pub struct UnitAmount {
     #[serde(rename = "unit")]
-    pub unit: uuid::Uuid,
+    pub unit: models::UnitId,
     #[serde(rename = "value")]
-    pub value: i64,
+    pub value: u32,
 }
 
 impl UnitAmount {
-    pub fn new(unit: uuid::Uuid, value: i64) -> UnitAmount {
+    pub fn new(unit: models::UnitId, value: u32) -> UnitAmount {
         UnitAmount {
             unit,
             value,
diff --git a/crates/rocie-client/src/models/unit_id.rs b/crates/rocie-client/src/models/unit_id.rs
new file mode 100644
index 0000000..ea1ef51
--- /dev/null
+++ b/crates/rocie-client/src/models/unit_id.rs
@@ -0,0 +1,27 @@
+/*
+ * rocie-server
+ *
+ * An enterprise grocery management system
+ *
+ * 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 UnitId {
+    #[serde(rename = "value")]
+    pub value: uuid::Uuid,
+}
+
+impl UnitId {
+    pub fn new(value: uuid::Uuid) -> UnitId {
+        UnitId {
+            value,
+        }
+    }
+}
+