This section details how the API handles and reports errors.
+
- Errors are returned as a JSON object with an error message and code:
+
+ The shared Error schema is:
- {
- "success": false,
- "message": "Invalid API token",
- "code": "AUTH_001"
- }
+{
+ "error": "Invalid API token",
+ "code": 401
+}
- The API uses standard HTTP status codes:
+ Common error status codes used across endpoints:
| Code |
Meaning |
-
- | 200 |
- OK - Request succeeded |
-
| 400 |
- Bad Request - Invalid parameters |
+ Bad Request |
| 401 |
- Unauthorized - Missing or invalid token |
+ Unauthorized |
| 403 |
- Forbidden - Insufficient permissions |
+ Forbidden |
| 404 |
- Not Found - Resource does not exist |
+ Not Found |
+
+
+ | 409 |
+ Conflict |
+
+
+ | 422 |
+ Unprocessable Entity |
| 500 |
- Server Error - Internal server failure |
+ Internal Server Error |
diff --git a/documentation/topics/generated/Config_Module_Backups.topic b/documentation/topics/generated/Config_Module_Backups.topic
new file mode 100644
index 00000000..6cdb29f2
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Backups.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Backup configuration for backup module behavior.
+
diff --git a/documentation/topics/generated/Config_Module_Backups_Page_1.topic b/documentation/topics/generated/Config_Module_Backups_Page_1.topic
new file mode 100644
index 00000000..15fce64b
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Backups_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Bird.topic b/documentation/topics/generated/Config_Module_Bird.topic
new file mode 100644
index 00000000..2d74eba3
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Bird.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Bird communication integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Bird_Page_1.topic b/documentation/topics/generated/Config_Module_Bird_Page_1.topic
new file mode 100644
index 00000000..1f8835e9
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Bird_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Email.topic b/documentation/topics/generated/Config_Module_Email.topic
new file mode 100644
index 00000000..c9ac2e95
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Email.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Email provider and SMTP/MailerSend configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Email_Page_1.topic b/documentation/topics/generated/Config_Module_Email_Page_1.topic
new file mode 100644
index 00000000..9c66f5aa
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Email_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Entra.topic b/documentation/topics/generated/Config_Module_Entra.topic
new file mode 100644
index 00000000..3ff643aa
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Entra.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Microsoft Entra identity integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Entra_Page_1.topic b/documentation/topics/generated/Config_Module_Entra_Page_1.topic
new file mode 100644
index 00000000..11d7b350
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Entra_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_FXRatesAPI.topic b/documentation/topics/generated/Config_Module_FXRatesAPI.topic
new file mode 100644
index 00000000..61736f21
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_FXRatesAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ FXRatesAPI exchange-rate integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_FXRatesAPI_Page_1.topic b/documentation/topics/generated/Config_Module_FXRatesAPI_Page_1.topic
new file mode 100644
index 00000000..83ce174b
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_FXRatesAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_GatewayAPI.topic b/documentation/topics/generated/Config_Module_GatewayAPI.topic
new file mode 100644
index 00000000..6175891f
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_GatewayAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ GatewayAPI integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_GatewayAPI_Page_1.topic b/documentation/topics/generated/Config_Module_GatewayAPI_Page_1.topic
new file mode 100644
index 00000000..5cabd770
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_GatewayAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_LicensePlateRecognizer.topic b/documentation/topics/generated/Config_Module_LicensePlateRecognizer.topic
new file mode 100644
index 00000000..432e9222
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_LicensePlateRecognizer.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ License plate recognizer integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_LicensePlateRecognizer_Page_1.topic b/documentation/topics/generated/Config_Module_LicensePlateRecognizer_Page_1.topic
new file mode 100644
index 00000000..9820f185
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_LicensePlateRecognizer_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Limble.topic b/documentation/topics/generated/Config_Module_Limble.topic
new file mode 100644
index 00000000..9e521ea6
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Limble.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Limble integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Limble_Page_1.topic b/documentation/topics/generated/Config_Module_Limble_Page_1.topic
new file mode 100644
index 00000000..4669155d
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Limble_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_MotorAPI.topic b/documentation/topics/generated/Config_Module_MotorAPI.topic
new file mode 100644
index 00000000..44152ed6
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_MotorAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ MotorAPI vehicle lookup integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_MotorAPI_Page_1.topic b/documentation/topics/generated/Config_Module_MotorAPI_Page_1.topic
new file mode 100644
index 00000000..796ba859
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_MotorAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_OcrSpace.topic b/documentation/topics/generated/Config_Module_OcrSpace.topic
new file mode 100644
index 00000000..9e5f5033
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_OcrSpace.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ OCR Space integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_OcrSpace_Page_1.topic b/documentation/topics/generated/Config_Module_OcrSpace_Page_1.topic
new file mode 100644
index 00000000..fc63c3ad
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_OcrSpace_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_OpenAI.topic b/documentation/topics/generated/Config_Module_OpenAI.topic
new file mode 100644
index 00000000..150b671c
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_OpenAI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ OpenAI integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_OpenAI_Page_1.topic b/documentation/topics/generated/Config_Module_OpenAI_Page_1.topic
new file mode 100644
index 00000000..7874197c
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_OpenAI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Self_Serve.topic b/documentation/topics/generated/Config_Module_Self_Serve.topic
new file mode 100644
index 00000000..e30226c2
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Self_Serve.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Self-serve module runtime configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Self_Serve_Page_1.topic b/documentation/topics/generated/Config_Module_Self_Serve_Page_1.topic
new file mode 100644
index 00000000..a3b94b9c
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Self_Serve_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Shelly.topic b/documentation/topics/generated/Config_Module_Shelly.topic
new file mode 100644
index 00000000..094b8991
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Shelly.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Shelly integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Shelly_Page_1.topic b/documentation/topics/generated/Config_Module_Shelly_Page_1.topic
new file mode 100644
index 00000000..1a33d16d
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Shelly_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_Stripe.topic b/documentation/topics/generated/Config_Module_Stripe.topic
new file mode 100644
index 00000000..247f5d1e
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Stripe.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Stripe integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_Stripe_Page_1.topic b/documentation/topics/generated/Config_Module_Stripe_Page_1.topic
new file mode 100644
index 00000000..6fe4e291
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_Stripe_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_VirkData.topic b/documentation/topics/generated/Config_Module_VirkData.topic
new file mode 100644
index 00000000..e7d286a4
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_VirkData.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ VirkData integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_VirkData_Page_1.topic b/documentation/topics/generated/Config_Module_VirkData_Page_1.topic
new file mode 100644
index 00000000..84c9c735
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_VirkData_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_WeatherAPI.topic b/documentation/topics/generated/Config_Module_WeatherAPI.topic
new file mode 100644
index 00000000..d34796e4
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_WeatherAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ WeatherAPI integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_WeatherAPI_Page_1.topic b/documentation/topics/generated/Config_Module_WeatherAPI_Page_1.topic
new file mode 100644
index 00000000..4a6cc249
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_WeatherAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_XLVask.topic b/documentation/topics/generated/Config_Module_XLVask.topic
new file mode 100644
index 00000000..818b8ee2
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_XLVask.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ XLVask integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_XLVask_Page_1.topic b/documentation/topics/generated/Config_Module_XLVask_Page_1.topic
new file mode 100644
index 00000000..9676c848
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_XLVask_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_e_conomic.topic b/documentation/topics/generated/Config_Module_e_conomic.topic
new file mode 100644
index 00000000..2a9c02f5
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_e_conomic.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ e-conomic accounting integration configuration.
+
diff --git a/documentation/topics/generated/Config_Module_e_conomic_Page_1.topic b/documentation/topics/generated/Config_Module_e_conomic_Page_1.topic
new file mode 100644
index 00000000..1d4877a2
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_e_conomic_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Config_Module_reCAPTCHA.topic b/documentation/topics/generated/Config_Module_reCAPTCHA.topic
new file mode 100644
index 00000000..1c41d93c
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_reCAPTCHA.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ reCAPTCHA protection configuration.
+
diff --git a/documentation/topics/generated/Config_Module_reCAPTCHA_Page_1.topic b/documentation/topics/generated/Config_Module_reCAPTCHA_Page_1.topic
new file mode 100644
index 00000000..49f21b35
--- /dev/null
+++ b/documentation/topics/generated/Config_Module_reCAPTCHA_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Action_Logs.topic b/documentation/topics/generated/Modules_Module_Action_Logs.topic
new file mode 100644
index 00000000..c65a63c4
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Action_Logs.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Audit and operational logs for integration module activity.
+
diff --git a/documentation/topics/generated/Modules_Module_Action_Logs_Page_1.topic b/documentation/topics/generated/Modules_Module_Action_Logs_Page_1.topic
new file mode 100644
index 00000000..df65851b
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Action_Logs_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Backup.topic b/documentation/topics/generated/Modules_Module_Backup.topic
new file mode 100644
index 00000000..1d11f061
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Backup.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Backup integrations and backup module orchestration.
+
diff --git a/documentation/topics/generated/Modules_Module_Backup_Page_1.topic b/documentation/topics/generated/Modules_Module_Backup_Page_1.topic
new file mode 100644
index 00000000..3cfdb7eb
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Backup_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_CVR.topic b/documentation/topics/generated/Modules_Module_CVR.topic
new file mode 100644
index 00000000..11345e8d
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_CVR.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Danish company registry (CVR) lookup and search integration.
+
diff --git a/documentation/topics/generated/Modules_Module_CVR_Page_1.topic b/documentation/topics/generated/Modules_Module_CVR_Page_1.topic
new file mode 100644
index 00000000..197702af
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_CVR_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Entra.topic b/documentation/topics/generated/Modules_Module_Entra.topic
new file mode 100644
index 00000000..652317bc
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Entra.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Microsoft Entra directory integration endpoints.
+
diff --git a/documentation/topics/generated/Modules_Module_Entra_Page_1.topic b/documentation/topics/generated/Modules_Module_Entra_Page_1.topic
new file mode 100644
index 00000000..3df53d43
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Entra_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_FXRatesAPI.topic b/documentation/topics/generated/Modules_Module_FXRatesAPI.topic
new file mode 100644
index 00000000..09549b55
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_FXRatesAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Currency exchange-rate lookup integration.
+
diff --git a/documentation/topics/generated/Modules_Module_FXRatesAPI_Page_1.topic b/documentation/topics/generated/Modules_Module_FXRatesAPI_Page_1.topic
new file mode 100644
index 00000000..d998e8bb
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_FXRatesAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_MotorAPI.topic b/documentation/topics/generated/Modules_Module_MotorAPI.topic
new file mode 100644
index 00000000..e2cc59f2
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_MotorAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Vehicle lookup integration via MotorAPI.
+
diff --git a/documentation/topics/generated/Modules_Module_MotorAPI_Page_1.topic b/documentation/topics/generated/Modules_Module_MotorAPI_Page_1.topic
new file mode 100644
index 00000000..a5c0b1c4
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_MotorAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Self_Serve.topic b/documentation/topics/generated/Modules_Module_Self_Serve.topic
new file mode 100644
index 00000000..11b3c713
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Self_Serve.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Self-serve lane control and machine command endpoints.
+
diff --git a/documentation/topics/generated/Modules_Module_Self_Serve_Page_1.topic b/documentation/topics/generated/Modules_Module_Self_Serve_Page_1.topic
new file mode 100644
index 00000000..1cb84005
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Self_Serve_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Stripe.topic b/documentation/topics/generated/Modules_Module_Stripe.topic
new file mode 100644
index 00000000..bbb4a34e
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Stripe.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Stripe payments, invoices, terminals, products, and customers.
+
diff --git a/documentation/topics/generated/Modules_Module_Stripe_Page_1.topic b/documentation/topics/generated/Modules_Module_Stripe_Page_1.topic
new file mode 100644
index 00000000..4c17ad17
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Stripe_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_VirkData.topic b/documentation/topics/generated/Modules_Module_VirkData.topic
new file mode 100644
index 00000000..a3168363
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_VirkData.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ VirkData company information integration.
+
diff --git a/documentation/topics/generated/Modules_Module_VirkData_Page_1.topic b/documentation/topics/generated/Modules_Module_VirkData_Page_1.topic
new file mode 100644
index 00000000..4bb2b8b6
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_VirkData_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_Wash_Certificates.topic b/documentation/topics/generated/Modules_Module_Wash_Certificates.topic
new file mode 100644
index 00000000..0a0d4f26
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Wash_Certificates.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Wash certificate retrieval and listing integration.
+
diff --git a/documentation/topics/generated/Modules_Module_Wash_Certificates_Page_1.topic b/documentation/topics/generated/Modules_Module_Wash_Certificates_Page_1.topic
new file mode 100644
index 00000000..d5e1ee43
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_Wash_Certificates_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_WeatherAPI.topic b/documentation/topics/generated/Modules_Module_WeatherAPI.topic
new file mode 100644
index 00000000..1e787fed
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_WeatherAPI.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Weather provider integration for current, forecast, and search.
+
diff --git a/documentation/topics/generated/Modules_Module_WeatherAPI_Page_1.topic b/documentation/topics/generated/Modules_Module_WeatherAPI_Page_1.topic
new file mode 100644
index 00000000..240f8653
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_WeatherAPI_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_XLVask.topic b/documentation/topics/generated/Modules_Module_XLVask.topic
new file mode 100644
index 00000000..7500733f
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_XLVask.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ XLVask synchronization, usage logs, vehicles, and customers.
+
diff --git a/documentation/topics/generated/Modules_Module_XLVask_Page_1.topic b/documentation/topics/generated/Modules_Module_XLVask_Page_1.topic
new file mode 100644
index 00000000..c059b69b
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_XLVask_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Modules_Module_e_conomic.topic b/documentation/topics/generated/Modules_Module_e_conomic.topic
new file mode 100644
index 00000000..6fca0683
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_e_conomic.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Accounting and invoicing integration with e-conomic.
+
diff --git a/documentation/topics/generated/Modules_Module_e_conomic_Page_1.topic b/documentation/topics/generated/Modules_Module_e_conomic_Page_1.topic
new file mode 100644
index 00000000..ee2428f1
--- /dev/null
+++ b/documentation/topics/generated/Modules_Module_e_conomic_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Attachments.topic b/documentation/topics/generated/Tag_Attachments.topic
new file mode 100644
index 00000000..35eff617
--- /dev/null
+++ b/documentation/topics/generated/Tag_Attachments.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Attachments_Page_1.topic b/documentation/topics/generated/Tag_Attachments_Page_1.topic
new file mode 100644
index 00000000..29ebeafc
--- /dev/null
+++ b/documentation/topics/generated/Tag_Attachments_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Authentication.topic b/documentation/topics/generated/Tag_Authentication.topic
new file mode 100644
index 00000000..47780ef6
--- /dev/null
+++ b/documentation/topics/generated/Tag_Authentication.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Authentication_Page_1.topic b/documentation/topics/generated/Tag_Authentication_Page_1.topic
new file mode 100644
index 00000000..1f12cf12
--- /dev/null
+++ b/documentation/topics/generated/Tag_Authentication_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Bird.topic b/documentation/topics/generated/Tag_Bird.topic
new file mode 100644
index 00000000..61c3c4b2
--- /dev/null
+++ b/documentation/topics/generated/Tag_Bird.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Bird_Page_1.topic b/documentation/topics/generated/Tag_Bird_Page_1.topic
new file mode 100644
index 00000000..49ae2025
--- /dev/null
+++ b/documentation/topics/generated/Tag_Bird_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Bookings.topic b/documentation/topics/generated/Tag_Bookings.topic
new file mode 100644
index 00000000..0ededc9c
--- /dev/null
+++ b/documentation/topics/generated/Tag_Bookings.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Bookings_Page_1.topic b/documentation/topics/generated/Tag_Bookings_Page_1.topic
new file mode 100644
index 00000000..b040929c
--- /dev/null
+++ b/documentation/topics/generated/Tag_Bookings_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Branding.topic b/documentation/topics/generated/Tag_Branding.topic
new file mode 100644
index 00000000..078e1f09
--- /dev/null
+++ b/documentation/topics/generated/Tag_Branding.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Branding_Page_1.topic b/documentation/topics/generated/Tag_Branding_Page_1.topic
new file mode 100644
index 00000000..ae9148df
--- /dev/null
+++ b/documentation/topics/generated/Tag_Branding_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Categories.topic b/documentation/topics/generated/Tag_Categories.topic
new file mode 100644
index 00000000..59c1fb0d
--- /dev/null
+++ b/documentation/topics/generated/Tag_Categories.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Categories_Page_1.topic b/documentation/topics/generated/Tag_Categories_Page_1.topic
new file mode 100644
index 00000000..a7ee0f93
--- /dev/null
+++ b/documentation/topics/generated/Tag_Categories_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Config.topic b/documentation/topics/generated/Tag_Config.topic
new file mode 100644
index 00000000..48429663
--- /dev/null
+++ b/documentation/topics/generated/Tag_Config.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ Configuration endpoints grouped by module name.
+
+
+ | Module | Description |
+ | Backups | Backup configuration for backup module behavior. |
+ | Bird | Bird communication integration configuration. |
+ | e-conomic | e-conomic accounting integration configuration. |
+ | Email | Email provider and SMTP/MailerSend configuration. |
+ | Entra | Microsoft Entra identity integration configuration. |
+ | FXRatesAPI | FXRatesAPI exchange-rate integration configuration. |
+ | GatewayAPI | GatewayAPI integration configuration. |
+ | LicensePlateRecognizer | License plate recognizer integration configuration. |
+ | Limble | Limble integration configuration. |
+ | MotorAPI | MotorAPI vehicle lookup integration configuration. |
+ | OcrSpace | OCR Space integration configuration. |
+ | OpenAI | OpenAI integration configuration. |
+ | reCAPTCHA | reCAPTCHA protection configuration. |
+ | Self-Serve | Self-serve module runtime configuration. |
+ | Shelly | Shelly integration configuration. |
+ | Stripe | Stripe integration configuration. |
+ | VirkData | VirkData integration configuration. |
+ | WeatherAPI | WeatherAPI integration configuration. |
+ | XLVask | XLVask integration configuration. |
+
+
+
diff --git a/documentation/topics/generated/Tag_Departments.topic b/documentation/topics/generated/Tag_Departments.topic
new file mode 100644
index 00000000..de3ad223
--- /dev/null
+++ b/documentation/topics/generated/Tag_Departments.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Departments_Page_1.topic b/documentation/topics/generated/Tag_Departments_Page_1.topic
new file mode 100644
index 00000000..7dd38095
--- /dev/null
+++ b/documentation/topics/generated/Tag_Departments_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Departments_Page_2.topic b/documentation/topics/generated/Tag_Departments_Page_2.topic
new file mode 100644
index 00000000..4ea69fab
--- /dev/null
+++ b/documentation/topics/generated/Tag_Departments_Page_2.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Forms.topic b/documentation/topics/generated/Tag_Forms.topic
new file mode 100644
index 00000000..86d07f56
--- /dev/null
+++ b/documentation/topics/generated/Tag_Forms.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Forms_Page_1.topic b/documentation/topics/generated/Tag_Forms_Page_1.topic
new file mode 100644
index 00000000..c153c9db
--- /dev/null
+++ b/documentation/topics/generated/Tag_Forms_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Goals.topic b/documentation/topics/generated/Tag_Goals.topic
new file mode 100644
index 00000000..1e959b33
--- /dev/null
+++ b/documentation/topics/generated/Tag_Goals.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Goals_Page_1.topic b/documentation/topics/generated/Tag_Goals_Page_1.topic
new file mode 100644
index 00000000..8280f391
--- /dev/null
+++ b/documentation/topics/generated/Tag_Goals_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Invoices.topic b/documentation/topics/generated/Tag_Invoices.topic
new file mode 100644
index 00000000..23322399
--- /dev/null
+++ b/documentation/topics/generated/Tag_Invoices.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Invoices_Page_1.topic b/documentation/topics/generated/Tag_Invoices_Page_1.topic
new file mode 100644
index 00000000..91d34a4e
--- /dev/null
+++ b/documentation/topics/generated/Tag_Invoices_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Invoices_Page_2.topic b/documentation/topics/generated/Tag_Invoices_Page_2.topic
new file mode 100644
index 00000000..1f932a2a
--- /dev/null
+++ b/documentation/topics/generated/Tag_Invoices_Page_2.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Modules.topic b/documentation/topics/generated/Tag_Modules.topic
new file mode 100644
index 00000000..cdb648c4
--- /dev/null
+++ b/documentation/topics/generated/Tag_Modules.topic
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Module integrations sorted by module name.
+
+
+ | Module | Description |
+ | Action Logs | Audit and operational logs for integration module activity. |
+ | Backup | Backup integrations and backup module orchestration. |
+ | CVR | Danish company registry (CVR) lookup and search integration. |
+ | e-conomic | Accounting and invoicing integration with e-conomic. |
+ | Entra | Microsoft Entra directory integration endpoints. |
+ | FXRatesAPI | Currency exchange-rate lookup integration. |
+ | MotorAPI | Vehicle lookup integration via MotorAPI. |
+ | Self-Serve | Self-serve lane control and machine command endpoints. |
+ | Stripe | Stripe payments, invoices, terminals, products, and customers. |
+ | VirkData | VirkData company information integration. |
+ | Wash Certificates | Wash certificate retrieval and listing integration. |
+ | WeatherAPI | Weather provider integration for current, forecast, and search. |
+ | XLVask | XLVask synchronization, usage logs, vehicles, and customers. |
+
+
+
diff --git a/documentation/topics/generated/Tag_Notifications.topic b/documentation/topics/generated/Tag_Notifications.topic
new file mode 100644
index 00000000..b1ab5182
--- /dev/null
+++ b/documentation/topics/generated/Tag_Notifications.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Notifications_Page_1.topic b/documentation/topics/generated/Tag_Notifications_Page_1.topic
new file mode 100644
index 00000000..6c052d36
--- /dev/null
+++ b/documentation/topics/generated/Tag_Notifications_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Order_Items.topic b/documentation/topics/generated/Tag_Order_Items.topic
new file mode 100644
index 00000000..4f24e04c
--- /dev/null
+++ b/documentation/topics/generated/Tag_Order_Items.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Order_Items_Page_1.topic b/documentation/topics/generated/Tag_Order_Items_Page_1.topic
new file mode 100644
index 00000000..eb60d385
--- /dev/null
+++ b/documentation/topics/generated/Tag_Order_Items_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Orders.topic b/documentation/topics/generated/Tag_Orders.topic
new file mode 100644
index 00000000..4f1b16d5
--- /dev/null
+++ b/documentation/topics/generated/Tag_Orders.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Orders_Page_1.topic b/documentation/topics/generated/Tag_Orders_Page_1.topic
new file mode 100644
index 00000000..142dd43d
--- /dev/null
+++ b/documentation/topics/generated/Tag_Orders_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Plate_Scans.topic b/documentation/topics/generated/Tag_Plate_Scans.topic
new file mode 100644
index 00000000..451e89cd
--- /dev/null
+++ b/documentation/topics/generated/Tag_Plate_Scans.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Plate_Scans_Page_1.topic b/documentation/topics/generated/Tag_Plate_Scans_Page_1.topic
new file mode 100644
index 00000000..60bff3e2
--- /dev/null
+++ b/documentation/topics/generated/Tag_Plate_Scans_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Products.topic b/documentation/topics/generated/Tag_Products.topic
new file mode 100644
index 00000000..3206a17d
--- /dev/null
+++ b/documentation/topics/generated/Tag_Products.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Products_Page_1.topic b/documentation/topics/generated/Tag_Products_Page_1.topic
new file mode 100644
index 00000000..47945ffe
--- /dev/null
+++ b/documentation/topics/generated/Tag_Products_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Roles.topic b/documentation/topics/generated/Tag_Roles.topic
new file mode 100644
index 00000000..b3e01ccb
--- /dev/null
+++ b/documentation/topics/generated/Tag_Roles.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Roles_Page_1.topic b/documentation/topics/generated/Tag_Roles_Page_1.topic
new file mode 100644
index 00000000..704c01ee
--- /dev/null
+++ b/documentation/topics/generated/Tag_Roles_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Search.topic b/documentation/topics/generated/Tag_Search.topic
new file mode 100644
index 00000000..eeae238d
--- /dev/null
+++ b/documentation/topics/generated/Tag_Search.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Search_Page_1.topic b/documentation/topics/generated/Tag_Search_Page_1.topic
new file mode 100644
index 00000000..92a85971
--- /dev/null
+++ b/documentation/topics/generated/Tag_Search_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Security.topic b/documentation/topics/generated/Tag_Security.topic
new file mode 100644
index 00000000..c95d3cf1
--- /dev/null
+++ b/documentation/topics/generated/Tag_Security.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Security_Page_1.topic b/documentation/topics/generated/Tag_Security_Page_1.topic
new file mode 100644
index 00000000..0efd088c
--- /dev/null
+++ b/documentation/topics/generated/Tag_Security_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Self_Serve.topic b/documentation/topics/generated/Tag_Self_Serve.topic
new file mode 100644
index 00000000..f61a0c51
--- /dev/null
+++ b/documentation/topics/generated/Tag_Self_Serve.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Self_Serve_Page_1.topic b/documentation/topics/generated/Tag_Self_Serve_Page_1.topic
new file mode 100644
index 00000000..c6d948f8
--- /dev/null
+++ b/documentation/topics/generated/Tag_Self_Serve_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Self_Serve_Page_2.topic b/documentation/topics/generated/Tag_Self_Serve_Page_2.topic
new file mode 100644
index 00000000..c2d54e21
--- /dev/null
+++ b/documentation/topics/generated/Tag_Self_Serve_Page_2.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Statistics.topic b/documentation/topics/generated/Tag_Statistics.topic
new file mode 100644
index 00000000..b5014bec
--- /dev/null
+++ b/documentation/topics/generated/Tag_Statistics.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Statistics_Page_1.topic b/documentation/topics/generated/Tag_Statistics_Page_1.topic
new file mode 100644
index 00000000..5d45e7fa
--- /dev/null
+++ b/documentation/topics/generated/Tag_Statistics_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Subusers.topic b/documentation/topics/generated/Tag_Subusers.topic
new file mode 100644
index 00000000..0c760f8a
--- /dev/null
+++ b/documentation/topics/generated/Tag_Subusers.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Subusers_Page_1.topic b/documentation/topics/generated/Tag_Subusers_Page_1.topic
new file mode 100644
index 00000000..8ff0a26c
--- /dev/null
+++ b/documentation/topics/generated/Tag_Subusers_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Users.topic b/documentation/topics/generated/Tag_Users.topic
new file mode 100644
index 00000000..28f90011
--- /dev/null
+++ b/documentation/topics/generated/Tag_Users.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Users_Page_1.topic b/documentation/topics/generated/Tag_Users_Page_1.topic
new file mode 100644
index 00000000..3be43b0f
--- /dev/null
+++ b/documentation/topics/generated/Tag_Users_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Users_Page_2.topic b/documentation/topics/generated/Tag_Users_Page_2.topic
new file mode 100644
index 00000000..fdf67db7
--- /dev/null
+++ b/documentation/topics/generated/Tag_Users_Page_2.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Vehicles.topic b/documentation/topics/generated/Tag_Vehicles.topic
new file mode 100644
index 00000000..100f8305
--- /dev/null
+++ b/documentation/topics/generated/Tag_Vehicles.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Vehicles_Page_1.topic b/documentation/topics/generated/Tag_Vehicles_Page_1.topic
new file mode 100644
index 00000000..c16c8674
--- /dev/null
+++ b/documentation/topics/generated/Tag_Vehicles_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/Tag_Worker.topic b/documentation/topics/generated/Tag_Worker.topic
new file mode 100644
index 00000000..fc994fdb
--- /dev/null
+++ b/documentation/topics/generated/Tag_Worker.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Endpoints in this section are generated from openapi.yaml.
+
diff --git a/documentation/topics/generated/Tag_Worker_Page_1.topic b/documentation/topics/generated/Tag_Worker_Page_1.topic
new file mode 100644
index 00000000..a55f2054
--- /dev/null
+++ b/documentation/topics/generated/Tag_Worker_Page_1.topic
@@ -0,0 +1,10 @@
+
+
+
+
+
+ This page groups endpoint topics for this object type.
+
diff --git a/documentation/topics/generated/addBrandingOption.topic b/documentation/topics/generated/addBrandingOption.topic
new file mode 100644
index 00000000..ff33b57d
--- /dev/null
+++ b/documentation/topics/generated/addBrandingOption.topic
@@ -0,0 +1,60 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /branding
+
+
+ Operation ID: addBrandingOption
+ Create a new branding option
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "cvr": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "description",
+ "cvr"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Branding option added successfully | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addButtonPress.topic b/documentation/topics/generated/addButtonPress.topic
new file mode 100644
index 00000000..48b2acb7
--- /dev/null
+++ b/documentation/topics/generated/addButtonPress.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /relay/button/press/post
+
+
+ Operation ID: addButtonPress
+ Record machine start button press webhook
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | token | query | no | string | |
+ | lane_id | query | no | integer | |
+ | reg | query | no | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Button press recorded and linked to a self-serve wash session | application/json |
+ | 404 | | |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/MachineButtonPressWebhookResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/addButtonPressPost.topic b/documentation/topics/generated/addButtonPressPost.topic
new file mode 100644
index 00000000..d7317bfb
--- /dev/null
+++ b/documentation/topics/generated/addButtonPressPost.topic
@@ -0,0 +1,57 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /relay/button/press/post
+
+
+ Operation ID: addButtonPressPost
+ Record machine start button press webhook
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "lane_id": {
+ "type": "integer"
+ },
+ "reg": {
+ "type": "string"
+ },
+ "token": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Button press recorded and linked to a self-serve wash session | application/json |
+ | 404 | | |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/MachineButtonPressWebhookResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/addCustomerAttribute.topic b/documentation/topics/generated/addCustomerAttribute.topic
new file mode 100644
index 00000000..d394a7b7
--- /dev/null
+++ b/documentation/topics/generated/addCustomerAttribute.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /customer/attributes
+
+
+ Operation ID: addCustomerAttribute
+ Add a custom attribute to a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Customer attribute added successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addCustomerCode.topic b/documentation/topics/generated/addCustomerCode.topic
new file mode 100644
index 00000000..831f803e
--- /dev/null
+++ b/documentation/topics/generated/addCustomerCode.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /admin/customer/code
+
+
+ Operation ID: addCustomerCode
+ Add customer code
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "customer_number": {
+ "type": "integer"
+ },
+ "user_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addCustomerDefaultDepartment.topic b/documentation/topics/generated/addCustomerDefaultDepartment.topic
new file mode 100644
index 00000000..d9c5c684
--- /dev/null
+++ b/documentation/topics/generated/addCustomerDefaultDepartment.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /customer/department/default
+
+
+ Operation ID: addCustomerDefaultDepartment
+ Add customer default department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "department"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addCustomerFixedPricing.topic b/documentation/topics/generated/addCustomerFixedPricing.topic
new file mode 100644
index 00000000..58909b0c
--- /dev/null
+++ b/documentation/topics/generated/addCustomerFixedPricing.topic
@@ -0,0 +1,59 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /customer/pricing/fixed
+
+
+ Operation ID: addCustomerFixedPricing
+ Add customer fixed pricing
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "price": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "customer_number",
+ "price",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addCustomerNote.topic b/documentation/topics/generated/addCustomerNote.topic
new file mode 100644
index 00000000..eeb8603b
--- /dev/null
+++ b/documentation/topics/generated/addCustomerNote.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /customer/notes
+
+
+ Operation ID: addCustomerNote
+ Add a note to a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Customer note added successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addDailyReport.topic b/documentation/topics/generated/addDailyReport.topic
new file mode 100644
index 00000000..f4b6fcbf
--- /dev/null
+++ b/documentation/topics/generated/addDailyReport.topic
@@ -0,0 +1,59 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /departments/daily-reports
+
+
+ Operation ID: addDailyReport
+ Add daily report
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "date": {
+ "type": "string"
+ },
+ "department_id": {
+ "type": "integer"
+ },
+ "report": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "department_id",
+ "date",
+ "report"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addDepartmentCategory.topic b/documentation/topics/generated/addDepartmentCategory.topic
new file mode 100644
index 00000000..671afdcf
--- /dev/null
+++ b/documentation/topics/generated/addDepartmentCategory.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /departments/categories
+
+
+ Operation ID: addDepartmentCategory
+ Associate a product category with a department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "category_id": {
+ "type": "integer"
+ },
+ "department_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Category added to department successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addOrderItem.topic b/documentation/topics/generated/addOrderItem.topic
new file mode 100644
index 00000000..5354b6a0
--- /dev/null
+++ b/documentation/topics/generated/addOrderItem.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /order/items
+
+
+ Operation ID: addOrderItem
+ Add a new item to an existing order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/OrderItemCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Order item added successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addPlateScanner.topic b/documentation/topics/generated/addPlateScanner.topic
new file mode 100644
index 00000000..0cd2297c
--- /dev/null
+++ b/documentation/topics/generated/addPlateScanner.topic
@@ -0,0 +1,59 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /numberplatescanners
+
+
+ Operation ID: addPlateScanner
+ Add plate scanner
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "notes": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "department_id",
+ "name",
+ "notes"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Plate scanner added successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addRole.topic b/documentation/topics/generated/addRole.topic
new file mode 100644
index 00000000..0d318200
--- /dev/null
+++ b/documentation/topics/generated/addRole.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /roles
+
+
+ Operation ID: addRole
+ Add role
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addRolePermission.topic b/documentation/topics/generated/addRolePermission.topic
new file mode 100644
index 00000000..80ab4f9a
--- /dev/null
+++ b/documentation/topics/generated/addRolePermission.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /roles/permissions
+
+
+ Operation ID: addRolePermission
+ Add permission to role
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "permission": {
+ "type": "string"
+ },
+ "role_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "role_id",
+ "permission"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveCondition.topic b/documentation/topics/generated/addSelfserveCondition.topic
new file mode 100644
index 00000000..16c9b58f
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveCondition.topic
@@ -0,0 +1,79 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/conditions
+
+
+ Operation ID: addSelfserveCondition
+ Add a new self-serve condition. Either provide a reusable machine_type_id or a legacy department/lane/product scope.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "default": 0,
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lane": {
+ "default": 0,
+ "type": "integer"
+ },
+ "machine_type_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "product": {
+ "default": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added condition | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveCondition"
+}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveConditionRule.topic b/documentation/topics/generated/addSelfserveConditionRule.topic
new file mode 100644
index 00000000..e2d33b32
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveConditionRule.topic
@@ -0,0 +1,75 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/condition/rules
+
+
+ Operation ID: addSelfserveConditionRule
+ Add a new self-serve condition rule.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "object_id": {
+ "type": "integer"
+ },
+ "object_type": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "condition_id",
+ "type",
+ "object_type",
+ "object_id",
+ "name",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added condition rule | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveConditionRule"
+}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveMachineType.topic b/documentation/topics/generated/addSelfserveMachineType.topic
new file mode 100644
index 00000000..8157adf2
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveMachineType.topic
@@ -0,0 +1,57 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/machine-types
+
+
+ Operation ID: addSelfserveMachineType
+ Add reusable self-serve machine type
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "description": {
+ "nullable": true,
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added machine type | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfserveMachineType"
+}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveQuestion.topic b/documentation/topics/generated/addSelfserveQuestion.topic
new file mode 100644
index 00000000..7a785461
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveQuestion.topic
@@ -0,0 +1,79 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/questions
+
+
+ Operation ID: addSelfserveQuestion
+ Add a new self-serve question. Questions are typically shared across departments and lanes by omitting department, lane, and product, which default to 0.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "default": 0,
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lane": {
+ "default": 0,
+ "type": "integer"
+ },
+ "order_priority": {
+ "default": 0,
+ "type": "integer"
+ },
+ "product": {
+ "default": 0,
+ "type": "integer"
+ },
+ "question": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "question",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added question | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveQuestion"
+}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveTask.topic b/documentation/topics/generated/addSelfserveTask.topic
new file mode 100644
index 00000000..8dcd2bcb
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveTask.topic
@@ -0,0 +1,103 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/tasks
+
+
+ Operation ID: addSelfserveTask
+ Add a new self-serve task. Either provide a reusable machine_type_id or a legacy department/lane/product scope.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "buttons": {
+ "default": [],
+ "description": "Optional dynamic image button IDs enabled by this task.",
+ "items": {
+ "type": "integer"
+ },
+ "type": "array"
+ },
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "default": 0,
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "dynamic_images_vehicle_type": {
+ "description": "Optional vehicle type selection override for the machine UI. Integer >= 0 or null.",
+ "nullable": true,
+ "type": "integer"
+ },
+ "lane": {
+ "default": 0,
+ "type": "integer"
+ },
+ "machine_type_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "order_priority": {
+ "default": 0,
+ "type": "integer"
+ },
+ "product": {
+ "default": 0,
+ "type": "integer"
+ },
+ "services": {
+ "description": "Optional services enabled by this task. Items must be valid service enum names.",
+ "items": {
+ "$ref": "#/components/schemas/SelfserveLaneService"
+ },
+ "type": "array"
+ },
+ "task": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "task",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added task | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveTask"
+}
+
+
+
diff --git a/documentation/topics/generated/addSelfserveVehicleCondition.topic b/documentation/topics/generated/addSelfserveVehicleCondition.topic
new file mode 100644
index 00000000..bcc83594
--- /dev/null
+++ b/documentation/topics/generated/addSelfserveVehicleCondition.topic
@@ -0,0 +1,74 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/vehicle/conditions
+
+
+ Operation ID: addSelfserveVehicleCondition
+ Add a new vehicle condition (answer to a question). Customers can only add conditions for their own vehicles.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ },
+ "lane": {
+ "type": "integer"
+ },
+ "question": {
+ "type": "integer"
+ },
+ "reg": {
+ "type": "string"
+ },
+ "value": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "department",
+ "lane",
+ "reg",
+ "question"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully added vehicle condition | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveVehicleConditionMutationResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/addVehicle.topic b/documentation/topics/generated/addVehicle.topic
new file mode 100644
index 00000000..06648d95
--- /dev/null
+++ b/documentation/topics/generated/addVehicle.topic
@@ -0,0 +1,85 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /vehicles
+
+
+ Operation ID: addVehicle
+ Create a new vehicle for a customer.
+
+Permissions:
+- Own scope: `add_vehicle` (linked to subuser node `VEHICLES_ADD`).
+- Broader scope: `add_vehicle_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_id": {
+ "description": "Optional explicit target customer. Defaults to the effective customer context.",
+ "type": "integer"
+ },
+ "reference": {
+ "maxLength": 255,
+ "nullable": true,
+ "type": "string"
+ },
+ "reg": {
+ "description": "Vehicle registration number",
+ "maxLength": 12,
+ "minLength": 2,
+ "type": "string"
+ },
+ "type": {
+ "description": "Product ID representing the vehicle wash type",
+ "type": "integer"
+ },
+ "wash_subscription": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "reg",
+ "type",
+ "wash_subscription"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle created | application/json |
+ | 400 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/adminDeleteBooking.topic b/documentation/topics/generated/adminDeleteBooking.topic
new file mode 100644
index 00000000..aac95d8d
--- /dev/null
+++ b/documentation/topics/generated/adminDeleteBooking.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /admin/bookings/delete
+
+
+ Operation ID: adminDeleteBooking
+ Delete booking (admin)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/birdCreateFlashCall.topic b/documentation/topics/generated/birdCreateFlashCall.topic
new file mode 100644
index 00000000..ca92902d
--- /dev/null
+++ b/documentation/topics/generated/birdCreateFlashCall.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/flash-calls
+
+
+ Operation ID: birdCreateFlashCall
+ Create/place a flash call via Bird
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Flash call created | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdCreateVoiceCall.topic b/documentation/topics/generated/birdCreateVoiceCall.topic
new file mode 100644
index 00000000..e6e1aa18
--- /dev/null
+++ b/documentation/topics/generated/birdCreateVoiceCall.topic
@@ -0,0 +1,65 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/calls
+
+
+ Operation ID: birdCreateVoiceCall
+ Create/place a voice call via Bird
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "additionalProperties": true,
+ "properties": {
+ "from": {
+ "description": "E.164 phone number of the caller (sender)",
+ "example": "+4599988877",
+ "type": "string"
+ },
+ "to": {
+ "description": "E.164 phone number of the callee",
+ "example": "+4511122233",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Call created | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdDeleteNumber.topic b/documentation/topics/generated/birdDeleteNumber.topic
new file mode 100644
index 00000000..c2e46149
--- /dev/null
+++ b/documentation/topics/generated/birdDeleteNumber.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /bird/numbers/{id}
+
+
+ Operation ID: birdDeleteNumber
+ Delete/release a number by ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (optional if configured) |
+ | id | path | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Number deletion/release accepted | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdEndFlashCall.topic b/documentation/topics/generated/birdEndFlashCall.topic
new file mode 100644
index 00000000..4065399c
--- /dev/null
+++ b/documentation/topics/generated/birdEndFlashCall.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/flash-calls/{id}
+
+
+ Operation ID: birdEndFlashCall
+ Posts a completion/update payload to the flash call resource to finalize verification.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | id | path | yes | string | |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Flash call completed | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdEndFlashCallByNumbers.topic b/documentation/topics/generated/birdEndFlashCallByNumbers.topic
new file mode 100644
index 00000000..119da6d9
--- /dev/null
+++ b/documentation/topics/generated/birdEndFlashCallByNumbers.topic
@@ -0,0 +1,66 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/flash-calls/end
+
+
+ Operation ID: birdEndFlashCallByNumbers
+ Ends an ongoing flash call by specifying the originating and destination numbers.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "additionalProperties": true,
+ "properties": {
+ "from": {
+ "description": "E.164 formatted caller number",
+ "example": "+4599988877",
+ "type": "string"
+ },
+ "to": {
+ "description": "E.164 formatted callee number",
+ "example": "+4511122233",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Flash call completed (by numbers) | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdGetFlashCall.topic b/documentation/topics/generated/birdGetFlashCall.topic
new file mode 100644
index 00000000..caf22d68
--- /dev/null
+++ b/documentation/topics/generated/birdGetFlashCall.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/voice/flash-calls/{id}
+
+
+ Operation ID: birdGetFlashCall
+ Get a flash call by ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | id | path | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Flash call details | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdGetNumber.topic b/documentation/topics/generated/birdGetNumber.topic
new file mode 100644
index 00000000..4bea5863
--- /dev/null
+++ b/documentation/topics/generated/birdGetNumber.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/numbers/{id}
+
+
+ Operation ID: birdGetNumber
+ Get a number by ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (optional if configured) |
+ | id | path | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Number details | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdNumberSingleResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdGetVoiceCall.topic b/documentation/topics/generated/birdGetVoiceCall.topic
new file mode 100644
index 00000000..68f5d626
--- /dev/null
+++ b/documentation/topics/generated/birdGetVoiceCall.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/voice/calls/{id}
+
+
+ Operation ID: birdGetVoiceCall
+ Get a voice call by ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | id | path | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Call details | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdHangupVoiceCall.topic b/documentation/topics/generated/birdHangupVoiceCall.topic
new file mode 100644
index 00000000..419d7eb2
--- /dev/null
+++ b/documentation/topics/generated/birdHangupVoiceCall.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/calls/{id}/hangup
+
+
+ Operation ID: birdHangupVoiceCall
+ Hang up a voice call by ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | id | path | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Hangup requested | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdListFlashCalls.topic b/documentation/topics/generated/birdListFlashCalls.topic
new file mode 100644
index 00000000..277bf6b5
--- /dev/null
+++ b/documentation/topics/generated/birdListFlashCalls.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/voice/flash-calls
+
+
+ Operation ID: birdListFlashCalls
+ List flash calls
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | page | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | A list of flash calls | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "additionalProperties": true,
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/birdListNumbers.topic b/documentation/topics/generated/birdListNumbers.topic
new file mode 100644
index 00000000..811b45aa
--- /dev/null
+++ b/documentation/topics/generated/birdListNumbers.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/numbers
+
+
+ Operation ID: birdListNumbers
+ List your numbers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (optional if configured) |
+ | page | query | no | integer | |
+ | limit | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | A list of numbers | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdNumberListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdListVoiceCalls.topic b/documentation/topics/generated/birdListVoiceCalls.topic
new file mode 100644
index 00000000..2b6ca35a
--- /dev/null
+++ b/documentation/topics/generated/birdListVoiceCalls.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/voice/calls
+
+
+ Operation ID: birdListVoiceCalls
+ List voice calls
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | page | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | A list of calls | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdVoiceCallListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdSayOnVoiceCall.topic b/documentation/topics/generated/birdSayOnVoiceCall.topic
new file mode 100644
index 00000000..381abe3e
--- /dev/null
+++ b/documentation/topics/generated/birdSayOnVoiceCall.topic
@@ -0,0 +1,88 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/calls/{id}/say
+
+
+ Operation ID: birdSayOnVoiceCall
+ Say a message on an active voice call and hang up afterwards
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+ | id | path | yes | string | Call identifier |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "hangup": {
+ "description": "Whether to hang up the call after the message finishes playing (defaults to true)",
+ "example": true,
+ "type": "boolean"
+ },
+ "locale": {
+ "description": "The locale to use for the TTS voice (e.g. en-US)",
+ "example": "en-US",
+ "type": "string"
+ },
+ "loop": {
+ "description": "Number of times to loop the message",
+ "example": 1,
+ "type": "integer"
+ },
+ "text": {
+ "description": "The text message to play via TTS",
+ "example": "The gate will open shortly.",
+ "type": "string"
+ },
+ "timeout": {
+ "description": "Timeout in seconds for the TTS action",
+ "example": 1,
+ "type": "integer"
+ },
+ "voice": {
+ "description": "The voice identifier to use",
+ "example": "male",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | TTS action requested | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/birdTestOutboundVoiceCall.topic b/documentation/topics/generated/birdTestOutboundVoiceCall.topic
new file mode 100644
index 00000000..20c7e7df
--- /dev/null
+++ b/documentation/topics/generated/birdTestOutboundVoiceCall.topic
@@ -0,0 +1,76 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/voice/calls/test-outbound
+
+
+ Operation ID: birdTestOutboundVoiceCall
+ Calls +45 42 33 11 28 and hangs up when the call reaches accepted/ongoing state.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | workspaceId | query | no | string | Bird Workspace identifier (falls back to module configuration if omitted) |
+ | channelId | query | no | string | Bird Channel identifier (falls back to module configuration if omitted) |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "additionalProperties": true,
+ "properties": {
+ "from": {
+ "description": "Caller E.164 number to use for the test call",
+ "example": "+4599988877",
+ "type": "string"
+ },
+ "hangupCause": {
+ "description": "Optional hangup cause passed through to Bird",
+ "type": "string"
+ },
+ "maxPollSeconds": {
+ "description": "Max time to wait before timing out",
+ "example": 30,
+ "minimum": 5,
+ "type": "integer"
+ },
+ "pollIntervalSeconds": {
+ "description": "Poll interval while waiting for accepted status",
+ "example": 2,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Test call created and either hung up or timed out | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdTestOutboundCallResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/captureStripePaymentIntent.topic b/documentation/topics/generated/captureStripePaymentIntent.topic
new file mode 100644
index 00000000..98029a55
--- /dev/null
+++ b/documentation/topics/generated/captureStripePaymentIntent.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders/module/stripe/payment_intent/capture
+
+
+ Operation ID: captureStripePaymentIntent
+ Capture Stripe payment intent
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/checkEconomicCustomerExists.topic b/documentation/topics/generated/checkEconomicCustomerExists.topic
new file mode 100644
index 00000000..cde2df37
--- /dev/null
+++ b/documentation/topics/generated/checkEconomicCustomerExists.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/doesCustomerExist
+
+
+ Operation ID: checkEconomicCustomerExists
+ Check if customer exists in e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | cvr | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer check completed | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/clearSystemSearchCache.topic b/documentation/topics/generated/clearSystemSearchCache.topic
new file mode 100644
index 00000000..9c9c72b8
--- /dev/null
+++ b/documentation/topics/generated/clearSystemSearchCache.topic
@@ -0,0 +1,38 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /superuser/search/system/cache
+
+
+ Operation ID: clearSystemSearchCache
+ Clears both query-result cache and intent-parser cache namespaces for system-wide search.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Cache cleared successfully | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SystemSearchCacheClearResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/cloneRole.topic b/documentation/topics/generated/cloneRole.topic
new file mode 100644
index 00000000..28e7f369
--- /dev/null
+++ b/documentation/topics/generated/cloneRole.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /roles/clone
+
+
+ Operation ID: cloneRole
+ Clone role
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "role_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "role_id",
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/closeDraftInvoice.topic b/documentation/topics/generated/closeDraftInvoice.topic
new file mode 100644
index 00000000..c48f3b07
--- /dev/null
+++ b/documentation/topics/generated/closeDraftInvoice.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /invoices/draft/close
+
+
+ Operation ID: closeDraftInvoice
+ Close a draft invoice
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Draft invoice closed successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/compareCollectedInvoiceEconomic.topic b/documentation/topics/generated/compareCollectedInvoiceEconomic.topic
new file mode 100644
index 00000000..5c599827
--- /dev/null
+++ b/documentation/topics/generated/compareCollectedInvoiceEconomic.topic
@@ -0,0 +1,49 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices/economic/compare
+
+
+ Operation ID: compareCollectedInvoiceEconomic
+ Compares a collected invoice in the system with its corresponding invoice in E-conomic.
+Returns totals from both sources, their difference, and any warnings detected during comparison.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | collected_invoice_id | query | yes | integer | The internal collected invoice ID to compare |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Comparison completed successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CollectedInvoiceEconomicCompareResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/compareCollectedInvoiceEconomicV2.topic b/documentation/topics/generated/compareCollectedInvoiceEconomicV2.topic
new file mode 100644
index 00000000..85317628
--- /dev/null
+++ b/documentation/topics/generated/compareCollectedInvoiceEconomicV2.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices/economic/v2/compare
+
+
+ Operation ID: compareCollectedInvoiceEconomicV2
+ Compare internal invoice with draft/booked (V2)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | collected_invoice_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Comparison completed | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CollectedInvoiceEconomicV2CompareResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/compareCollectedInvoiceEconomicV2Bulk.topic b/documentation/topics/generated/compareCollectedInvoiceEconomicV2Bulk.topic
new file mode 100644
index 00000000..006c95d9
--- /dev/null
+++ b/documentation/topics/generated/compareCollectedInvoiceEconomicV2Bulk.topic
@@ -0,0 +1,63 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /collected-invoices/economic/v2/compare/bulk
+
+
+ Operation ID: compareCollectedInvoiceEconomicV2Bulk
+ Bulk compare collected invoices against draft/booked (V2)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "collected_invoice_ids": {
+ "items": {
+ "minimum": 1,
+ "type": "integer"
+ },
+ "maxItems": 200,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "collected_invoice_ids"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Bulk comparison completed | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CollectedInvoiceEconomicV2CompareBulkResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/completeOrderBooking.topic b/documentation/topics/generated/completeOrderBooking.topic
new file mode 100644
index 00000000..120f2773
--- /dev/null
+++ b/documentation/topics/generated/completeOrderBooking.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /order-bookings/complete
+
+
+ Operation ID: completeOrderBooking
+ Complete order booking
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "safety_seal": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/completeSubuserSetup.topic b/documentation/topics/generated/completeSubuserSetup.topic
new file mode 100644
index 00000000..c02cbf38
--- /dev/null
+++ b/documentation/topics/generated/completeSubuserSetup.topic
@@ -0,0 +1,83 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /subusers/setup
+
+
+ Operation ID: completeSubuserSetup
+ Completes subuser setup by setting a password and basic profile fields. Accepts optional
+`username` and `email`.
+
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "email": {
+ "format": "email",
+ "maxLength": 255,
+ "minLength": 3,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 3,
+ "type": "string"
+ },
+ "password": {
+ "description": "Must include at least one uppercase letter, one lowercase letter, and one number",
+ "format": "password",
+ "minLength": 8,
+ "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d).+$",
+ "type": "string"
+ },
+ "token": {
+ "description": "One-time setup token",
+ "type": "string"
+ },
+ "username": {
+ "maxLength": 255,
+ "minLength": 3,
+ "type": "string"
+ }
+ },
+ "required": [
+ "token",
+ "password",
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Setup completed | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Password set successfully",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/completeWashWithoutWashCertificate.topic b/documentation/topics/generated/completeWashWithoutWashCertificate.topic
new file mode 100644
index 00000000..b3ab8de1
--- /dev/null
+++ b/documentation/topics/generated/completeWashWithoutWashCertificate.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /admin/bookings/completeWashWithoutWashCertificate
+
+
+ Operation ID: completeWashWithoutWashCertificate
+ Complete wash without wash certificate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createBackupModule.topic b/documentation/topics/generated/createBackupModule.topic
new file mode 100644
index 00000000..762bd287
--- /dev/null
+++ b/documentation/topics/generated/createBackupModule.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/backup/backups
+
+
+ Operation ID: createBackupModule
+ Create backup module
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "description"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createCategory.topic b/documentation/topics/generated/createCategory.topic
new file mode 100644
index 00000000..adfc0ded
--- /dev/null
+++ b/documentation/topics/generated/createCategory.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /categories
+
+
+ Operation ID: createCategory
+ Create a new product category
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/CategoryCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Category created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createCollectedInvoice.topic b/documentation/topics/generated/createCollectedInvoice.topic
new file mode 100644
index 00000000..ee6dd4ba
--- /dev/null
+++ b/documentation/topics/generated/createCollectedInvoice.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /collected-invoices
+
+
+ Operation ID: createCollectedInvoice
+ Create a new collected invoice
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Collected invoice created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createDepartment.topic b/documentation/topics/generated/createDepartment.topic
new file mode 100644
index 00000000..308861b5
--- /dev/null
+++ b/documentation/topics/generated/createDepartment.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /departments
+
+
+ Operation ID: createDepartment
+ Create a new department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Department created successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createDepartmentGate.topic b/documentation/topics/generated/createDepartmentGate.topic
new file mode 100644
index 00000000..d071b5b0
--- /dev/null
+++ b/documentation/topics/generated/createDepartmentGate.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/gates
+
+
+ Operation ID: createDepartmentGate
+ Create department gate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentGateCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Department gate created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentGate"
+}
+
+
+
diff --git a/documentation/topics/generated/createDepartmentGoal.topic b/documentation/topics/generated/createDepartmentGoal.topic
new file mode 100644
index 00000000..ff1fe33d
--- /dev/null
+++ b/documentation/topics/generated/createDepartmentGoal.topic
@@ -0,0 +1,52 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /goals/department
+
+
+ Operation ID: createDepartmentGoal
+ Create a new department goal.
+
+Access control:
+- The provided `departments` must be a subset of the user's departments unless the user has `superuser`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentGoalCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Department goal created successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentGoal"
+}
+
+
+
diff --git a/documentation/topics/generated/createDepartmentLane.topic b/documentation/topics/generated/createDepartmentLane.topic
new file mode 100644
index 00000000..5710a15a
--- /dev/null
+++ b/documentation/topics/generated/createDepartmentLane.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/lanes
+
+
+ Operation ID: createDepartmentLane
+ Create a new department lane
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentLaneCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Department lane created successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createDepartmentRelay.topic b/documentation/topics/generated/createDepartmentRelay.topic
new file mode 100644
index 00000000..c671868a
--- /dev/null
+++ b/documentation/topics/generated/createDepartmentRelay.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/relays
+
+
+ Operation ID: createDepartmentRelay
+ Create department relay
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentRelayCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Department relay created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentRelay"
+}
+
+
+
diff --git a/documentation/topics/generated/createEconomicCustomer.topic b/documentation/topics/generated/createEconomicCustomer.topic
new file mode 100644
index 00000000..6655427d
--- /dev/null
+++ b/documentation/topics/generated/createEconomicCustomer.topic
@@ -0,0 +1,67 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/economic/customer
+
+
+ Operation ID: createEconomicCustomer
+ Create e-conomic customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "type": "integer"
+ },
+ "cvr": {
+ "type": "integer"
+ },
+ "email": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "phone": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "customer_number",
+ "cvr",
+ "email",
+ "phone",
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createNotification.topic b/documentation/topics/generated/createNotification.topic
new file mode 100644
index 00000000..da2149df
--- /dev/null
+++ b/documentation/topics/generated/createNotification.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /notifications
+
+
+ Operation ID: createNotification
+ Create a new notification
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/NotificationCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Notification created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createOrder.topic b/documentation/topics/generated/createOrder.topic
new file mode 100644
index 00000000..d3de5140
--- /dev/null
+++ b/documentation/topics/generated/createOrder.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders
+
+
+ Operation ID: createOrder
+ Create a new wash order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/OrderCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Order created successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/Order"
+}
+
+
+
diff --git a/documentation/topics/generated/createPasskey.topic b/documentation/topics/generated/createPasskey.topic
new file mode 100644
index 00000000..60c412aa
--- /dev/null
+++ b/documentation/topics/generated/createPasskey.topic
@@ -0,0 +1,57 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /account/security/passkeys
+
+
+ Operation ID: createPasskey
+ Create/add a passkey for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/PasskeyCreateRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Passkey created | application/json |
+ | 400 | Invalid session or request | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+ Schema for response 400 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/createProduct.topic b/documentation/topics/generated/createProduct.topic
new file mode 100644
index 00000000..ff66a254
--- /dev/null
+++ b/documentation/topics/generated/createProduct.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /products
+
+
+ Operation ID: createProduct
+ Create a new product
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/ProductCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Product created successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createStripeInvoice.topic b/documentation/topics/generated/createStripeInvoice.topic
new file mode 100644
index 00000000..d1dde192
--- /dev/null
+++ b/documentation/topics/generated/createStripeInvoice.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/stripe/invoice
+
+
+ Operation ID: createStripeInvoice
+ Create an invoice in Stripe
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Stripe invoice created successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createStripePaymentIntent.topic b/documentation/topics/generated/createStripePaymentIntent.topic
new file mode 100644
index 00000000..397e461a
--- /dev/null
+++ b/documentation/topics/generated/createStripePaymentIntent.topic
@@ -0,0 +1,58 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders/module/stripe/payment_intent
+
+
+ Operation ID: createStripePaymentIntent
+ Create Stripe payment intent
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "reader": {
+ "type": "string"
+ },
+ "tax_percentage": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "reader"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/createSubuser.topic b/documentation/topics/generated/createSubuser.topic
new file mode 100644
index 00000000..df6fd5a6
--- /dev/null
+++ b/documentation/topics/generated/createSubuser.topic
@@ -0,0 +1,78 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /subusers/me
+
+
+ Operation ID: createSubuser
+ Creates a subuser (driver) account using a company's CVR and a phone number. Validates the
+CVR via e-conomic, ensures the phone number is not already in use, and if SMS is enabled
+sends a setup link by SMS for the user to complete registration.
+
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "cvr": {
+ "description": "Danish CVR (8 digits)",
+ "example": 12345678,
+ "type": "integer"
+ },
+ "phone": {
+ "description": "Phone number (4–15 digits, no leading +)",
+ "example": 12345678,
+ "type": "integer"
+ },
+ "phone_country_code": {
+ "description": "Phone country code (1–3 digits)",
+ "example": 45,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "cvr",
+ "phone_country_code",
+ "phone"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Subuser created (or pending setup) and company identified | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "customer_number": {
+ "description": "Matched e-conomic customer number",
+ "example": 1000,
+ "type": "integer"
+ },
+ "cvr": {
+ "example": 12345678,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/createSubuserGrant.topic b/documentation/topics/generated/createSubuserGrant.topic
new file mode 100644
index 00000000..95eedbaf
--- /dev/null
+++ b/documentation/topics/generated/createSubuserGrant.topic
@@ -0,0 +1,53 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /subusers/grants
+
+
+ Operation ID: createSubuserGrant
+ Create subuser grant
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/SubuserGrantCreateRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Grant created | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "grant": {
+ "$ref": "#/components/schemas/SubuserGrant"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/createUser.topic b/documentation/topics/generated/createUser.topic
new file mode 100644
index 00000000..f0a386b4
--- /dev/null
+++ b/documentation/topics/generated/createUser.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /users
+
+
+ Operation ID: createUser
+ Create a new user account
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/UserCreate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | User created successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 201 (application/json):
+
+{
+ "$ref": "#/components/schemas/User"
+}
+
+
+
diff --git a/documentation/topics/generated/customerLogin.topic b/documentation/topics/generated/customerLogin.topic
new file mode 100644
index 00000000..46a27e5c
--- /dev/null
+++ b/documentation/topics/generated/customerLogin.topic
@@ -0,0 +1,95 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/login
+
+
+ Operation ID: customerLogin
+ Authenticate a customer using customer number and password
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "description": "Customer's e-conomic customer number",
+ "example": 12345,
+ "type": "integer"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ },
+ "password": {
+ "description": "Customer password",
+ "format": "password",
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "customer_number",
+ "password",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Login successful | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "token": {
+ "description": "Bearer authentication token",
+ "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "2fa_required": {
+ "example": true,
+ "type": "boolean"
+ },
+ "2fa_token": {
+ "description": "Temporary 2FA verification token",
+ "example": "557a3e7b1a2b...",
+ "type": "string"
+ }
+ },
+ "required": [
+ "2fa_required",
+ "2fa_token"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/debugWorker.topic b/documentation/topics/generated/debugWorker.topic
new file mode 100644
index 00000000..6c2a8334
--- /dev/null
+++ b/documentation/topics/generated/debugWorker.topic
@@ -0,0 +1,35 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/debug
+
+
+ Operation ID: debugWorker
+ Execute debug commands on the worker (often restricted)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Debug information retrieved successfully | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteCustomerAttribute.topic b/documentation/topics/generated/deleteCustomerAttribute.topic
new file mode 100644
index 00000000..f1b3f327
--- /dev/null
+++ b/documentation/topics/generated/deleteCustomerAttribute.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /customer/attributes
+
+
+ Operation ID: deleteCustomerAttribute
+ Remove a custom attribute from a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer attribute deleted successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteCustomerDefaultDepartment.topic b/documentation/topics/generated/deleteCustomerDefaultDepartment.topic
new file mode 100644
index 00000000..e44f3dc9
--- /dev/null
+++ b/documentation/topics/generated/deleteCustomerDefaultDepartment.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /customer/department/default
+
+
+ Operation ID: deleteCustomerDefaultDepartment
+ Delete customer default department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteCustomerFixedPricing.topic b/documentation/topics/generated/deleteCustomerFixedPricing.topic
new file mode 100644
index 00000000..38fffadf
--- /dev/null
+++ b/documentation/topics/generated/deleteCustomerFixedPricing.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /customer/pricing/fixed
+
+
+ Operation ID: deleteCustomerFixedPricing
+ Delete customer fixed pricing
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteCustomerNote.topic b/documentation/topics/generated/deleteCustomerNote.topic
new file mode 100644
index 00000000..980869e6
--- /dev/null
+++ b/documentation/topics/generated/deleteCustomerNote.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /customer/notes
+
+
+ Operation ID: deleteCustomerNote
+ Remove a note from a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer note deleted successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteDepartmentGate.topic b/documentation/topics/generated/deleteDepartmentGate.topic
new file mode 100644
index 00000000..63cf3ad9
--- /dev/null
+++ b/documentation/topics/generated/deleteDepartmentGate.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/gates
+
+
+ Operation ID: deleteDepartmentGate
+ Delete department gate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department gate deleted | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteDepartmentGoal.topic b/documentation/topics/generated/deleteDepartmentGoal.topic
new file mode 100644
index 00000000..9f692677
--- /dev/null
+++ b/documentation/topics/generated/deleteDepartmentGoal.topic
@@ -0,0 +1,49 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /goals/department/progress-alert/test
+
+
+ Operation ID: deleteDepartmentGoal
+ Delete a department goal by `id`.
+
+Access control:
+- The creator (`created_by`) may delete regardless of department membership.
+- Otherwise the user must satisfy the subset rule or have `superuser`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | ID of the goal to delete |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department goal deleted successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteDepartmentRelay.topic b/documentation/topics/generated/deleteDepartmentRelay.topic
new file mode 100644
index 00000000..45dc0996
--- /dev/null
+++ b/documentation/topics/generated/deleteDepartmentRelay.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/relays
+
+
+ Operation ID: deleteDepartmentRelay
+ Delete department relay
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department relay deleted | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteNotification.topic b/documentation/topics/generated/deleteNotification.topic
new file mode 100644
index 00000000..552a3600
--- /dev/null
+++ b/documentation/topics/generated/deleteNotification.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /notifications
+
+
+ Operation ID: deleteNotification
+ Delete a notification
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Notification deleted successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteOrder.topic b/documentation/topics/generated/deleteOrder.topic
new file mode 100644
index 00000000..46c1e866
--- /dev/null
+++ b/documentation/topics/generated/deleteOrder.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /orders
+
+
+ Operation ID: deleteOrder
+ Delete an existing order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order deleted successfully | application/json |
+ | 401 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteOrderItem.topic b/documentation/topics/generated/deleteOrderItem.topic
new file mode 100644
index 00000000..3e85f0e9
--- /dev/null
+++ b/documentation/topics/generated/deleteOrderItem.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /order/items
+
+
+ Operation ID: deleteOrderItem
+ Remove an item from an order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order item deleted successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteOwnBooking.topic b/documentation/topics/generated/deleteOwnBooking.topic
new file mode 100644
index 00000000..b875df74
--- /dev/null
+++ b/documentation/topics/generated/deleteOwnBooking.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /user/bookings/delete
+
+
+ Operation ID: deleteOwnBooking
+ Delete own booking
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deletePasskey.topic b/documentation/topics/generated/deletePasskey.topic
new file mode 100644
index 00000000..ccc2418e
--- /dev/null
+++ b/documentation/topics/generated/deletePasskey.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /account/security/passkeys/{id}
+
+
+ Operation ID: deletePasskey
+ Delete a passkey
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | path | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Passkey deleted | application/json |
+ | 404 | Not found | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+ Schema for response 404 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveCondition.topic b/documentation/topics/generated/deleteSelfserveCondition.topic
new file mode 100644
index 00000000..316dccc2
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveCondition.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/conditions
+
+
+ Operation ID: deleteSelfserveCondition
+ Delete a self-serve condition.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Condition ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted condition | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "example": "Condition deleted",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveConditionRule.topic b/documentation/topics/generated/deleteSelfserveConditionRule.topic
new file mode 100644
index 00000000..67e38bd1
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveConditionRule.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/condition/rules
+
+
+ Operation ID: deleteSelfserveConditionRule
+ Delete a self-serve condition rule.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Rule ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted condition rule | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "example": "Rule deleted",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveMachineType.topic b/documentation/topics/generated/deleteSelfserveMachineType.topic
new file mode 100644
index 00000000..d9249f81
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveMachineType.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/machine-types
+
+
+ Operation ID: deleteSelfserveMachineType
+ Delete reusable self-serve machine type
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted machine type | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "example": "Machine type deleted",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveQuestion.topic b/documentation/topics/generated/deleteSelfserveQuestion.topic
new file mode 100644
index 00000000..a820faf4
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveQuestion.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/questions
+
+
+ Operation ID: deleteSelfserveQuestion
+ Delete a self-serve question by ID.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Question ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted question | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "example": "Question deleted",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveTask.topic b/documentation/topics/generated/deleteSelfserveTask.topic
new file mode 100644
index 00000000..2d49d53b
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveTask.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/tasks
+
+
+ Operation ID: deleteSelfserveTask
+ Delete a self-serve task by ID.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Task ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted task | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "example": "Task deleted",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveTaskAttachment.topic b/documentation/topics/generated/deleteSelfserveTaskAttachment.topic
new file mode 100644
index 00000000..1b0b9cf5
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveTaskAttachment.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/tasks/attachments
+
+
+ Operation ID: deleteSelfserveTaskAttachment
+ Remove an attachment from a specific self-serve task.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | task_id | query | yes | integer | Task ID |
+ | attachment_id | query | yes | integer | Attachment ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Attachment deleted successfully | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Attachment deleted successfully",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteSelfserveVehicleCondition.topic b/documentation/topics/generated/deleteSelfserveVehicleCondition.topic
new file mode 100644
index 00000000..f893940e
--- /dev/null
+++ b/documentation/topics/generated/deleteSelfserveVehicleCondition.topic
@@ -0,0 +1,58 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /department/selfserve/vehicle/conditions
+
+
+ Operation ID: deleteSelfserveVehicleCondition
+ Delete a vehicle condition. Customers can only delete conditions for their own vehicles.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Condition ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully deleted vehicle condition | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Condition deleted",
+ "type": "string"
+ },
+ "selfserve": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/SelfserveWashSummary"
+ }
+ ],
+ "nullable": true
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteStripePaymentIntent.topic b/documentation/topics/generated/deleteStripePaymentIntent.topic
new file mode 100644
index 00000000..9d23714a
--- /dev/null
+++ b/documentation/topics/generated/deleteStripePaymentIntent.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /orders/module/stripe/payment_intent
+
+
+ Operation ID: deleteStripePaymentIntent
+ Delete Stripe payment intent
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/deleteSubuserGrant.topic b/documentation/topics/generated/deleteSubuserGrant.topic
new file mode 100644
index 00000000..626a1df2
--- /dev/null
+++ b/documentation/topics/generated/deleteSubuserGrant.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /subusers/grants/{id}
+
+
+ Operation ID: deleteSubuserGrant
+ Delete subuser grant
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | path | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Grant deleted | application/json |
+ | 401 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Grant deleted",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/deleteVehicle.topic b/documentation/topics/generated/deleteVehicle.topic
new file mode 100644
index 00000000..e6a88c01
--- /dev/null
+++ b/documentation/topics/generated/deleteVehicle.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /vehicles
+
+
+ Operation ID: deleteVehicle
+ Delete an existing vehicle.
+
+Permissions:
+- Own scope: `delete_vehicle` (linked to subuser node `VEHICLES_DELETE`).
+- Broader scope: `delete_vehicle_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle deleted | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/disable2fa.topic b/documentation/topics/generated/disable2fa.topic
new file mode 100644
index 00000000..12348e2f
--- /dev/null
+++ b/documentation/topics/generated/disable2fa.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/2fa/disable
+
+
+ Operation ID: disable2fa
+ Verify a code and disable 2FA for the authenticated user/subuser
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "code": {
+ "description": "The 6-digit TOTP code",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | 2FA disabled successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/disableWorkerDebug.topic b/documentation/topics/generated/disableWorkerDebug.topic
new file mode 100644
index 00000000..46c74ffa
--- /dev/null
+++ b/documentation/topics/generated/disableWorkerDebug.topic
@@ -0,0 +1,35 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/debug/off
+
+
+ Operation ID: disableWorkerDebug
+ Disable worker debug
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Worker debug disabled | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/downloadBookingPdf.topic b/documentation/topics/generated/downloadBookingPdf.topic
new file mode 100644
index 00000000..7339c910
--- /dev/null
+++ b/documentation/topics/generated/downloadBookingPdf.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bookings/download_pdf
+
+
+ Operation ID: downloadBookingPdf
+ Download booking PDF
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/downloadOrderAttachment.topic b/documentation/topics/generated/downloadOrderAttachment.topic
new file mode 100644
index 00000000..1ddf54f2
--- /dev/null
+++ b/documentation/topics/generated/downloadOrderAttachment.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /orders/attachments/download
+
+
+ Operation ID: downloadOrderAttachment
+ Download a specific order attachment
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Attachment downloaded successfully | application/octet-stream |
+
+ Schema for response 200 (application/octet-stream):
+
+{
+ "format": "binary",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/downloadOwnWashCertificate.topic b/documentation/topics/generated/downloadOwnWashCertificate.topic
new file mode 100644
index 00000000..39905d0d
--- /dev/null
+++ b/documentation/topics/generated/downloadOwnWashCertificate.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /user/bookings/washcertificate/download
+
+
+ Operation ID: downloadOwnWashCertificate
+ Get download link for own wash certificate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/downloadSelfserveTaskAttachment.topic b/documentation/topics/generated/downloadSelfserveTaskAttachment.topic
new file mode 100644
index 00000000..9511f613
--- /dev/null
+++ b/documentation/topics/generated/downloadSelfserveTaskAttachment.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/tasks/attachments/download
+
+
+ Operation ID: downloadSelfserveTaskAttachment
+ Generate a download link for a specific self-serve task attachment.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | task_id | query | yes | integer | Task ID |
+ | attachment_id | query | yes | integer | Attachment ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully generated download link | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "download_link": {
+ "format": "uri",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/editBrandingOption.topic b/documentation/topics/generated/editBrandingOption.topic
new file mode 100644
index 00000000..04c8ac11
--- /dev/null
+++ b/documentation/topics/generated/editBrandingOption.topic
@@ -0,0 +1,61 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /branding
+
+
+ Operation ID: editBrandingOption
+ Update an existing branding option
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "cvr": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Branding option updated successfully | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/editDailyReport.topic b/documentation/topics/generated/editDailyReport.topic
new file mode 100644
index 00000000..7c667823
--- /dev/null
+++ b/documentation/topics/generated/editDailyReport.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /departments/daily-reports
+
+
+ Operation ID: editDailyReport
+ Edit daily report
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "report": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "report"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/editRole.topic b/documentation/topics/generated/editRole.topic
new file mode 100644
index 00000000..7f63dc49
--- /dev/null
+++ b/documentation/topics/generated/editRole.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /roles
+
+
+ Operation ID: editRole
+ Edit role
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/editVehicle.topic b/documentation/topics/generated/editVehicle.topic
new file mode 100644
index 00000000..bdd5afc9
--- /dev/null
+++ b/documentation/topics/generated/editVehicle.topic
@@ -0,0 +1,81 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /vehicles
+
+
+ Operation ID: editVehicle
+ Update fields on an existing vehicle.
+
+Permissions:
+- Own scope: `edit_vehicle` (linked to subuser node `VEHICLES_EDIT`).
+- Broader scope: `edit_vehicle_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "reference": {
+ "maxLength": 255,
+ "nullable": true,
+ "type": "string"
+ },
+ "reg": {
+ "maxLength": 12,
+ "minLength": 2,
+ "type": "string"
+ },
+ "type": {
+ "type": "integer"
+ },
+ "wash_subscription": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle updated | application/json |
+ | 400 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/employeeLogin.topic b/documentation/topics/generated/employeeLogin.topic
new file mode 100644
index 00000000..1520e2fd
--- /dev/null
+++ b/documentation/topics/generated/employeeLogin.topic
@@ -0,0 +1,92 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/employee/login
+
+
+ Operation ID: employeeLogin
+ Authenticate an employee using user ID and password
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ },
+ "password": {
+ "description": "Employee password",
+ "format": "password",
+ "type": "string"
+ },
+ "user_id": {
+ "description": "Employee user ID",
+ "example": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "user_id",
+ "password",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Login successful | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "token": {
+ "description": "Bearer authentication token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "2fa_required": {
+ "example": true,
+ "type": "boolean"
+ },
+ "2fa_token": {
+ "description": "Temporary 2FA verification token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "2fa_required",
+ "2fa_token"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/enable2fa.topic b/documentation/topics/generated/enable2fa.topic
new file mode 100644
index 00000000..7f9b9b18
--- /dev/null
+++ b/documentation/topics/generated/enable2fa.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/2fa/enable
+
+
+ Operation ID: enable2fa
+ Verify a code and enable 2FA for the authenticated user/subuser
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "code": {
+ "description": "The 6-digit TOTP code",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | 2FA enabled successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/enableSelfServeLaneMachineRelay.topic b/documentation/topics/generated/enableSelfServeLaneMachineRelay.topic
new file mode 100644
index 00000000..a68cabb8
--- /dev/null
+++ b/documentation/topics/generated/enableSelfServeLaneMachineRelay.topic
@@ -0,0 +1,83 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/self-serve/lane/relay/machine/enable
+
+
+ Operation ID: enableSelfServeLaneMachineRelay
+ Manually turns on the MACHINE relay for a self-serve lane if and only if the current allowed services
+include `MACHINE` (set via `/modules/self-serve/lane/services/allowed`). The relay is never automatically
+enabled; an explicit call to this endpoint is required.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "duration": {
+ "description": "Optional number of seconds after which the relay should automatically turn off",
+ "type": "integer"
+ },
+ "lane_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "lane_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | MACHINE relay enabled | application/json |
+ | 401 | | |
+ | 403 | Not allowed to enable MACHINE relay (no matching task currently shown) | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "duration": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "lane_id": {
+ "type": "integer"
+ },
+ "relay": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+ Schema for response 403 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/enableWorkerDebug.topic b/documentation/topics/generated/enableWorkerDebug.topic
new file mode 100644
index 00000000..88ebd8d6
--- /dev/null
+++ b/documentation/topics/generated/enableWorkerDebug.topic
@@ -0,0 +1,35 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/debug/on
+
+
+ Operation ID: enableWorkerDebug
+ Enable worker debug
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Worker debug enabled | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/exportDraftInvoiceToEconomic.topic b/documentation/topics/generated/exportDraftInvoiceToEconomic.topic
new file mode 100644
index 00000000..3522dbb5
--- /dev/null
+++ b/documentation/topics/generated/exportDraftInvoiceToEconomic.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /economic/invoice/draft/export
+
+
+ Operation ID: exportDraftInvoiceToEconomic
+ Export a draft invoice to e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Draft invoice exported successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/exportInvoiceToEconomic.topic b/documentation/topics/generated/exportInvoiceToEconomic.topic
new file mode 100644
index 00000000..a82deef6
--- /dev/null
+++ b/documentation/topics/generated/exportInvoiceToEconomic.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /economic/invoice/export
+
+
+ Operation ID: exportInvoiceToEconomic
+ Export a booked invoice to e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Invoice exported successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/forceDisableSelfServeLaneMachine.topic b/documentation/topics/generated/forceDisableSelfServeLaneMachine.topic
new file mode 100644
index 00000000..7e1fa2cc
--- /dev/null
+++ b/documentation/topics/generated/forceDisableSelfServeLaneMachine.topic
@@ -0,0 +1,84 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/self-serve/lane/force/machine/disable
+
+
+ Operation ID: forceDisableSelfServeLaneMachine
+ Superuser/emergency endpoint. Turns off the MACHINE relay while ensuring the lane remains in an IN_WASH state
+(simulating a started wash without machine assistance).
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "lane_id": {
+ "type": "integer"
+ },
+ "license_plate": {
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "required": [
+ "lane_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | MACHINE relay force-disabled and lane ensured in-wash | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "forced": {
+ "type": "boolean"
+ },
+ "lane_id": {
+ "type": "integer"
+ },
+ "machine": {
+ "enum": [
+ "DISABLED"
+ ],
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "wash_start_time": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/forceEnableSelfServeLaneMachine.topic b/documentation/topics/generated/forceEnableSelfServeLaneMachine.topic
new file mode 100644
index 00000000..8e0fa83d
--- /dev/null
+++ b/documentation/topics/generated/forceEnableSelfServeLaneMachine.topic
@@ -0,0 +1,94 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/self-serve/lane/force/machine/enable
+
+
+ Operation ID: forceEnableSelfServeLaneMachine
+ Superuser/emergency endpoint. Bypasses the allowed services gating and directly turns on the MACHINE relay.
+Also ensures the lane is marked as OCCUPIED and IN_WASH with a wash start timestamp if not already set.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "duration": {
+ "description": "Optional number of seconds after which the relay should automatically turn off",
+ "nullable": true,
+ "type": "integer"
+ },
+ "lane_id": {
+ "type": "integer"
+ },
+ "license_plate": {
+ "description": "Optional license plate to associate with the lane",
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "required": [
+ "lane_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | MACHINE relay force-enabled and lane marked in-wash | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "duration": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "forced": {
+ "type": "boolean"
+ },
+ "lane_id": {
+ "type": "integer"
+ },
+ "machine": {
+ "enum": [
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "wash_start_time": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/generateWashCertificate.topic b/documentation/topics/generated/generateWashCertificate.topic
new file mode 100644
index 00000000..2d926baf
--- /dev/null
+++ b/documentation/topics/generated/generateWashCertificate.topic
@@ -0,0 +1,49 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /order/wash-certificate
+
+
+ Operation ID: generateWashCertificate
+ Generate a wash certificate for an order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "order_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Wash certificate generated successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getAllExchangeRates.topic b/documentation/topics/generated/getAllExchangeRates.topic
new file mode 100644
index 00000000..72046d22
--- /dev/null
+++ b/documentation/topics/generated/getAllExchangeRates.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/fxratesapi/rates
+
+
+ Operation ID: getAllExchangeRates
+ Get all available exchange rates
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Exchange rates retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getAvailableVehicleAddons.topic b/documentation/topics/generated/getAvailableVehicleAddons.topic
new file mode 100644
index 00000000..8e78a2c1
--- /dev/null
+++ b/documentation/topics/generated/getAvailableVehicleAddons.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /vehicles/addons/available
+
+
+ Operation ID: getAvailableVehicleAddons
+ Get list of available addons for a vehicle.
+
+Permissions:
+- Own scope: `list_vehicle_addon_own` (linked to subuser node `VEHICLES_LIST`).
+- Broader scope: `list_vehicles_addon_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Available addons retrieved successfully | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getBackupsConfig.topic b/documentation/topics/generated/getBackupsConfig.topic
new file mode 100644
index 00000000..4bf7609d
--- /dev/null
+++ b/documentation/topics/generated/getBackupsConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /backups/config
+
+
+ Operation ID: getBackupsConfig
+ Get backups config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Backups configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BackupsConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getBirdConfig.topic b/documentation/topics/generated/getBirdConfig.topic
new file mode 100644
index 00000000..f76ca4be
--- /dev/null
+++ b/documentation/topics/generated/getBirdConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bird/config
+
+
+ Operation ID: getBirdConfig
+ Get Bird config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Bird configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/BirdConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getCollectedInvoiceEconomicV2Details.topic b/documentation/topics/generated/getCollectedInvoiceEconomicV2Details.topic
new file mode 100644
index 00000000..b0a7256f
--- /dev/null
+++ b/documentation/topics/generated/getCollectedInvoiceEconomicV2Details.topic
@@ -0,0 +1,49 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices/economic/v2/details
+
+
+ Operation ID: getCollectedInvoiceEconomicV2Details
+ Returns normalized internal lines and best-effort fetched draft/booked e-conomic lines
+for a collected invoice, including department distributions and warnings.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | collected_invoice_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Details resolved successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CollectedInvoiceEconomicV2DetailsResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getCollectedInvoiceEconomicV2RevenueStatistics.topic b/documentation/topics/generated/getCollectedInvoiceEconomicV2RevenueStatistics.topic
new file mode 100644
index 00000000..c4f78f25
--- /dev/null
+++ b/documentation/topics/generated/getCollectedInvoiceEconomicV2RevenueStatistics.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices/economic/v2/revenue-statistics
+
+
+ Operation ID: getCollectedInvoiceEconomicV2RevenueStatistics
+ Aggregates booked e-conomic revenue across invoices and lines, with optional filters
+for date range, customer(s), department(s), currency, and barred-customer status.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | no | string | Start date (inclusive), defaults to first day of current month. |
+ | dateTo | query | no | string | End date (inclusive), defaults to today. |
+ | customer_numbers | query | no | string | Comma-separated customer numbers to include. |
+ | department_numbers | query | no | string | Comma-separated department numbers to include. |
+ | currency | query | no | string | Restrict to a specific invoice currency. |
+ | barred | query | no | string | Filter by e-conomic customer barred status. |
+ | max_pages | query | no | integer | Safety cap for paginated e-conomic reads. |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Revenue statistics resolved successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CollectedInvoiceEconomicV2RevenueStatisticsResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getCurrentSubuser.topic b/documentation/topics/generated/getCurrentSubuser.topic
new file mode 100644
index 00000000..6a7e2caf
--- /dev/null
+++ b/documentation/topics/generated/getCurrentSubuser.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers/me
+
+
+ Operation ID: getCurrentSubuser
+ Returns the authenticated subuser (driver) profile and their enabled grants grouped by
+`billing_customer_number`.
+
+Notes:
+- This endpoint is available only to authenticated subuser sessions.
+- It does not require the `X-Customer-Number` header; all enabled, non-deleted grants for the
+ subuser are included in the response.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Current subuser details | application/json |
+ | 401 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SubuserSelf"
+}
+
+
+
diff --git a/documentation/topics/generated/getCustomer.topic b/documentation/topics/generated/getCustomer.topic
new file mode 100644
index 00000000..fa9d1bc3
--- /dev/null
+++ b/documentation/topics/generated/getCustomer.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /users/customer
+
+
+ Operation ID: getCustomer
+ Get details about a specific customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer retrieved successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/User"
+}
+
+
+
diff --git a/documentation/topics/generated/getCustomerAttributes.topic b/documentation/topics/generated/getCustomerAttributes.topic
new file mode 100644
index 00000000..d5136c8d
--- /dev/null
+++ b/documentation/topics/generated/getCustomerAttributes.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /customer/attributes
+
+
+ Operation ID: getCustomerAttributes
+ Get custom attributes for a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer attributes retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getCustomerCode.topic b/documentation/topics/generated/getCustomerCode.topic
new file mode 100644
index 00000000..eae0dbcc
--- /dev/null
+++ b/documentation/topics/generated/getCustomerCode.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /admin/customer/code
+
+
+ Operation ID: getCustomerCode
+ Get customer code
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | no | integer | |
+ | user_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getCustomerDefaultDepartment.topic b/documentation/topics/generated/getCustomerDefaultDepartment.topic
new file mode 100644
index 00000000..7f7ceeab
--- /dev/null
+++ b/documentation/topics/generated/getCustomerDefaultDepartment.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /customer/department/default
+
+
+ Operation ID: getCustomerDefaultDepartment
+ Get customer default department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getCustomerFixedPricing.topic b/documentation/topics/generated/getCustomerFixedPricing.topic
new file mode 100644
index 00000000..bdca8d1f
--- /dev/null
+++ b/documentation/topics/generated/getCustomerFixedPricing.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /customer/pricing/fixed
+
+
+ Operation ID: getCustomerFixedPricing
+ Get customer fixed pricing
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getCustomerName.topic b/documentation/topics/generated/getCustomerName.topic
new file mode 100644
index 00000000..d0992370
--- /dev/null
+++ b/documentation/topics/generated/getCustomerName.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /admin/customer/name
+
+
+ Operation ID: getCustomerName
+ Get the full name of a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | user_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer name retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/getCustomerNotes.topic b/documentation/topics/generated/getCustomerNotes.topic
new file mode 100644
index 00000000..2f598c57
--- /dev/null
+++ b/documentation/topics/generated/getCustomerNotes.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /customer/notes
+
+
+ Operation ID: getCustomerNotes
+ Get notes for a customer
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer notes retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getCustomerPricingHistoryV2.topic b/documentation/topics/generated/getCustomerPricingHistoryV2.topic
new file mode 100644
index 00000000..d0014788
--- /dev/null
+++ b/documentation/topics/generated/getCustomerPricingHistoryV2.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/customers/pricing-history
+
+
+ Operation ID: getCustomerPricingHistoryV2
+ Get customer versioned pricing/subscription/discount timeline
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | yes | integer | |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer timeline resolved | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/CustomerPricingHistoryResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getDailyReport.topic b/documentation/topics/generated/getDailyReport.topic
new file mode 100644
index 00000000..f2c8b069
--- /dev/null
+++ b/documentation/topics/generated/getDailyReport.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/daily-reports/get
+
+
+ Operation ID: getDailyReport
+ Get daily report
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+ | date | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDailyReportBookingsCount.topic b/documentation/topics/generated/getDailyReportBookingsCount.topic
new file mode 100644
index 00000000..24f7efbe
--- /dev/null
+++ b/documentation/topics/generated/getDailyReportBookingsCount.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/daily-reports/bookings-count
+
+
+ Operation ID: getDailyReportBookingsCount
+ Get bookings count for daily reports
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | date | query | yes | string | |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDailyReportProductCount.topic b/documentation/topics/generated/getDailyReportProductCount.topic
new file mode 100644
index 00000000..1e351f70
--- /dev/null
+++ b/documentation/topics/generated/getDailyReportProductCount.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/daily-reports/product-count
+
+
+ Operation ID: getDailyReportProductCount
+ Get product count for daily reports
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | date | query | yes | string | |
+ | date_to | query | no | string | |
+ | department_id | query | yes | integer | |
+ | product_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDailyReportTransactionCount.topic b/documentation/topics/generated/getDailyReportTransactionCount.topic
new file mode 100644
index 00000000..b5a82e6c
--- /dev/null
+++ b/documentation/topics/generated/getDailyReportTransactionCount.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/daily-reports/transaction-count
+
+
+ Operation ID: getDailyReportTransactionCount
+ Get transaction count for daily reports
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | date | query | yes | string | |
+ | date_to | query | no | string | |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentBookingCount.topic b/documentation/topics/generated/getDepartmentBookingCount.topic
new file mode 100644
index 00000000..9945e040
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentBookingCount.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /admin/bookings/department/count
+
+
+ Operation ID: getDepartmentBookingCount
+ Get department unfulfilled bookings count
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentCategories.topic b/documentation/topics/generated/getDepartmentCategories.topic
new file mode 100644
index 00000000..d44d0212
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentCategories.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/categories
+
+
+ Operation ID: getDepartmentCategories
+ Get product categories available in a department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department categories retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentDraftInvoiceTotals.topic b/documentation/topics/generated/getDepartmentDraftInvoiceTotals.topic
new file mode 100644
index 00000000..afc30be4
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentDraftInvoiceTotals.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/economic/totals/department_draft_invoice_totals
+
+
+ Operation ID: getDepartmentDraftInvoiceTotals
+ Get department draft invoice totals
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentLaneDynamicImage.topic b/documentation/topics/generated/getDepartmentLaneDynamicImage.topic
new file mode 100644
index 00000000..3a790cd6
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentLaneDynamicImage.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/lanes/dynamic-image
+
+
+ Operation ID: getDepartmentLaneDynamicImage
+ Returns a composed machine UI image for the specified department lane.
+You can optionally highlight button indices, set the current step indicator, and toggle only-current-step mode.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department | query | yes | integer | Department ID |
+ | lane | query | yes | integer | Lane ID |
+ | buttons | query | no | oneOf | Highlighted button IDs (0-indexed). Accepts CSV, JSON array, or repeated query params. |
+ | current_step | query | no | integer | Current step indicator (non-negative integer) |
+ | only_current_step | query | no | boolean | If true, only draw the current step highlight |
+ | vehicle_type | query | no | integer | Vehicle type selection override (nullable non-negative integer) |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Dynamic image rendered successfully | image/png |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (image/png):
+
+{
+ "format": "binary",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentPrices.topic b/documentation/topics/generated/getDepartmentPrices.topic
new file mode 100644
index 00000000..4ff4518d
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentPrices.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/department/prices
+
+
+ Operation ID: getDepartmentPrices
+ Get department prices
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentRecommendedOrder.topic b/documentation/topics/generated/getDepartmentRecommendedOrder.topic
new file mode 100644
index 00000000..fd285da4
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentRecommendedOrder.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/order/recommended
+
+
+ Operation ID: getDepartmentRecommendedOrder
+ Get recommended order for department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentSelfServeEnabled.topic b/documentation/topics/generated/getDepartmentSelfServeEnabled.topic
new file mode 100644
index 00000000..6856913b
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentSelfServeEnabled.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/self-serve/enabled
+
+
+ Operation ID: getDepartmentSelfServeEnabled
+ Check if self-serve is enabled for a specific department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Department ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved status | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentSentInvoiceTotals.topic b/documentation/topics/generated/getDepartmentSentInvoiceTotals.topic
new file mode 100644
index 00000000..23b85dbe
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentSentInvoiceTotals.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/economic/totals/department_sent_invoice_totals
+
+
+ Operation ID: getDepartmentSentInvoiceTotals
+ Get department sent invoice totals
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentTerminalLocation.topic b/documentation/topics/generated/getDepartmentTerminalLocation.topic
new file mode 100644
index 00000000..3f66c089
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentTerminalLocation.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/department/terminal/location
+
+
+ Operation ID: getDepartmentTerminalLocation
+ Get department terminal location
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentTerminalReaders.topic b/documentation/topics/generated/getDepartmentTerminalReaders.topic
new file mode 100644
index 00000000..bc3270f6
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentTerminalReaders.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/department/terminal/readers
+
+
+ Operation ID: getDepartmentTerminalReaders
+ Get department terminal readers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentVariables.topic b/documentation/topics/generated/getDepartmentVariables.topic
new file mode 100644
index 00000000..b248dfa6
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentVariables.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/department/variables
+
+
+ Operation ID: getDepartmentVariables
+ Get department variables
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | department_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getDepartmentWeatherTimeline.topic b/documentation/topics/generated/getDepartmentWeatherTimeline.topic
new file mode 100644
index 00000000..50804a70
--- /dev/null
+++ b/documentation/topics/generated/getDepartmentWeatherTimeline.topic
@@ -0,0 +1,58 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/weather
+
+
+ Operation ID: getDepartmentWeatherTimeline
+ Returns hourly weather, washes, hours and productivity status for a department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Department ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department weather timeline retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentWeatherTimelineResponse",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/SuccessResponse"
+ },
+ {
+ "properties": {
+ "data": {
+ "items": {
+ "$ref": "#/components/schemas/DepartmentWeatherTimelineEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/getEconomicConfig.topic b/documentation/topics/generated/getEconomicConfig.topic
new file mode 100644
index 00000000..91d0c421
--- /dev/null
+++ b/documentation/topics/generated/getEconomicConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/config
+
+
+ Operation ID: getEconomicConfig
+ Get e-conomic config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | e-conomic configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/EconomicConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getEconomicCustomer.topic b/documentation/topics/generated/getEconomicCustomer.topic
new file mode 100644
index 00000000..07f1c011
--- /dev/null
+++ b/documentation/topics/generated/getEconomicCustomer.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/economic/customer
+
+
+ Operation ID: getEconomicCustomer
+ Get e-conomic customer details
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEconomicDepartments.topic b/documentation/topics/generated/getEconomicDepartments.topic
new file mode 100644
index 00000000..f1d605d1
--- /dev/null
+++ b/documentation/topics/generated/getEconomicDepartments.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/departments
+
+
+ Operation ID: getEconomicDepartments
+ Get e-conomic departments
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEconomicLayouts.topic b/documentation/topics/generated/getEconomicLayouts.topic
new file mode 100644
index 00000000..03d23b59
--- /dev/null
+++ b/documentation/topics/generated/getEconomicLayouts.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/layouts
+
+
+ Operation ID: getEconomicLayouts
+ Get available invoice layouts from e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Layouts retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEconomicPaymentTerms.topic b/documentation/topics/generated/getEconomicPaymentTerms.topic
new file mode 100644
index 00000000..4d50377a
--- /dev/null
+++ b/documentation/topics/generated/getEconomicPaymentTerms.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/payment-terms
+
+
+ Operation ID: getEconomicPaymentTerms
+ Get available payment terms from e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Payment terms retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEconomicProducts.topic b/documentation/topics/generated/getEconomicProducts.topic
new file mode 100644
index 00000000..4c17e4d7
--- /dev/null
+++ b/documentation/topics/generated/getEconomicProducts.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /economic/products
+
+
+ Operation ID: getEconomicProducts
+ Get e-conomic products
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEconomicTotals.topic b/documentation/topics/generated/getEconomicTotals.topic
new file mode 100644
index 00000000..81a83532
--- /dev/null
+++ b/documentation/topics/generated/getEconomicTotals.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/economic/totals
+
+
+ Operation ID: getEconomicTotals
+ Get total economic statistics
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getEmailConfig.topic b/documentation/topics/generated/getEmailConfig.topic
new file mode 100644
index 00000000..83cc35d5
--- /dev/null
+++ b/documentation/topics/generated/getEmailConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /email/config
+
+
+ Operation ID: getEmailConfig
+ Get email config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Email configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/EmailConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getEntraConfig.topic b/documentation/topics/generated/getEntraConfig.topic
new file mode 100644
index 00000000..465b5161
--- /dev/null
+++ b/documentation/topics/generated/getEntraConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /entra/config
+
+
+ Operation ID: getEntraConfig
+ Get Entra config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Entra configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/EntraConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getExchangeRate.topic b/documentation/topics/generated/getExchangeRate.topic
new file mode 100644
index 00000000..b3c78b63
--- /dev/null
+++ b/documentation/topics/generated/getExchangeRate.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/fxratesapi/rate
+
+
+ Operation ID: getExchangeRate
+ Get current exchange rate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | from | query | yes | string | |
+ | to | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Exchange rate retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getForm.topic b/documentation/topics/generated/getForm.topic
new file mode 100644
index 00000000..06e54fda
--- /dev/null
+++ b/documentation/topics/generated/getForm.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /form
+
+
+ Operation ID: getForm
+ Retrieve a form definition
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Form retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getFxRatesApiConfig.topic b/documentation/topics/generated/getFxRatesApiConfig.topic
new file mode 100644
index 00000000..5cc241b3
--- /dev/null
+++ b/documentation/topics/generated/getFxRatesApiConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /fxratesapi/config
+
+
+ Operation ID: getFxRatesApiConfig
+ Get FXRatesAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | FXRatesAPI configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/FxRatesApiConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getGatewayApiConfig.topic b/documentation/topics/generated/getGatewayApiConfig.topic
new file mode 100644
index 00000000..e8fa3178
--- /dev/null
+++ b/documentation/topics/generated/getGatewayApiConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /gatewayapi/config
+
+
+ Operation ID: getGatewayApiConfig
+ Get GatewayAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | GatewayAPI configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/GatewayApiConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicePdf.topic b/documentation/topics/generated/getInvoicePdf.topic
new file mode 100644
index 00000000..bdda6b09
--- /dev/null
+++ b/documentation/topics/generated/getInvoicePdf.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /invoices/pdf
+
+
+ Operation ID: getInvoicePdf
+ Download an invoice as PDF
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | PDF retrieved successfully | application/pdf |
+
+ Schema for response 200 (application/pdf):
+
+{
+ "format": "binary",
+ "type": "string"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingFixedPricingDistribution.topic b/documentation/topics/generated/getInvoicingFixedPricingDistribution.topic
new file mode 100644
index 00000000..fa944bc4
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingFixedPricingDistribution.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/fixed-pricing
+
+
+ Operation ID: getInvoicingFixedPricingDistribution
+ Get invoicing distribution for fixed pricing items
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Fixed pricing distribution retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingFixedPricingDistributionResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriodDistributionV2All.topic b/documentation/topics/generated/getInvoicingPeriodDistributionV2All.topic
new file mode 100644
index 00000000..6eaa418d
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriodDistributionV2All.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/v2/all
+
+
+ Operation ID: getInvoicingPeriodDistributionV2All
+ Get version-aware historical distribution (all)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Version-aware historical distribution (all categories) | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingDistributionV2AllResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriodDistributionV2BookedDepartment75.topic b/documentation/topics/generated/getInvoicingPeriodDistributionV2BookedDepartment75.topic
new file mode 100644
index 00000000..ad4c4adb
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriodDistributionV2BookedDepartment75.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/v2/booked-department-75
+
+
+ Operation ID: getInvoicingPeriodDistributionV2BookedDepartment75
+ Get booked e-conomic department 75 redistribution
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Actual booked e-conomic department 75 net amounts redistributed to internal departments | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingDistributionV2BookedDepartment75Response"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriodDistributionV2CustomerPrices.topic b/documentation/topics/generated/getInvoicingPeriodDistributionV2CustomerPrices.topic
new file mode 100644
index 00000000..856a831a
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriodDistributionV2CustomerPrices.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/v2/customer-prices
+
+
+ Operation ID: getInvoicingPeriodDistributionV2CustomerPrices
+ Get version-aware historical customer-price discount distribution
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Version-aware customer-price discount distribution | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingDistributionV2CustomerPricesResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriodDistributionV2FixedPricing.topic b/documentation/topics/generated/getInvoicingPeriodDistributionV2FixedPricing.topic
new file mode 100644
index 00000000..31130af1
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriodDistributionV2FixedPricing.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/v2/fixed-pricing
+
+
+ Operation ID: getInvoicingPeriodDistributionV2FixedPricing
+ Get version-aware historical fixed pricing distribution
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Version-aware fixed pricing distribution | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingDistributionV2FixedPricingResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriodDistributionV2WashSubscriptions.topic b/documentation/topics/generated/getInvoicingPeriodDistributionV2WashSubscriptions.topic
new file mode 100644
index 00000000..16801f72
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriodDistributionV2WashSubscriptions.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/v2/wash-subscriptions
+
+
+ Operation ID: getInvoicingPeriodDistributionV2WashSubscriptions
+ Get version-aware historical wash subscription distribution
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Version-aware wash subscription distribution | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingDistributionV2WashSubscriptionsResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingPeriods.topic b/documentation/topics/generated/getInvoicingPeriods.topic
new file mode 100644
index 00000000..9d3eb1d8
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingPeriods.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period
+
+
+ Operation ID: getInvoicingPeriods
+ Retrieve invoicing periods for superusers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Invoicing periods retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getInvoicingWashSubscriptionsDistribution.topic b/documentation/topics/generated/getInvoicingWashSubscriptionsDistribution.topic
new file mode 100644
index 00000000..20b9befb
--- /dev/null
+++ b/documentation/topics/generated/getInvoicingWashSubscriptionsDistribution.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/invoicing/period/distribution/wash-subscriptions
+
+
+ Operation ID: getInvoicingWashSubscriptionsDistribution
+ Get invoicing distribution for wash subscriptions
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | dateFrom | query | yes | string | |
+ | dateTo | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Wash subscriptions distribution retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/InvoicingWashSubscriptionsDistributionResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getLastMonthIncome.topic b/documentation/topics/generated/getLastMonthIncome.topic
new file mode 100644
index 00000000..5fc006d3
--- /dev/null
+++ b/documentation/topics/generated/getLastMonthIncome.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/last-month
+
+
+ Operation ID: getLastMonthIncome
+ Get income statistics for the previous month
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Last month's income statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getLicensePlateRecognizerConfig.topic b/documentation/topics/generated/getLicensePlateRecognizerConfig.topic
new file mode 100644
index 00000000..3b42a368
--- /dev/null
+++ b/documentation/topics/generated/getLicensePlateRecognizerConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /licenseplaterecognizer/config
+
+
+ Operation ID: getLicensePlateRecognizerConfig
+ Get LicensePlateRecognizer config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | LicensePlateRecognizer configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/LicensePlateRecognizerConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getLimbleConfig.topic b/documentation/topics/generated/getLimbleConfig.topic
new file mode 100644
index 00000000..26241254
--- /dev/null
+++ b/documentation/topics/generated/getLimbleConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /limble/config
+
+
+ Operation ID: getLimbleConfig
+ Get Limble config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Limble configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/LimbleConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getMotorApiConfig.topic b/documentation/topics/generated/getMotorApiConfig.topic
new file mode 100644
index 00000000..835f35be
--- /dev/null
+++ b/documentation/topics/generated/getMotorApiConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /motorapi/config
+
+
+ Operation ID: getMotorApiConfig
+ Get MotorAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | MotorAPI configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/MotorApiConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getNewBookingsStats.topic b/documentation/topics/generated/getNewBookingsStats.topic
new file mode 100644
index 00000000..55f4ddbd
--- /dev/null
+++ b/documentation/topics/generated/getNewBookingsStats.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/bookings/new
+
+
+ Operation ID: getNewBookingsStats
+ Get statistics for new bookings
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | New bookings statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getNewOrdersStats.topic b/documentation/topics/generated/getNewOrdersStats.topic
new file mode 100644
index 00000000..4c362342
--- /dev/null
+++ b/documentation/topics/generated/getNewOrdersStats.topic
@@ -0,0 +1,34 @@
+
+
+
diff --git a/documentation/topics/generated/getOcrSpaceConfig.topic b/documentation/topics/generated/getOcrSpaceConfig.topic
new file mode 100644
index 00000000..c473eaac
--- /dev/null
+++ b/documentation/topics/generated/getOcrSpaceConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /ocrspace/config
+
+
+ Operation ID: getOcrSpaceConfig
+ Get OcrSpace config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | OcrSpace configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/OcrSpaceConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getOpenAiConfig.topic b/documentation/topics/generated/getOpenAiConfig.topic
new file mode 100644
index 00000000..23931ec3
--- /dev/null
+++ b/documentation/topics/generated/getOpenAiConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /openai/config
+
+
+ Operation ID: getOpenAiConfig
+ Get OpenAI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | OpenAI configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/OpenAiConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getOrder.topic b/documentation/topics/generated/getOrder.topic
new file mode 100644
index 00000000..efeba16c
--- /dev/null
+++ b/documentation/topics/generated/getOrder.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /order
+
+
+ Operation ID: getOrder
+ Get detailed information about a specific order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order retrieved successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/Order"
+}
+
+
+
diff --git a/documentation/topics/generated/getPlateScanPostResults.topic b/documentation/topics/generated/getPlateScanPostResults.topic
new file mode 100644
index 00000000..18dfbecd
--- /dev/null
+++ b/documentation/topics/generated/getPlateScanPostResults.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /numberplatescans/post
+
+
+ Operation ID: getPlateScanPostResults
+ Get post-scan results
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Post-scan results retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getReadyToInvoice.topic b/documentation/topics/generated/getReadyToInvoice.topic
new file mode 100644
index 00000000..9f7f6942
--- /dev/null
+++ b/documentation/topics/generated/getReadyToInvoice.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices/ready-to-invoice
+
+
+ Operation ID: getReadyToInvoice
+ Get collected invoices that are ready to be processed
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Ready invoices retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getRecaptchaConfig.topic b/documentation/topics/generated/getRecaptchaConfig.topic
new file mode 100644
index 00000000..60ced51c
--- /dev/null
+++ b/documentation/topics/generated/getRecaptchaConfig.topic
@@ -0,0 +1,56 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /auth/reCAPTCHA/public
+
+
+ Operation ID: getRecaptchaConfig
+ Retrieve public reCAPTCHA configuration for login forms
+
+ No authentication required.
+
+
+ | Status | Description | Content Types |
+ | 200 | reCAPTCHA configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "rate_limit": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "limit": {
+ "type": "integer"
+ },
+ "remaining": {
+ "type": "integer"
+ },
+ "reset": {
+ "type": "integer"
+ },
+ "warning": {
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "recaptcha": {
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/getRecaptchaModuleConfig.topic b/documentation/topics/generated/getRecaptchaModuleConfig.topic
new file mode 100644
index 00000000..73b5c7a5
--- /dev/null
+++ b/documentation/topics/generated/getRecaptchaModuleConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /reCAPTCHA/config
+
+
+ Operation ID: getRecaptchaModuleConfig
+ Get reCAPTCHA config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | reCAPTCHA configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/RecaptchaConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getSelfServeConfig.topic b/documentation/topics/generated/getSelfServeConfig.topic
new file mode 100644
index 00000000..66304ea9
--- /dev/null
+++ b/documentation/topics/generated/getSelfServeConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /selfserve/config
+
+
+ Operation ID: getSelfServeConfig
+ Get Self-Serve config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Self-serve configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfServeConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getSelfServeLaneStatus.topic b/documentation/topics/generated/getSelfServeLaneStatus.topic
new file mode 100644
index 00000000..968c972c
--- /dev/null
+++ b/documentation/topics/generated/getSelfServeLaneStatus.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/self-serve/lane/status
+
+
+ Operation ID: getSelfServeLaneStatus
+ Retrieve the current status of a self-serve lane
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | lane_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Lane status retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfServeLaneStatus"
+}
+
+
+
diff --git a/documentation/topics/generated/getSelfserveVehicleAllowed.topic b/documentation/topics/generated/getSelfserveVehicleAllowed.topic
new file mode 100644
index 00000000..283258b6
--- /dev/null
+++ b/documentation/topics/generated/getSelfserveVehicleAllowed.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/vehicle/allowed
+
+
+ Operation ID: getSelfserveVehicleAllowed
+ Check whether self-serve is allowed for a vehicle on a lane
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | lane_id | query | yes | integer | |
+ | reg | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully evaluated self-serve eligibility | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfserveVehicleAllowedResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getSelfserveWashSummary.topic b/documentation/topics/generated/getSelfserveWashSummary.topic
new file mode 100644
index 00000000..de956fcb
--- /dev/null
+++ b/documentation/topics/generated/getSelfserveWashSummary.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/washes/summary
+
+
+ Operation ID: getSelfserveWashSummary
+ Get self-serve wash summary
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | session_id | query | no | integer | |
+ | lane_id | query | no | integer | |
+ | reg | query | no | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved self-serve wash summary | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfserveWashSummary"
+}
+
+
+
diff --git a/documentation/topics/generated/getSession.topic b/documentation/topics/generated/getSession.topic
new file mode 100644
index 00000000..1bc5e8c2
--- /dev/null
+++ b/documentation/topics/generated/getSession.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /auth/session
+
+
+ Operation ID: getSession
+ Retrieve information about the current authenticated user session
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Session information retrieved successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/User"
+ },
+ {
+ "properties": {
+ "two_factor_enabled": {
+ "description": "Indicates if 2FA is enabled for this account",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/getShellyConfig.topic b/documentation/topics/generated/getShellyConfig.topic
new file mode 100644
index 00000000..386797d0
--- /dev/null
+++ b/documentation/topics/generated/getShellyConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /shelly/config
+
+
+ Operation ID: getShellyConfig
+ Get Shelly config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Shelly configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ShellyConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getStripeConfig.topic b/documentation/topics/generated/getStripeConfig.topic
new file mode 100644
index 00000000..47a15db9
--- /dev/null
+++ b/documentation/topics/generated/getStripeConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /stripe/config
+
+
+ Operation ID: getStripeConfig
+ Get Stripe config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Stripe configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/StripeConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getStripePaymentIntent.topic b/documentation/topics/generated/getStripePaymentIntent.topic
new file mode 100644
index 00000000..6309b7d9
--- /dev/null
+++ b/documentation/topics/generated/getStripePaymentIntent.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /orders/module/stripe/payment_intent
+
+
+ Operation ID: getStripePaymentIntent
+ Get Stripe payment intent
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getSubuser.topic b/documentation/topics/generated/getSubuser.topic
new file mode 100644
index 00000000..093d1fe4
--- /dev/null
+++ b/documentation/topics/generated/getSubuser.topic
@@ -0,0 +1,95 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers/{id}
+
+
+ Operation ID: getSubuser
+ Returns the subuser if the authenticated user has at least one enabled, non-deleted grant
+for their customer number to this subuser. Otherwise returns 404.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | path | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Subuser details | application/json |
+ | 401 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "created_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "email": {
+ "format": "email",
+ "nullable": true,
+ "type": "string"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "nullable": true,
+ "type": "string"
+ },
+ "permissions": {
+ "description": "Aggregated permission keys granted for the caller's customer",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "phone": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "phone_country_code": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "suspended_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "updated_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "username": {
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/getSuperuserUser.topic b/documentation/topics/generated/getSuperuserUser.topic
new file mode 100644
index 00000000..e3d67dd4
--- /dev/null
+++ b/documentation/topics/generated/getSuperuserUser.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/user
+
+
+ Operation ID: getSuperuserUser
+ Get detailed user information by user ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | user_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | User retrieved successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/User"
+}
+
+
+
diff --git a/documentation/topics/generated/getThisMonthIncome.topic b/documentation/topics/generated/getThisMonthIncome.topic
new file mode 100644
index 00000000..f4f99efd
--- /dev/null
+++ b/documentation/topics/generated/getThisMonthIncome.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/this-month
+
+
+ Operation ID: getThisMonthIncome
+ Get income statistics for the current month
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | This month's income statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getThisYearIncome.topic b/documentation/topics/generated/getThisYearIncome.topic
new file mode 100644
index 00000000..1993d349
--- /dev/null
+++ b/documentation/topics/generated/getThisYearIncome.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/this-year
+
+
+ Operation ID: getThisYearIncome
+ Get income statistics for the current year
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | This year's income statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getTodayIncome.topic b/documentation/topics/generated/getTodayIncome.topic
new file mode 100644
index 00000000..e5a12612
--- /dev/null
+++ b/documentation/topics/generated/getTodayIncome.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/today
+
+
+ Operation ID: getTodayIncome
+ Get income statistics for today
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Today's income statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getTotalIncomeTodayByDepartments.topic b/documentation/topics/generated/getTotalIncomeTodayByDepartments.topic
new file mode 100644
index 00000000..3196326d
--- /dev/null
+++ b/documentation/topics/generated/getTotalIncomeTodayByDepartments.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/departments
+
+
+ Operation ID: getTotalIncomeTodayByDepartments
+ Get total income today by departments
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUnknownCustomerVehicles.topic b/documentation/topics/generated/getUnknownCustomerVehicles.topic
new file mode 100644
index 00000000..58f4731f
--- /dev/null
+++ b/documentation/topics/generated/getUnknownCustomerVehicles.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/vehicles/unknown-customer
+
+
+ Operation ID: getUnknownCustomerVehicles
+ Get unknown customer vehicles in department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUserBookings.topic b/documentation/topics/generated/getUserBookings.topic
new file mode 100644
index 00000000..d18236e9
--- /dev/null
+++ b/documentation/topics/generated/getUserBookings.topic
@@ -0,0 +1,39 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /user/bookings
+
+
+ Operation ID: getUserBookings
+ Retrieve bookings for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | User bookings retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Booking"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/getUserDiscounts.topic b/documentation/topics/generated/getUserDiscounts.topic
new file mode 100644
index 00000000..1d72997e
--- /dev/null
+++ b/documentation/topics/generated/getUserDiscounts.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/user/discounts
+
+
+ Operation ID: getUserDiscounts
+ Get user discounts
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | user_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUserIdFromCustomerNumber.topic b/documentation/topics/generated/getUserIdFromCustomerNumber.topic
new file mode 100644
index 00000000..d9e26c8c
--- /dev/null
+++ b/documentation/topics/generated/getUserIdFromCustomerNumber.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /admin/customer/getUserId
+
+
+ Operation ID: getUserIdFromCustomerNumber
+ Convert e-conomic customer number to internal user ID
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | User ID retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "user_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/getUserInvoices.topic b/documentation/topics/generated/getUserInvoices.topic
new file mode 100644
index 00000000..b6ea5eed
--- /dev/null
+++ b/documentation/topics/generated/getUserInvoices.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /user/invoices
+
+
+ Operation ID: getUserInvoices
+ Retrieve invoices for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | User invoices retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUserKeys.topic b/documentation/topics/generated/getUserKeys.topic
new file mode 100644
index 00000000..71cb0fea
--- /dev/null
+++ b/documentation/topics/generated/getUserKeys.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/user/keys
+
+
+ Operation ID: getUserKeys
+ Get user keys
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | user_id | query | yes | integer | |
+ | key | query | no | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUserOrder.topic b/documentation/topics/generated/getUserOrder.topic
new file mode 100644
index 00000000..494b020e
--- /dev/null
+++ b/documentation/topics/generated/getUserOrder.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /user/order
+
+
+ Operation ID: getUserOrder
+ Get details of a specific order for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/Order"
+}
+
+
+
diff --git a/documentation/topics/generated/getUserOrders.topic b/documentation/topics/generated/getUserOrders.topic
new file mode 100644
index 00000000..1c9ea8e7
--- /dev/null
+++ b/documentation/topics/generated/getUserOrders.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /user/orders
+
+
+ Operation ID: getUserOrders
+ Retrieve orders for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Orders retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Order"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/getUserPermissions.topic b/documentation/topics/generated/getUserPermissions.topic
new file mode 100644
index 00000000..753dfebb
--- /dev/null
+++ b/documentation/topics/generated/getUserPermissions.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /user/permissions
+
+
+ Operation ID: getUserPermissions
+ Get user permissions
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getUsersWithVehicleSubscriptions.topic b/documentation/topics/generated/getUsersWithVehicleSubscriptions.topic
new file mode 100644
index 00000000..f557f925
--- /dev/null
+++ b/documentation/topics/generated/getUsersWithVehicleSubscriptions.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/users-with-vehicle-subscriptions
+
+
+ Operation ID: getUsersWithVehicleSubscriptions
+ Get users with vehicle subscriptions
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getVehicleCustomerSuggestions.topic b/documentation/topics/generated/getVehicleCustomerSuggestions.topic
new file mode 100644
index 00000000..8dae93e2
--- /dev/null
+++ b/documentation/topics/generated/getVehicleCustomerSuggestions.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/vehicle/customer-suggestions
+
+
+ Operation ID: getVehicleCustomerSuggestions
+ Get vehicle customer suggestions
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | reg | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getVehicleStatus.topic b/documentation/topics/generated/getVehicleStatus.topic
new file mode 100644
index 00000000..c932d02e
--- /dev/null
+++ b/documentation/topics/generated/getVehicleStatus.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /vehicles/status
+
+
+ Operation ID: getVehicleStatus
+ Get vehicle status
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | reg | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getVirkdataConfig.topic b/documentation/topics/generated/getVirkdataConfig.topic
new file mode 100644
index 00000000..d1e0fb82
--- /dev/null
+++ b/documentation/topics/generated/getVirkdataConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /virkdata/config
+
+
+ Operation ID: getVirkdataConfig
+ Get Virkdata config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Virkdata configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/VirkdataConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getWeatherApiConfig.topic b/documentation/topics/generated/getWeatherApiConfig.topic
new file mode 100644
index 00000000..38f7fba0
--- /dev/null
+++ b/documentation/topics/generated/getWeatherApiConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /weatherapi/config
+
+
+ Operation ID: getWeatherApiConfig
+ Get WeatherAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | WeatherAPI configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/WeatherApiConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getWorkerLicensePlates.topic b/documentation/topics/generated/getWorkerLicensePlates.topic
new file mode 100644
index 00000000..952574b4
--- /dev/null
+++ b/documentation/topics/generated/getWorkerLicensePlates.topic
@@ -0,0 +1,35 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/licenseplates
+
+
+ Operation ID: getWorkerLicensePlates
+ Fetch all unique license plates from various database tables
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | License plates retrieved successfully | application/json |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getWorkerStatus.topic b/documentation/topics/generated/getWorkerStatus.topic
new file mode 100644
index 00000000..4f3c8835
--- /dev/null
+++ b/documentation/topics/generated/getWorkerStatus.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/status
+
+
+ Operation ID: getWorkerStatus
+ Get detailed status of the system worker
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Worker status retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getWorkerVersion.topic b/documentation/topics/generated/getWorkerVersion.topic
new file mode 100644
index 00000000..3c96cd9e
--- /dev/null
+++ b/documentation/topics/generated/getWorkerVersion.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/version
+
+
+ Operation ID: getWorkerVersion
+ Get the current version of the system worker
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Worker version retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getXlvaskConfig.topic b/documentation/topics/generated/getXlvaskConfig.topic
new file mode 100644
index 00000000..0974cd95
--- /dev/null
+++ b/documentation/topics/generated/getXlvaskConfig.topic
@@ -0,0 +1,36 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /xlvask/config
+
+
+ Operation ID: getXlvaskConfig
+ Get XLVask config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | XLVask configuration retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/XlvaskConfigListResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/getXlvaskUsageLogs.topic b/documentation/topics/generated/getXlvaskUsageLogs.topic
new file mode 100644
index 00000000..d209606d
--- /dev/null
+++ b/documentation/topics/generated/getXlvaskUsageLogs.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/xlvask/usageLog
+
+
+ Operation ID: getXlvaskUsageLogs
+ Retrieve usage logs from XLVask system
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Usage logs retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getXlvaskUsageOrders.topic b/documentation/topics/generated/getXlvaskUsageOrders.topic
new file mode 100644
index 00000000..c1058eb0
--- /dev/null
+++ b/documentation/topics/generated/getXlvaskUsageOrders.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/xlvask/services/usage/orders
+
+
+ Operation ID: getXlvaskUsageOrders
+ Get XLVask usage orders
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getXlvaskUsageOrdersFastLink.topic b/documentation/topics/generated/getXlvaskUsageOrdersFastLink.topic
new file mode 100644
index 00000000..a9642271
--- /dev/null
+++ b/documentation/topics/generated/getXlvaskUsageOrdersFastLink.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/xlvask/services/usage/orders/fast-link
+
+
+ Operation ID: getXlvaskUsageOrdersFastLink
+ Get XLVask usage orders fast link
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/getYesterdayIncome.topic b/documentation/topics/generated/getYesterdayIncome.topic
new file mode 100644
index 00000000..8ade3e31
--- /dev/null
+++ b/documentation/topics/generated/getYesterdayIncome.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /statistics/income/yesterday
+
+
+ Operation ID: getYesterdayIncome
+ Get income statistics for yesterday
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Yesterday's income statistics retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/importEconomicCustomers.topic b/documentation/topics/generated/importEconomicCustomers.topic
new file mode 100644
index 00000000..dccc1df1
--- /dev/null
+++ b/documentation/topics/generated/importEconomicCustomers.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /economic/customers/import
+
+
+ Operation ID: importEconomicCustomers
+ Import customers from e-conomic
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customers imported successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listBackupModules.topic b/documentation/topics/generated/listBackupModules.topic
new file mode 100644
index 00000000..1d1c402d
--- /dev/null
+++ b/documentation/topics/generated/listBackupModules.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/backup/backups
+
+
+ Operation ID: listBackupModules
+ List backup modules
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listBookings.topic b/documentation/topics/generated/listBookings.topic
new file mode 100644
index 00000000..f6911f5e
--- /dev/null
+++ b/documentation/topics/generated/listBookings.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /bookings
+
+
+ Operation ID: listBookings
+ Retrieve a list of bookings
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Bookings retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Booking"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listBrandingOptions.topic b/documentation/topics/generated/listBrandingOptions.topic
new file mode 100644
index 00000000..59aa76ea
--- /dev/null
+++ b/documentation/topics/generated/listBrandingOptions.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /branding
+
+
+ Operation ID: listBrandingOptions
+ Retrieve a list of branding options or a specific branding option if ID is provided
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Branding options retrieved successfully | application/json |
+ | 400 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listCategories.topic b/documentation/topics/generated/listCategories.topic
new file mode 100644
index 00000000..c5f76474
--- /dev/null
+++ b/documentation/topics/generated/listCategories.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /categories
+
+
+ Operation ID: listCategories
+ Retrieve a list of product categories
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Categories retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Category"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listCollectedInvoices.topic b/documentation/topics/generated/listCollectedInvoices.topic
new file mode 100644
index 00000000..52c60d81
--- /dev/null
+++ b/documentation/topics/generated/listCollectedInvoices.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /collected-invoices
+
+
+ Operation ID: listCollectedInvoices
+ Get list of collected invoices
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Collected invoices retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listCustomers.topic b/documentation/topics/generated/listCustomers.topic
new file mode 100644
index 00000000..94cc025b
--- /dev/null
+++ b/documentation/topics/generated/listCustomers.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /customers
+
+
+ Operation ID: listCustomers
+ List customers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+ | barred | query | no | string | Optional e-conomic barred customer filter. |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listDailyReports.topic b/documentation/topics/generated/listDailyReports.topic
new file mode 100644
index 00000000..5907829f
--- /dev/null
+++ b/documentation/topics/generated/listDailyReports.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments/daily-reports
+
+
+ Operation ID: listDailyReports
+ List daily reports
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listDepartmentGates.topic b/documentation/topics/generated/listDepartmentGates.topic
new file mode 100644
index 00000000..e23d189f
--- /dev/null
+++ b/documentation/topics/generated/listDepartmentGates.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/gates
+
+
+ Operation ID: listDepartmentGates
+ Retrieve department gates, optionally filtered by id
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department gates retrieved successfully | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DepartmentGate"
+ },
+ {
+ "items": {
+ "$ref": "#/components/schemas/DepartmentGate"
+ },
+ "type": "array"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/listDepartmentGoals.topic b/documentation/topics/generated/listDepartmentGoals.topic
new file mode 100644
index 00000000..9647ad40
--- /dev/null
+++ b/documentation/topics/generated/listDepartmentGoals.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /goals/department
+
+
+ Operation ID: listDepartmentGoals
+ Retrieve a list of department goals or a single goal when `id` is provided.
+
+Access control:
+- A user may only access goals where the goal's `departments` set is a subset of the user's departments.
+- Users with the `superuser` permission may access all goals.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | When provided, returns the single goal with this id (if accessible) |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Goals retrieved successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentGoal"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listDepartmentLanes.topic b/documentation/topics/generated/listDepartmentLanes.topic
new file mode 100644
index 00000000..d395500e
--- /dev/null
+++ b/documentation/topics/generated/listDepartmentLanes.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/lanes
+
+
+ Operation ID: listDepartmentLanes
+ Retrieve a list of all department lanes
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department lanes retrieved successfully | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentLane"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listDepartmentPlateScanners.topic b/documentation/topics/generated/listDepartmentPlateScanners.topic
new file mode 100644
index 00000000..af8ba260
--- /dev/null
+++ b/documentation/topics/generated/listDepartmentPlateScanners.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/numberplatescanners
+
+
+ Operation ID: listDepartmentPlateScanners
+ List department plate scanners
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department plate scanners retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listDepartmentRelays.topic b/documentation/topics/generated/listDepartmentRelays.topic
new file mode 100644
index 00000000..106cd3c7
--- /dev/null
+++ b/documentation/topics/generated/listDepartmentRelays.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/relays
+
+
+ Operation ID: listDepartmentRelays
+ Retrieve department relays, optionally filtered by id
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department relays retrieved successfully | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/DepartmentRelay"
+ },
+ {
+ "items": {
+ "$ref": "#/components/schemas/DepartmentRelay"
+ },
+ "type": "array"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/listDepartments.topic b/documentation/topics/generated/listDepartments.topic
new file mode 100644
index 00000000..2506f9a3
--- /dev/null
+++ b/documentation/topics/generated/listDepartments.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /departments
+
+
+ Operation ID: listDepartments
+ Retrieve a list of all visible departments
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by specific department ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Departments retrieved successfully | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Department"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listDraftInvoices.topic b/documentation/topics/generated/listDraftInvoices.topic
new file mode 100644
index 00000000..51bf5a55
--- /dev/null
+++ b/documentation/topics/generated/listDraftInvoices.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /invoices/draft
+
+
+ Operation ID: listDraftInvoices
+ Retrieve a list of draft invoices
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Draft invoices retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listEntraUsers.topic b/documentation/topics/generated/listEntraUsers.topic
new file mode 100644
index 00000000..e759fb4c
--- /dev/null
+++ b/documentation/topics/generated/listEntraUsers.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/entra/users
+
+
+ Operation ID: listEntraUsers
+ Get list of users from Microsoft Entra (Azure AD)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Entra users retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listGuestDepartments.topic b/documentation/topics/generated/listGuestDepartments.topic
new file mode 100644
index 00000000..83298010
--- /dev/null
+++ b/documentation/topics/generated/listGuestDepartments.topic
@@ -0,0 +1,39 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /guest/departments
+
+
+ Operation ID: listGuestDepartments
+ Get list of departments without authentication
+
+ No authentication required.
+
+
+ | Name | In | Required | Type | Description |
+ | include_lanes | query | no | boolean | Whether to include lane status and self-serve information |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Departments retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentGuest"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listModuleActionLogs.topic b/documentation/topics/generated/listModuleActionLogs.topic
new file mode 100644
index 00000000..3f5d3e35
--- /dev/null
+++ b/documentation/topics/generated/listModuleActionLogs.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/action-logs
+
+
+ Operation ID: listModuleActionLogs
+ Retrieve a paginated list of module action logs with searching and filtering
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Module action logs retrieved successfully | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/ModuleActionLog"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listNotifications.topic b/documentation/topics/generated/listNotifications.topic
new file mode 100644
index 00000000..638c4d74
--- /dev/null
+++ b/documentation/topics/generated/listNotifications.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /notifications
+
+
+ Operation ID: listNotifications
+ Get list of notifications
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Notifications retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Notification"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listOrderAttachments.topic b/documentation/topics/generated/listOrderAttachments.topic
new file mode 100644
index 00000000..234675b6
--- /dev/null
+++ b/documentation/topics/generated/listOrderAttachments.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /orders/attachments
+
+
+ Operation ID: listOrderAttachments
+ Get attachments for an order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | order_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order attachments retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listOrderBookings.topic b/documentation/topics/generated/listOrderBookings.topic
new file mode 100644
index 00000000..f05efa67
--- /dev/null
+++ b/documentation/topics/generated/listOrderBookings.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /order-bookings
+
+
+ Operation ID: listOrderBookings
+ List order bookings
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listOrderItems.topic b/documentation/topics/generated/listOrderItems.topic
new file mode 100644
index 00000000..e229272b
--- /dev/null
+++ b/documentation/topics/generated/listOrderItems.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /order/items
+
+
+ Operation ID: listOrderItems
+ Get all items for a specific order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | order_id | query | yes | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order items retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/OrderItem"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listOrders.topic b/documentation/topics/generated/listOrders.topic
new file mode 100644
index 00000000..720210e9
--- /dev/null
+++ b/documentation/topics/generated/listOrders.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /orders
+
+
+ Operation ID: listOrders
+ Retrieve a paginated list of orders
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+ | show_wash_subscription | query | no | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Orders retrieved successfully | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Order"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listPasskeys.topic b/documentation/topics/generated/listPasskeys.topic
new file mode 100644
index 00000000..84f00fcd
--- /dev/null
+++ b/documentation/topics/generated/listPasskeys.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /account/security/passkeys
+
+
+ Operation ID: listPasskeys
+ List passkeys for the authenticated user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | A list of passkeys | application/json |
+ | 400 | Invalid session or request | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Passkey"
+ },
+ "type": "array"
+}
+
+ Schema for response 400 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/listPermissions.topic b/documentation/topics/generated/listPermissions.topic
new file mode 100644
index 00000000..ba1be68c
--- /dev/null
+++ b/documentation/topics/generated/listPermissions.topic
@@ -0,0 +1,39 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /permissions
+
+
+ Operation ID: listPermissions
+ Get list of all available permissions
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Permissions retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Permission"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listPlateScanners.topic b/documentation/topics/generated/listPlateScanners.topic
new file mode 100644
index 00000000..a2d11180
--- /dev/null
+++ b/documentation/topics/generated/listPlateScanners.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /numberplatescanners
+
+
+ Operation ID: listPlateScanners
+ Get a list of all number plate scanners
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Plate scanners retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listPlateScans.topic b/documentation/topics/generated/listPlateScans.topic
new file mode 100644
index 00000000..2b080830
--- /dev/null
+++ b/documentation/topics/generated/listPlateScans.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /numberplatescans
+
+
+ Operation ID: listPlateScans
+ Get a list of license plate scans
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Plate scans retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listProducts.topic b/documentation/topics/generated/listProducts.topic
new file mode 100644
index 00000000..a788c167
--- /dev/null
+++ b/documentation/topics/generated/listProducts.topic
@@ -0,0 +1,50 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /products
+
+
+ Operation ID: listProducts
+ Retrieve a list of products with optional filters for customer pricing and department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_id | query | no | integer | Customer ID for custom pricing |
+ | department_id | query | no | integer | Department ID for department-specific pricing |
+ | category | query | no | integer | Filter by category ID |
+ | id | query | no | integer | Get specific product by ID |
+ | final_price | query | no | boolean | Whether to return final prices including discounts |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Products retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/Product"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listRoles.topic b/documentation/topics/generated/listRoles.topic
new file mode 100644
index 00000000..70c84ccb
--- /dev/null
+++ b/documentation/topics/generated/listRoles.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /roles
+
+
+ Operation ID: listRoles
+ List roles
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveConditionRules.topic b/documentation/topics/generated/listSelfserveConditionRules.topic
new file mode 100644
index 00000000..d85593fd
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveConditionRules.topic
@@ -0,0 +1,52 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/condition/rules
+
+
+ Operation ID: listSelfserveConditionRules
+ Retrieve a list of self-serve condition rules.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by rule ID |
+ | condition_id | query | no | integer | Filter by condition ID |
+ | type | query | no | string | Filter by rule type |
+ | object_type | query | no | string | Filter by object type |
+ | object_id | query | no | integer | Filter by object ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved condition rules | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentSelfserveConditionRule"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveConditions.topic b/documentation/topics/generated/listSelfserveConditions.topic
new file mode 100644
index 00000000..83e79281
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveConditions.topic
@@ -0,0 +1,53 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/conditions
+
+
+ Operation ID: listSelfserveConditions
+ Retrieve a list of self-serve conditions for a department, lane, or product.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by condition ID |
+ | department | query | no | integer | Filter by department ID |
+ | lane | query | no | integer | Filter by lane ID |
+ | product | query | no | integer | Filter by product ID |
+ | condition_id | query | no | integer | Filter by condition ID |
+ | machine_type_id | query | no | integer | Filter by reusable machine type ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved conditions | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentSelfserveCondition"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveMachineTypes.topic b/documentation/topics/generated/listSelfserveMachineTypes.topic
new file mode 100644
index 00000000..fbd6355f
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveMachineTypes.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/machine-types
+
+
+ Operation ID: listSelfserveMachineTypes
+ List reusable self-serve machine types
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved machine types | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/SelfserveMachineType"
+ },
+ {
+ "items": {
+ "$ref": "#/components/schemas/SelfserveMachineType"
+ },
+ "type": "array"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveQuestions.topic b/documentation/topics/generated/listSelfserveQuestions.topic
new file mode 100644
index 00000000..14b481b3
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveQuestions.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/questions
+
+
+ Operation ID: listSelfserveQuestions
+ Retrieve a list of self-serve questions for a department, lane, or product.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by question ID |
+ | department | query | no | integer | Filter by department ID |
+ | lane | query | no | integer | Filter by lane ID |
+ | product | query | no | integer | Filter by product ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved questions | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentSelfserveQuestion"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveTaskAttachments.topic b/documentation/topics/generated/listSelfserveTaskAttachments.topic
new file mode 100644
index 00000000..afee7249
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveTaskAttachments.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/tasks/attachments
+
+
+ Operation ID: listSelfserveTaskAttachments
+ Retrieve a list of attachments for a specific self-serve task.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Task ID |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved task attachments | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveTasks.topic b/documentation/topics/generated/listSelfserveTasks.topic
new file mode 100644
index 00000000..1ada7084
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveTasks.topic
@@ -0,0 +1,52 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/tasks
+
+
+ Operation ID: listSelfserveTasks
+ Retrieve a list of self-serve tasks for a department, lane, product, or condition_id.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by task ID |
+ | department | query | no | integer | Filter by department ID |
+ | lane | query | no | integer | Filter by lane ID |
+ | product | query | no | integer | Filter by product ID |
+ | condition_id | query | no | integer | Filter by condition ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved tasks | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentSelfserveTask"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listSelfserveVehicleConditions.topic b/documentation/topics/generated/listSelfserveVehicleConditions.topic
new file mode 100644
index 00000000..92dd1695
--- /dev/null
+++ b/documentation/topics/generated/listSelfserveVehicleConditions.topic
@@ -0,0 +1,53 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /department/selfserve/vehicle/conditions
+
+
+ Operation ID: listSelfserveVehicleConditions
+ Retrieve a list of vehicle conditions for a department, lane, reg, or question. Customers will only see their own vehicle conditions.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | no | integer | Filter by condition ID |
+ | department | query | no | integer | Filter by department ID |
+ | lane | query | no | integer | Filter by lane ID |
+ | reg | query | no | string | Filter by vehicle registration number |
+ | question | query | no | integer | Filter by question ID |
+ | customer_id | query | no | integer | Filter by customer ID |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully retrieved vehicle conditions | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/DepartmentSelfserveVehicleCondition"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listStripeCustomers.topic b/documentation/topics/generated/listStripeCustomers.topic
new file mode 100644
index 00000000..c204122e
--- /dev/null
+++ b/documentation/topics/generated/listStripeCustomers.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/customers
+
+
+ Operation ID: listStripeCustomers
+ Get list of Stripe customers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Stripe customers retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listStripePrices.topic b/documentation/topics/generated/listStripePrices.topic
new file mode 100644
index 00000000..bf16bde8
--- /dev/null
+++ b/documentation/topics/generated/listStripePrices.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/prices
+
+
+ Operation ID: listStripePrices
+ Get list of Stripe prices
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Stripe prices retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listStripeProducts.topic b/documentation/topics/generated/listStripeProducts.topic
new file mode 100644
index 00000000..0c56775a
--- /dev/null
+++ b/documentation/topics/generated/listStripeProducts.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/products
+
+
+ Operation ID: listStripeProducts
+ Get list of Stripe products
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Stripe products retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listStripeTerminalLocations.topic b/documentation/topics/generated/listStripeTerminalLocations.topic
new file mode 100644
index 00000000..a3507439
--- /dev/null
+++ b/documentation/topics/generated/listStripeTerminalLocations.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/terminal/locations
+
+
+ Operation ID: listStripeTerminalLocations
+ List Stripe terminal locations
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listStripeTerminalReaders.topic b/documentation/topics/generated/listStripeTerminalReaders.topic
new file mode 100644
index 00000000..56306084
--- /dev/null
+++ b/documentation/topics/generated/listStripeTerminalReaders.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/stripe/terminal/readers
+
+
+ Operation ID: listStripeTerminalReaders
+ List Stripe terminal readers
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listSubuserGrants.topic b/documentation/topics/generated/listSubuserGrants.topic
new file mode 100644
index 00000000..63aaea65
--- /dev/null
+++ b/documentation/topics/generated/listSubuserGrants.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers/grants
+
+
+ Operation ID: listSubuserGrants
+ Returns subuser grant records filtered by `customer_number` and/or `subuser_id`.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | customer_number | query | no | integer | e-conomic customer number to filter by |
+ | subuser_id | query | no | integer | Subuser ID to filter by |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Grants fetched | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "grants": {
+ "items": {
+ "$ref": "#/components/schemas/SubuserGrant"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/listSubuserPermissionNodes.topic b/documentation/topics/generated/listSubuserPermissionNodes.topic
new file mode 100644
index 00000000..c0373797
--- /dev/null
+++ b/documentation/topics/generated/listSubuserPermissionNodes.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers/permission-nodes
+
+
+ Operation ID: listSubuserPermissionNodes
+ Returns grouped permission nodes available for subuser grants.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Permission nodes fetched | application/json |
+ | 401 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "permission_nodes": {
+ "items": {
+ "$ref": "#/components/schemas/PermissionNodeGroup"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/listSubusers.topic b/documentation/topics/generated/listSubusers.topic
new file mode 100644
index 00000000..e28e61c0
--- /dev/null
+++ b/documentation/topics/generated/listSubusers.topic
@@ -0,0 +1,105 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers
+
+
+ Operation ID: listSubusers
+ Returns a paginated list of subusers (drivers) that have enabled grants tied to the
+authenticated user's customer number. Only subusers with at least one enabled, non-deleted
+grant for the caller's customer are returned.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | page | query | no | integer | |
+ | limit | query | no | integer | |
+ | search | query | no | string | |
+ | include_non_enabled | query | no | boolean | Include subusers that only have non-enabled grants (default false) |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | List of visible subusers | application/json |
+ | 401 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "properties": {
+ "created_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "email": {
+ "format": "email",
+ "nullable": true,
+ "type": "string"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "nullable": true,
+ "type": "string"
+ },
+ "permissions": {
+ "description": "Aggregated permission keys granted for the caller's customer",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "phone": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "phone_country_code": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "suspended_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "two_factor_enabled": {
+ "description": "Indicates if 2FA is enabled for this account",
+ "type": "boolean"
+ },
+ "updated_at": {
+ "format": "date-time",
+ "nullable": true,
+ "type": "string"
+ },
+ "username": {
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listSuperuserDepartments.topic b/documentation/topics/generated/listSuperuserDepartments.topic
new file mode 100644
index 00000000..9b828ca3
--- /dev/null
+++ b/documentation/topics/generated/listSuperuserDepartments.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /superuser/department
+
+
+ Operation ID: listSuperuserDepartments
+ List departments (superuser)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listUsers.topic b/documentation/topics/generated/listUsers.topic
new file mode 100644
index 00000000..c5124b7d
--- /dev/null
+++ b/documentation/topics/generated/listUsers.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /users
+
+
+ Operation ID: listUsers
+ Retrieve a paginated list of users
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Users retrieved successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "items": {
+ "$ref": "#/components/schemas/User"
+ },
+ "type": "array"
+}
+
+
+
diff --git a/documentation/topics/generated/listVehicles.topic b/documentation/topics/generated/listVehicles.topic
new file mode 100644
index 00000000..f2c16dc5
--- /dev/null
+++ b/documentation/topics/generated/listVehicles.topic
@@ -0,0 +1,68 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /vehicles
+
+
+ Operation ID: listVehicles
+ List vehicles or fetch a specific vehicle when `id` is provided.
+
+- When `id` is present, returns a single vehicle object (404 if not found).
+- Otherwise returns a paginated list of vehicles.
+
+Permissions:
+- Own scope: `list_own_vehicles` (linked to subuser node `VEHICLES_LIST`).
+- Broader scope: `list_vehicles_other`.
+
+Subusers may specify header `X-Customer-Number` to target a specific customer. If the broader
+permission is missing, the list will automatically be restricted to the effective customer context.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+ | id | query | no | integer | |
+ | reg | query | no | string | |
+ | customer_id | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle(s) retrieved successfully | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/Vehicle"
+ },
+ {
+ "items": {
+ "$ref": "#/components/schemas/Vehicle"
+ },
+ "type": "array"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/listWashCertificates.topic b/documentation/topics/generated/listWashCertificates.topic
new file mode 100644
index 00000000..ffd2ad25
--- /dev/null
+++ b/documentation/topics/generated/listWashCertificates.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/washcertificates
+
+
+ Operation ID: listWashCertificates
+ List wash certificates
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listXlvaskCustomers.topic b/documentation/topics/generated/listXlvaskCustomers.topic
new file mode 100644
index 00000000..b1a66023
--- /dev/null
+++ b/documentation/topics/generated/listXlvaskCustomers.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/xlvask/customers
+
+
+ Operation ID: listXlvaskCustomers
+ Get list of customers from XLVask
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | XLVask customers retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/listXlvaskVehicles.topic b/documentation/topics/generated/listXlvaskVehicles.topic
new file mode 100644
index 00000000..a25ef811
--- /dev/null
+++ b/documentation/topics/generated/listXlvaskVehicles.topic
@@ -0,0 +1,34 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/xlvask/vehicles
+
+
+ Operation ID: listXlvaskVehicles
+ Get list of vehicles from XLVask
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | XLVask vehicles retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/logout.topic b/documentation/topics/generated/logout.topic
new file mode 100644
index 00000000..6d01dac1
--- /dev/null
+++ b/documentation/topics/generated/logout.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /auth/logout
+
+
+ Operation ID: logout
+ Invalidate the current authentication token
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Logout successful | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Logged out",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/lookupCvr.topic b/documentation/topics/generated/lookupCvr.topic
new file mode 100644
index 00000000..34e4c859
--- /dev/null
+++ b/documentation/topics/generated/lookupCvr.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /cvr/lookup
+
+
+ Operation ID: lookupCvr
+ Get detailed information for a CVR number
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | cvr | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | CVR information retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/markOrderCompleted.topic b/documentation/topics/generated/markOrderCompleted.topic
new file mode 100644
index 00000000..52716e43
--- /dev/null
+++ b/documentation/topics/generated/markOrderCompleted.topic
@@ -0,0 +1,52 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders/mark_as_completed
+
+
+ Operation ID: markOrderCompleted
+ Mark an order as completed
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order marked as completed successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/motorApiLookup.topic b/documentation/topics/generated/motorApiLookup.topic
new file mode 100644
index 00000000..389886d1
--- /dev/null
+++ b/documentation/topics/generated/motorApiLookup.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/motorapi/lookup
+
+
+ Operation ID: motorApiLookup
+ Look up vehicle information using license plate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | plate | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle information retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/passkeyChallenge.topic b/documentation/topics/generated/passkeyChallenge.topic
new file mode 100644
index 00000000..00b56dd8
--- /dev/null
+++ b/documentation/topics/generated/passkeyChallenge.topic
@@ -0,0 +1,108 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/passkey/challenge
+
+
+ Operation ID: passkeyChallenge
+ Generates a WebAuthn PublicKeyCredentialRequestOptions payload. If customer_number is provided, allowCredentials will be populated with existing passkeys for that account. Otherwise, a challenge is issued for discoverable credentials.
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "description": "Optional customer's e-conomic customer number",
+ "example": 12345,
+ "type": "integer"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Challenge generated | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "challenge_token": {
+ "description": "Temporary token binding the challenge to the login attempt",
+ "type": "string"
+ },
+ "publicKey": {
+ "properties": {
+ "allowCredentials": {
+ "items": {
+ "properties": {
+ "id": {
+ "description": "Base64URL-encoded credential ID",
+ "type": "string"
+ },
+ "transports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "example": "public-key",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "challenge": {
+ "description": "Base64URL-encoded challenge",
+ "type": "string"
+ },
+ "rpId": {
+ "description": "Relying party ID (truckwash.io or localhost)",
+ "example": "truckwash.io",
+ "type": "string"
+ },
+ "timeout": {
+ "description": "Timeout in milliseconds",
+ "type": "integer"
+ },
+ "userVerification": {
+ "enum": [
+ "required",
+ "preferred",
+ "discouraged"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/passkeyVerify.topic b/documentation/topics/generated/passkeyVerify.topic
new file mode 100644
index 00000000..3dc1f1b0
--- /dev/null
+++ b/documentation/topics/generated/passkeyVerify.topic
@@ -0,0 +1,135 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/passkey/verify
+
+
+ Operation ID: passkeyVerify
+ Verifies the WebAuthn assertion and challenge token. Returns a session token on success.
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "challenge_token": {
+ "description": "The token returned by the challenge endpoint",
+ "type": "string"
+ },
+ "credential": {
+ "description": "The WebAuthn PublicKeyCredential object (assertion)",
+ "properties": {
+ "clientExtensionResults": {
+ "type": "object"
+ },
+ "id": {
+ "description": "The credential ID (base64url)",
+ "type": "string"
+ },
+ "rawId": {
+ "description": "The raw credential ID (base64url)",
+ "type": "string"
+ },
+ "response": {
+ "properties": {
+ "authenticatorData": {
+ "description": "Base64URL-encoded authenticator data",
+ "type": "string"
+ },
+ "clientDataJSON": {
+ "description": "Base64URL-encoded client data",
+ "type": "string"
+ },
+ "signature": {
+ "description": "Base64URL-encoded signature",
+ "type": "string"
+ },
+ "userHandle": {
+ "description": "Base64URL-encoded user handle",
+ "nullable": true,
+ "type": "string"
+ }
+ },
+ "required": [
+ "clientDataJSON",
+ "authenticatorData",
+ "signature"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "example": "public-key",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "rawId",
+ "type",
+ "response"
+ ],
+ "type": "object"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "challenge_token",
+ "credential",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Verification successful, session started | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "token": {
+ "description": "Bearer token for customer",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "session": {
+ "description": "Session token for subuser",
+ "type": "string"
+ }
+ },
+ "required": [
+ "session"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/rebuildSystemSearchCache.topic b/documentation/topics/generated/rebuildSystemSearchCache.topic
new file mode 100644
index 00000000..0830a16d
--- /dev/null
+++ b/documentation/topics/generated/rebuildSystemSearchCache.topic
@@ -0,0 +1,47 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/search/system/cache/rebuild
+
+
+ Operation ID: rebuildSystemSearchCache
+ Queues a cache rebuild request and clears active query/intent cache namespaces immediately.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/SystemSearchCacheRebuildRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Cache rebuild queued successfully | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SystemSearchCacheRebuildResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/recordDepartmentPlateScan.topic b/documentation/topics/generated/recordDepartmentPlateScan.topic
new file mode 100644
index 00000000..50bfaa73
--- /dev/null
+++ b/documentation/topics/generated/recordDepartmentPlateScan.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /numberplatescans/department
+
+
+ Operation ID: recordDepartmentPlateScan
+ Record plate scan for department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "type": "integer"
+ },
+ "plate": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "plate",
+ "department_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Plate scan recorded successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/recordPlateScan.topic b/documentation/topics/generated/recordPlateScan.topic
new file mode 100644
index 00000000..139a6bc4
--- /dev/null
+++ b/documentation/topics/generated/recordPlateScan.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /numberplatescans
+
+
+ Operation ID: recordPlateScan
+ Record a new license plate scan
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "lane_id": {
+ "type": "integer"
+ },
+ "plate": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "plate",
+ "lane_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Plate scan recorded successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/registerCustomerByCvr.topic b/documentation/topics/generated/registerCustomerByCvr.topic
new file mode 100644
index 00000000..b3aa005e
--- /dev/null
+++ b/documentation/topics/generated/registerCustomerByCvr.topic
@@ -0,0 +1,95 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/register/cvr
+
+
+ Operation ID: registerCustomerByCvr
+ Register a new customer account using Danish CVR number
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "companyPhone": {
+ "description": "Company phone number",
+ "example": 21754690,
+ "maximum": 9999999999,
+ "minimum": 10000000,
+ "type": "integer"
+ },
+ "contactEmail": {
+ "description": "Contact email",
+ "example": "contact@company.dk",
+ "format": "email",
+ "maxLength": 255,
+ "minLength": 5,
+ "type": "string"
+ },
+ "contactName": {
+ "description": "Contact person name",
+ "example": "Mikkel",
+ "type": "string"
+ },
+ "contactPhone": {
+ "description": "Contact phone number",
+ "example": 21754690,
+ "maximum": 9999999999,
+ "minimum": 10000000,
+ "type": "integer"
+ },
+ "cvr": {
+ "description": "Danish CVR number",
+ "example": "44794780",
+ "maxLength": 20,
+ "minLength": 8,
+ "type": "string"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ },
+ "invoiceEmail": {
+ "description": "Email for invoices",
+ "example": "invoice@company.dk",
+ "format": "email",
+ "maxLength": 255,
+ "minLength": 5,
+ "type": "string"
+ }
+ },
+ "required": [
+ "cvr",
+ "companyPhone",
+ "invoiceEmail",
+ "contactEmail",
+ "contactPhone",
+ "contactName",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Customer registered successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/removeDepartmentCategory.topic b/documentation/topics/generated/removeDepartmentCategory.topic
new file mode 100644
index 00000000..754d69cf
--- /dev/null
+++ b/documentation/topics/generated/removeDepartmentCategory.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /departments/categories
+
+
+ Operation ID: removeDepartmentCategory
+ Remove category from department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/removeRolePermission.topic b/documentation/topics/generated/removeRolePermission.topic
new file mode 100644
index 00000000..70c0db73
--- /dev/null
+++ b/documentation/topics/generated/removeRolePermission.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ DELETE /roles/permissions
+
+
+ Operation ID: removeRolePermission
+ Remove permission from role
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | role_id | query | yes | integer | |
+ | permission | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/renamePasskey.topic b/documentation/topics/generated/renamePasskey.topic
new file mode 100644
index 00000000..a1386ad1
--- /dev/null
+++ b/documentation/topics/generated/renamePasskey.topic
@@ -0,0 +1,56 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PATCH /account/security/passkeys/{id}
+
+
+ Operation ID: renamePasskey
+ Rename a passkey
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | path | yes | integer | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/PasskeyRenameRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Passkey renamed | application/json |
+ | 404 | Not found | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+ Schema for response 404 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/requestPasswordReset.topic b/documentation/topics/generated/requestPasswordReset.topic
new file mode 100644
index 00000000..b1183759
--- /dev/null
+++ b/documentation/topics/generated/requestPasswordReset.topic
@@ -0,0 +1,60 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/password-reset/request
+
+
+ Operation ID: requestPasswordReset
+ Send an email with a password reset token to the customer's email address
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "description": "The customer number",
+ "example": 123456,
+ "type": "integer"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "customer_number",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Request processed | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/searchCustomers.topic b/documentation/topics/generated/searchCustomers.topic
new file mode 100644
index 00000000..4667fa02
--- /dev/null
+++ b/documentation/topics/generated/searchCustomers.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /customers/search
+
+
+ Operation ID: searchCustomers
+ Search for customers using various criteria
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "query": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customers found successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/searchCvr.topic b/documentation/topics/generated/searchCvr.topic
new file mode 100644
index 00000000..2fc1ecd3
--- /dev/null
+++ b/documentation/topics/generated/searchCvr.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /cvr/search
+
+
+ Operation ID: searchCvr
+ Search for companies by name or CVR
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | query | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Search results retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/searchVehicles.topic b/documentation/topics/generated/searchVehicles.topic
new file mode 100644
index 00000000..f361fddf
--- /dev/null
+++ b/documentation/topics/generated/searchVehicles.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /vehicles/search
+
+
+ Operation ID: searchVehicles
+ Search vehicles
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | search | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/sendDepartmentGoalProgressAlertTest.topic b/documentation/topics/generated/sendDepartmentGoalProgressAlertTest.topic
new file mode 100644
index 00000000..888e92fc
--- /dev/null
+++ b/documentation/topics/generated/sendDepartmentGoalProgressAlertTest.topic
@@ -0,0 +1,150 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /goals/department/progress-alert/test
+
+
+ Operation ID: sendDepartmentGoalProgressAlertTest
+ Sends a progress alert for a department goal to the destination defined in the goal's criteria.
+
+Permission required: `goals_department_progress_alert_test`.
+
+Access control:
+- The caller must be a superuser or belong to all departments targeted by the goal.
+
+Behavior:
+- Looks up the goal by `id`.
+- Rebuilds the criteria from stored JSON and attaches the goal's departments.
+- Renders the alert using the server-side renderer (respecting progress type/style/format and destination limits).
+- Sends the alert to Slack, Email, or SMS depending on `progress_alert_destination`, unless overridden.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "description": "Department id to use that department's Slack webhook when destination is SLACK",
+ "example": 3,
+ "type": "integer"
+ },
+ "email_to": {
+ "description": "Email recipient when destination is EMAIL",
+ "example": "tester@example.com",
+ "format": "email",
+ "type": "string"
+ },
+ "id": {
+ "description": "The department goal id",
+ "example": 42,
+ "type": "integer"
+ },
+ "overrideDestination": {
+ "description": "Override the destination for this test",
+ "enum": [
+ "SLACK",
+ "EMAIL",
+ "SMS",
+ "NONE"
+ ],
+ "example": "SLACK",
+ "type": "string"
+ },
+ "slack_webhook": {
+ "description": "Slack webhook URL when destination is SLACK",
+ "example": "https://hooks.slack.com/services/T000/B000/XXX",
+ "type": "string"
+ },
+ "sms_to": {
+ "description": "One or more MSISDN recipients when destination is SMS",
+ "oneOf": [
+ {
+ "description": "Comma or semicolon separated list",
+ "example": "+4512345678, +4598765432",
+ "type": "string"
+ },
+ {
+ "example": [
+ "+4512345678",
+ "+4598765432"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ ]
+ },
+ "subject": {
+ "description": "Optional email subject when destination is EMAIL",
+ "example": "Dept Goal Progress Test",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Alert sent successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "destination": {
+ "description": "Final destination used",
+ "enum": [
+ "SLACK",
+ "EMAIL",
+ "SMS",
+ "NONE"
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "Goal id",
+ "type": "integer"
+ },
+ "message_preview": {
+ "description": "Rendered message preview",
+ "type": "string"
+ },
+ "provider_response": {
+ "description": "Provider-specific response or status message"
+ },
+ "target": {
+ "description": "The target used for delivery (email address, phone numbers, department id, or webhook)"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/sendSelfServeLaneCommand.topic b/documentation/topics/generated/sendSelfServeLaneCommand.topic
new file mode 100644
index 00000000..3c626870
--- /dev/null
+++ b/documentation/topics/generated/sendSelfServeLaneCommand.topic
@@ -0,0 +1,68 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/self-serve/lane/command
+
+
+ Operation ID: sendSelfServeLaneCommand
+ Send a command (e.g., start, stop, reset) to a self-serve lane
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "command": {
+ "enum": [
+ "START",
+ "STOP",
+ "RESET",
+ "RESERVE",
+ "RELEASE"
+ ],
+ "type": "string"
+ },
+ "lane_id": {
+ "type": "integer"
+ },
+ "license_plate": {
+ "description": "Required for START command",
+ "type": "string"
+ }
+ },
+ "required": [
+ "lane_id",
+ "command"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Command sent successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfServeLaneStatus"
+}
+
+
+
diff --git a/documentation/topics/generated/setDepartmentPrice.topic b/documentation/topics/generated/setDepartmentPrice.topic
new file mode 100644
index 00000000..b1f4531b
--- /dev/null
+++ b/documentation/topics/generated/setDepartmentPrice.topic
@@ -0,0 +1,59 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/department/prices
+
+
+ Operation ID: setDepartmentPrice
+ Set department price
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "type": "integer"
+ },
+ "price": {
+ "type": "integer"
+ },
+ "product_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "department_id",
+ "product_id",
+ "price"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setDepartmentTerminalLocation.topic b/documentation/topics/generated/setDepartmentTerminalLocation.topic
new file mode 100644
index 00000000..f99d4537
--- /dev/null
+++ b/documentation/topics/generated/setDepartmentTerminalLocation.topic
@@ -0,0 +1,55 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/stripe/department/terminal/location
+
+
+ Operation ID: setDepartmentTerminalLocation
+ Set department terminal location
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "location": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "location"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setDepartmentVariable.topic b/documentation/topics/generated/setDepartmentVariable.topic
new file mode 100644
index 00000000..13de77ff
--- /dev/null
+++ b/documentation/topics/generated/setDepartmentVariable.topic
@@ -0,0 +1,59 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/department/variables
+
+
+ Operation ID: setDepartmentVariable
+ Set department variable
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "type": "integer"
+ },
+ "value": {
+ "type": "string"
+ },
+ "variable": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "department_id",
+ "variable",
+ "value"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setPasswordUsingResetToken.topic b/documentation/topics/generated/setPasswordUsingResetToken.topic
new file mode 100644
index 00000000..af38e54d
--- /dev/null
+++ b/documentation/topics/generated/setPasswordUsingResetToken.topic
@@ -0,0 +1,71 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/password-reset/set
+
+
+ Operation ID: setPasswordUsingResetToken
+ Update the customer password using a valid reset token
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token",
+ "type": "string"
+ },
+ "password": {
+ "description": "The new password",
+ "type": "string"
+ },
+ "token": {
+ "description": "The password reset token",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token",
+ "password",
+ "g_recaptcha_response"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Password updated successfully | application/json |
+ | 400 | | |
+ | 404 | Invalid or expired token | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+ Schema for response 404 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/setSelfServeLaneAllowedServices.topic b/documentation/topics/generated/setSelfServeLaneAllowedServices.topic
new file mode 100644
index 00000000..798db1fa
--- /dev/null
+++ b/documentation/topics/generated/setSelfServeLaneAllowedServices.topic
@@ -0,0 +1,76 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /modules/self-serve/lane/services/allowed
+
+
+ Operation ID: setSelfServeLaneAllowedServices
+ Updates the set of services that are allowed to be manually activated for a given self-serve lane,
+derived from the tasks currently shown to the user after answering the self-serve questions.
+This endpoint does not activate anything by itself; it only sets what is allowed to be activated.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "lane_id": {
+ "type": "integer"
+ },
+ "task_ids": {
+ "description": "List of task IDs that are currently shown to the user",
+ "items": {
+ "type": "integer"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "lane_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Allowed services updated | application/json |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "allowed_services": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "lane_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/setUserDiscount.topic b/documentation/topics/generated/setUserDiscount.topic
new file mode 100644
index 00000000..ded9b046
--- /dev/null
+++ b/documentation/topics/generated/setUserDiscount.topic
@@ -0,0 +1,62 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/user/discounts
+
+
+ Operation ID: setUserDiscount
+ Set user discount
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "discount": {
+ "type": "integer"
+ },
+ "is_category": {
+ "type": "boolean"
+ },
+ "object_id": {
+ "type": "string"
+ },
+ "user_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "discount",
+ "object_id",
+ "is_category"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setUserKey.topic b/documentation/topics/generated/setUserKey.topic
new file mode 100644
index 00000000..342a371b
--- /dev/null
+++ b/documentation/topics/generated/setUserKey.topic
@@ -0,0 +1,58 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/user/keys
+
+
+ Operation ID: setUserKey
+ Set user key
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "user_id": {
+ "type": "integer"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "value"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setUserPassword.topic b/documentation/topics/generated/setUserPassword.topic
new file mode 100644
index 00000000..4f9f62c4
--- /dev/null
+++ b/documentation/topics/generated/setUserPassword.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/user/password
+
+
+ Operation ID: setUserPassword
+ Set user password
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "user_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "password"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setVehicleAutoStartOnLpr.topic b/documentation/topics/generated/setVehicleAutoStartOnLpr.topic
new file mode 100644
index 00000000..4afcfb9b
--- /dev/null
+++ b/documentation/topics/generated/setVehicleAutoStartOnLpr.topic
@@ -0,0 +1,68 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /vehicles/set-auto-start-on-lpr
+
+
+ Operation ID: setVehicleAutoStartOnLpr
+ Enable or disable automatic start on LPR for a vehicle in XL Vask.
+
+Permissions:
+- Own scope: `set_auto_start_on_lpr` (linked to subuser node `VEHICLES_EDIT`).
+- Broader scope: `set_auto_start_on_lpr_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "active": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "active"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setVehicleTypeId.topic b/documentation/topics/generated/setVehicleTypeId.topic
new file mode 100644
index 00000000..86ca158e
--- /dev/null
+++ b/documentation/topics/generated/setVehicleTypeId.topic
@@ -0,0 +1,71 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /vehicles/set-vehicle-type-id
+
+
+ Operation ID: setVehicleTypeId
+ Set or change the XL Vask `vehicleTypeId` for a vehicle.
+
+Permissions:
+- Own scope: `set_vehicle_type_id` (linked to subuser node `VEHICLES_EDIT`).
+- Broader scope: `set_vehicle_type_id_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "vehicleTypeId": {
+ "maxLength": 50,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "vehicleTypeId"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+ | 400 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/setup2fa.topic b/documentation/topics/generated/setup2fa.topic
new file mode 100644
index 00000000..58697c4b
--- /dev/null
+++ b/documentation/topics/generated/setup2fa.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/2fa/setup
+
+
+ Operation ID: setup2fa
+ Generate a new TOTP secret for the authenticated user/subuser
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | 2FA secret generated successfully | application/json |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "qr_code_url": {
+ "description": "An otpauth URL for generating a QR code",
+ "type": "string"
+ },
+ "secret": {
+ "description": "The base32 encoded TOTP secret",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/simulateStripePayment.topic b/documentation/topics/generated/simulateStripePayment.topic
new file mode 100644
index 00000000..d7f50971
--- /dev/null
+++ b/documentation/topics/generated/simulateStripePayment.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders/module/stripe/debug/simulate_payment
+
+
+ Operation ID: simulateStripePayment
+ Simulate Stripe payment
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/suIntimidate.topic b/documentation/topics/generated/suIntimidate.topic
new file mode 100644
index 00000000..26f82583
--- /dev/null
+++ b/documentation/topics/generated/suIntimidate.topic
@@ -0,0 +1,58 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /su/intimidate
+
+
+ Operation ID: suIntimidate
+ Create an authentication token for another user (Superuser only)
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "user_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "user_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "token": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/submitForm.topic b/documentation/topics/generated/submitForm.topic
new file mode 100644
index 00000000..30942ded
--- /dev/null
+++ b/documentation/topics/generated/submitForm.topic
@@ -0,0 +1,61 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /form
+
+
+ Operation ID: submitForm
+ Submit a form
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "data": {
+ "description": "Form submission data",
+ "type": "object"
+ },
+ "g_recaptcha_response": {
+ "description": "reCAPTCHA verification token (required if not authenticated)",
+ "type": "string"
+ },
+ "id": {
+ "description": "Form identifier",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "data"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Form submitted successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/subuserPasswordAuth.topic b/documentation/topics/generated/subuserPasswordAuth.topic
new file mode 100644
index 00000000..7f077187
--- /dev/null
+++ b/documentation/topics/generated/subuserPasswordAuth.topic
@@ -0,0 +1,150 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /subusers/auth/password
+
+
+ Operation ID: subuserPasswordAuth
+ Authenticates a subuser (driver) using a password together with one of the supported
+identifiers: `phone_country_code` + `phone`, `subuser_id`, or `username`.
+
+On success, returns a newly generated session token for the subuser.
+
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "password": {
+ "format": "password",
+ "maxLength": 255,
+ "minLength": 8,
+ "type": "string"
+ },
+ "phone": {
+ "description": "Phone number (4–15 digits, no leading +)",
+ "example": 12345678,
+ "maximum": 999999999999999,
+ "minimum": 1000,
+ "type": "integer"
+ },
+ "phone_country_code": {
+ "description": "Phone country code (1–3 digits)",
+ "example": 45,
+ "maximum": 999,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "phone_country_code",
+ "phone",
+ "password"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "password": {
+ "format": "password",
+ "maxLength": 255,
+ "minLength": 8,
+ "type": "string"
+ },
+ "subuser_id": {
+ "description": "Subuser ID",
+ "example": 42,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "subuser_id",
+ "password"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "password": {
+ "format": "password",
+ "maxLength": 255,
+ "minLength": 8,
+ "type": "string"
+ },
+ "username": {
+ "example": "jdoe",
+ "maxLength": 255,
+ "minLength": 3,
+ "type": "string"
+ }
+ },
+ "required": [
+ "username",
+ "password"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Authentication successful | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "session": {
+ "description": "Newly generated subuser session token",
+ "example": "2f7a8c0e-9b1d-4c6a-91a9-1a2b3c4d5e6f",
+ "type": "string"
+ }
+ },
+ "required": [
+ "session"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "2fa_required": {
+ "example": true,
+ "type": "boolean"
+ },
+ "2fa_token": {
+ "description": "Temporary 2FA verification token",
+ "example": "557a3e7b1a2b...",
+ "type": "string"
+ }
+ },
+ "required": [
+ "2fa_required",
+ "2fa_token"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/syncAllBookings.topic b/documentation/topics/generated/syncAllBookings.topic
new file mode 100644
index 00000000..123f12f2
--- /dev/null
+++ b/documentation/topics/generated/syncAllBookings.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /superuser/bookings/sync/all
+
+
+ Operation ID: syncAllBookings
+ Sync all bookings from external system
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/syncBooking.topic b/documentation/topics/generated/syncBooking.topic
new file mode 100644
index 00000000..102f3d8c
--- /dev/null
+++ b/documentation/topics/generated/syncBooking.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /admin/bookings/sync
+
+
+ Operation ID: syncBooking
+ Sync booking from external system
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/systemWideSearchGet.topic b/documentation/topics/generated/systemWideSearchGet.topic
new file mode 100644
index 00000000..69950f0f
--- /dev/null
+++ b/documentation/topics/generated/systemWideSearchGet.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /search/system
+
+
+ Operation ID: systemWideSearchGet
+ Search across all supported entities with permission-aware filtering and optional intent parsing debug metadata. Customer records and customer-related entities are matched against a local e-conomic customer index (name/address/email/CVR) that is refreshed by cron. Intent parsing is invoked adaptively when lexical confidence is low or when the query looks intent-driven. Results are ordered by relevance, with recent records preferred when relevance is comparable.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | query | query | yes | string | Free-text query to search for. Supports natural-language intent fallback and domain synonyms such as `rabat` -> `discount`. |
+ | include_types | query | no | array<SystemSearchEntityType> | Comma-separated list of entity types to include. Defaults to all allowed types. |
+ | exclude_types | query | no | array<SystemSearchEntityType> | Comma-separated list of entity types to exclude. |
+ | include_associations | query | no | boolean | Include associated objects when matching a primary entity such as a customer. |
+ | debug_intent | query | no | boolean | Include intent parser diagnostics in `meta.intent_parser`. |
+ | limit | query | no | integer | |
+ | offset | query | no | integer | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Search results returned successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SystemSearchResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/systemWideSearchPost.topic b/documentation/topics/generated/systemWideSearchPost.topic
new file mode 100644
index 00000000..56a1839b
--- /dev/null
+++ b/documentation/topics/generated/systemWideSearchPost.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /search/system
+
+
+ Operation ID: systemWideSearchPost
+ Search across all supported entities using JSON request payload. Customer-related matches include local e-conomic customer index fields. Intent parsing may run adaptively for intent-driven natural-language queries. Results are ordered by relevance, with recent records preferred when relevance is comparable.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/SystemSearchRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Search results returned successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SystemSearchResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/testEmailConfig.topic b/documentation/topics/generated/testEmailConfig.topic
new file mode 100644
index 00000000..64065c9c
--- /dev/null
+++ b/documentation/topics/generated/testEmailConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /email/config/test
+
+
+ Operation ID: testEmailConfig
+ Test email config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Email configuration test completed | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigTestResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/toggleVehicleAddon.topic b/documentation/topics/generated/toggleVehicleAddon.topic
new file mode 100644
index 00000000..982c23f0
--- /dev/null
+++ b/documentation/topics/generated/toggleVehicleAddon.topic
@@ -0,0 +1,68 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /vehicles/addons/toggle
+
+
+ Operation ID: toggleVehicleAddon
+ Enable or disable a vehicle addon for a vehicle.
+
+Permissions:
+- Own scope: `toggle_vehicle_addon_own` (linked to subuser node `VEHICLES_EDIT`).
+- Broader scope: `toggle_vehicle_addon_other`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | | no | object | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "addon_id": {
+ "type": "integer"
+ },
+ "vehicle_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vehicle_id",
+ "addon_id"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Vehicle addon toggled successfully | application/json |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateBackupsConfig.topic b/documentation/topics/generated/updateBackupsConfig.topic
new file mode 100644
index 00000000..2cd320ed
--- /dev/null
+++ b/documentation/topics/generated/updateBackupsConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /backups/config
+
+
+ Operation ID: updateBackupsConfig
+ Update backups config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Backups configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateBirdConfig.topic b/documentation/topics/generated/updateBirdConfig.topic
new file mode 100644
index 00000000..816ac0b2
--- /dev/null
+++ b/documentation/topics/generated/updateBirdConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /bird/config
+
+
+ Operation ID: updateBirdConfig
+ Update Bird config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Bird configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateBooking.topic b/documentation/topics/generated/updateBooking.topic
new file mode 100644
index 00000000..9de44726
--- /dev/null
+++ b/documentation/topics/generated/updateBooking.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /bookings
+
+
+ Operation ID: updateBooking
+ Update an existing booking
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/BookingUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Booking updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateCategory.topic b/documentation/topics/generated/updateCategory.topic
new file mode 100644
index 00000000..3a0e932c
--- /dev/null
+++ b/documentation/topics/generated/updateCategory.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /categories
+
+
+ Operation ID: updateCategory
+ Update an existing category
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/CategoryUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Category updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateCollectedInvoice.topic b/documentation/topics/generated/updateCollectedInvoice.topic
new file mode 100644
index 00000000..80743c56
--- /dev/null
+++ b/documentation/topics/generated/updateCollectedInvoice.topic
@@ -0,0 +1,41 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /collected-invoices
+
+
+ Operation ID: updateCollectedInvoice
+ Update a collected invoice
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Collected invoice updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateDepartment.topic b/documentation/topics/generated/updateDepartment.topic
new file mode 100644
index 00000000..9de3913e
--- /dev/null
+++ b/documentation/topics/generated/updateDepartment.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /departments
+
+
+ Operation ID: updateDepartment
+ Update an existing department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department updated successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateDepartmentGate.topic b/documentation/topics/generated/updateDepartmentGate.topic
new file mode 100644
index 00000000..ade7718b
--- /dev/null
+++ b/documentation/topics/generated/updateDepartmentGate.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/gates
+
+
+ Operation ID: updateDepartmentGate
+ Update department gate
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentGateUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department gate updated successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentGate"
+}
+
+
+
diff --git a/documentation/topics/generated/updateDepartmentGoal.topic b/documentation/topics/generated/updateDepartmentGoal.topic
new file mode 100644
index 00000000..42efe6b3
--- /dev/null
+++ b/documentation/topics/generated/updateDepartmentGoal.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /goals/department
+
+
+ Operation ID: updateDepartmentGoal
+ Update an existing department goal by `id`.
+
+Access control:
+- The creator (`created_by`) may update regardless of department membership.
+- Otherwise the user must satisfy the same subset rule as for read access, and any new `departments` provided must also be a subset unless the user has `superuser`.
+
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentGoalUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department goal updated successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 403 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentGoal"
+}
+
+
+
diff --git a/documentation/topics/generated/updateDepartmentLane.topic b/documentation/topics/generated/updateDepartmentLane.topic
new file mode 100644
index 00000000..2e4e2c0c
--- /dev/null
+++ b/documentation/topics/generated/updateDepartmentLane.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/lanes
+
+
+ Operation ID: updateDepartmentLane
+ Update an existing department lane
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentLaneUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department lane updated successfully | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateDepartmentRelay.topic b/documentation/topics/generated/updateDepartmentRelay.topic
new file mode 100644
index 00000000..b75f722e
--- /dev/null
+++ b/documentation/topics/generated/updateDepartmentRelay.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/relays
+
+
+ Operation ID: updateDepartmentRelay
+ Update department relay
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/DepartmentRelayUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Department relay updated successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentRelay"
+}
+
+
+
diff --git a/documentation/topics/generated/updateDepartmentSelfServeEnabled.topic b/documentation/topics/generated/updateDepartmentSelfServeEnabled.topic
new file mode 100644
index 00000000..20b8c2fc
--- /dev/null
+++ b/documentation/topics/generated/updateDepartmentSelfServeEnabled.topic
@@ -0,0 +1,49 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /departments/self-serve/enabled
+
+
+ Operation ID: updateDepartmentSelfServeEnabled
+ Enable or disable self-serve for a specific department
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Department ID |
+ | enabled | query | yes | string | Enabled status (true/false) |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Status updated successfully | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/updateEconomicConfig.topic b/documentation/topics/generated/updateEconomicConfig.topic
new file mode 100644
index 00000000..e372fe65
--- /dev/null
+++ b/documentation/topics/generated/updateEconomicConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /economic/config
+
+
+ Operation ID: updateEconomicConfig
+ Update e-conomic config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | e-conomic configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateEmailConfig.topic b/documentation/topics/generated/updateEmailConfig.topic
new file mode 100644
index 00000000..f5486a1b
--- /dev/null
+++ b/documentation/topics/generated/updateEmailConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /email/config
+
+
+ Operation ID: updateEmailConfig
+ Update email config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Email configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateEntraConfig.topic b/documentation/topics/generated/updateEntraConfig.topic
new file mode 100644
index 00000000..e46bf962
--- /dev/null
+++ b/documentation/topics/generated/updateEntraConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /entra/config
+
+
+ Operation ID: updateEntraConfig
+ Update Entra config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Entra configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateFxRatesApiConfig.topic b/documentation/topics/generated/updateFxRatesApiConfig.topic
new file mode 100644
index 00000000..4396260a
--- /dev/null
+++ b/documentation/topics/generated/updateFxRatesApiConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /fxratesapi/config
+
+
+ Operation ID: updateFxRatesApiConfig
+ Update FXRatesAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | FXRatesAPI configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateGatewayApiConfig.topic b/documentation/topics/generated/updateGatewayApiConfig.topic
new file mode 100644
index 00000000..487d53d6
--- /dev/null
+++ b/documentation/topics/generated/updateGatewayApiConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /gatewayapi/config
+
+
+ Operation ID: updateGatewayApiConfig
+ Update GatewayAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | GatewayAPI configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateLicensePlateRecognizerConfig.topic b/documentation/topics/generated/updateLicensePlateRecognizerConfig.topic
new file mode 100644
index 00000000..97613111
--- /dev/null
+++ b/documentation/topics/generated/updateLicensePlateRecognizerConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /licenseplaterecognizer/config
+
+
+ Operation ID: updateLicensePlateRecognizerConfig
+ Update LicensePlateRecognizer config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | LicensePlateRecognizer configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateLimbleConfig.topic b/documentation/topics/generated/updateLimbleConfig.topic
new file mode 100644
index 00000000..cfe9ccad
--- /dev/null
+++ b/documentation/topics/generated/updateLimbleConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /limble/config
+
+
+ Operation ID: updateLimbleConfig
+ Update Limble config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Limble configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateMotorApiConfig.topic b/documentation/topics/generated/updateMotorApiConfig.topic
new file mode 100644
index 00000000..cd258360
--- /dev/null
+++ b/documentation/topics/generated/updateMotorApiConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /motorapi/config
+
+
+ Operation ID: updateMotorApiConfig
+ Update MotorAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | MotorAPI configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateOcrSpaceConfig.topic b/documentation/topics/generated/updateOcrSpaceConfig.topic
new file mode 100644
index 00000000..b3da1a1b
--- /dev/null
+++ b/documentation/topics/generated/updateOcrSpaceConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /ocrspace/config
+
+
+ Operation ID: updateOcrSpaceConfig
+ Update OcrSpace config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | OcrSpace configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateOpenAiConfig.topic b/documentation/topics/generated/updateOpenAiConfig.topic
new file mode 100644
index 00000000..48cc2254
--- /dev/null
+++ b/documentation/topics/generated/updateOpenAiConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /openai/config
+
+
+ Operation ID: updateOpenAiConfig
+ Update OpenAI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | OpenAI configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateOrder.topic b/documentation/topics/generated/updateOrder.topic
new file mode 100644
index 00000000..a6eb0cc7
--- /dev/null
+++ b/documentation/topics/generated/updateOrder.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /order
+
+
+ Operation ID: updateOrder
+ Update an existing order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/OrderUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order updated successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateOrderItem.topic b/documentation/topics/generated/updateOrderItem.topic
new file mode 100644
index 00000000..e16c73b9
--- /dev/null
+++ b/documentation/topics/generated/updateOrderItem.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /order/items
+
+
+ Operation ID: updateOrderItem
+ Update an existing order item
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/OrderItemUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order item updated successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateOrders.topic b/documentation/topics/generated/updateOrders.topic
new file mode 100644
index 00000000..cfdb0ccc
--- /dev/null
+++ b/documentation/topics/generated/updateOrders.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /orders
+
+
+ Operation ID: updateOrders
+ Update an existing order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/OrderUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Order updated successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updatePlateScanner.topic b/documentation/topics/generated/updatePlateScanner.topic
new file mode 100644
index 00000000..d657599f
--- /dev/null
+++ b/documentation/topics/generated/updatePlateScanner.topic
@@ -0,0 +1,63 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /numberplatescanners
+
+
+ Operation ID: updatePlateScanner
+ Update plate scanner
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "department_id": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "notes": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "department_id",
+ "name",
+ "notes"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Plate scanner updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateProduct.topic b/documentation/topics/generated/updateProduct.topic
new file mode 100644
index 00000000..96008a94
--- /dev/null
+++ b/documentation/topics/generated/updateProduct.topic
@@ -0,0 +1,44 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /products
+
+
+ Operation ID: updateProduct
+ Update an existing product
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/ProductUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Product updated successfully | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateRecaptchaConfig.topic b/documentation/topics/generated/updateRecaptchaConfig.topic
new file mode 100644
index 00000000..84f42f4b
--- /dev/null
+++ b/documentation/topics/generated/updateRecaptchaConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /reCAPTCHA/config
+
+
+ Operation ID: updateRecaptchaConfig
+ Update reCAPTCHA config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | reCAPTCHA configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfServeConfig.topic b/documentation/topics/generated/updateSelfServeConfig.topic
new file mode 100644
index 00000000..fb06441b
--- /dev/null
+++ b/documentation/topics/generated/updateSelfServeConfig.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /selfserve/config
+
+
+ Operation ID: updateSelfServeConfig
+ Update Self-Serve config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/SelfServeConfig"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Self-serve configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveCondition.topic b/documentation/topics/generated/updateSelfserveCondition.topic
new file mode 100644
index 00000000..9e46b30f
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveCondition.topic
@@ -0,0 +1,79 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/conditions
+
+
+ Operation ID: updateSelfserveCondition
+ Update an existing self-serve condition.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Condition ID |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lane": {
+ "type": "integer"
+ },
+ "machine_type_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "product": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated condition | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveCondition"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveConditionRule.topic b/documentation/topics/generated/updateSelfserveConditionRule.topic
new file mode 100644
index 00000000..a3ee753c
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveConditionRule.topic
@@ -0,0 +1,74 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/condition/rules
+
+
+ Operation ID: updateSelfserveConditionRule
+ Update an existing self-serve condition rule.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Rule ID |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "object_id": {
+ "type": "integer"
+ },
+ "object_type": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated condition rule | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveConditionRule"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveMachineType.topic b/documentation/topics/generated/updateSelfserveMachineType.topic
new file mode 100644
index 00000000..e560c05e
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveMachineType.topic
@@ -0,0 +1,61 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/machine-types
+
+
+ Operation ID: updateSelfserveMachineType
+ Update reusable self-serve machine type
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "description": {
+ "nullable": true,
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated machine type | application/json |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/SelfserveMachineType"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveQuestion.topic b/documentation/topics/generated/updateSelfserveQuestion.topic
new file mode 100644
index 00000000..08f3db6b
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveQuestion.topic
@@ -0,0 +1,77 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/questions
+
+
+ Operation ID: updateSelfserveQuestion
+ Update an existing self-serve question.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Question ID |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lane": {
+ "type": "integer"
+ },
+ "order_priority": {
+ "type": "integer"
+ },
+ "product": {
+ "type": "integer"
+ },
+ "question": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated question | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveQuestion"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveTask.topic b/documentation/topics/generated/updateSelfserveTask.topic
new file mode 100644
index 00000000..00e2e388
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveTask.topic
@@ -0,0 +1,102 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/tasks
+
+
+ Operation ID: updateSelfserveTask
+ Update an existing self-serve task.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Task ID |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "buttons": {
+ "description": "Button IDs enabled by this task. Set to null to clear all buttons.",
+ "items": {
+ "type": "integer"
+ },
+ "nullable": true,
+ "type": "array"
+ },
+ "condition_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "dynamic_images_vehicle_type": {
+ "description": "Vehicle type selection override. Set to null to clear.",
+ "nullable": true,
+ "type": "integer"
+ },
+ "lane": {
+ "type": "integer"
+ },
+ "machine_type_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "order_priority": {
+ "type": "integer"
+ },
+ "product": {
+ "type": "integer"
+ },
+ "services": {
+ "description": "Services enabled by this task. Set to null to clear all services.",
+ "items": {
+ "$ref": "#/components/schemas/SelfserveLaneService"
+ },
+ "nullable": true,
+ "type": "array"
+ },
+ "task": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated task | application/json |
+ | 400 | | |
+ | 404 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveTask"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSelfserveVehicleCondition.topic b/documentation/topics/generated/updateSelfserveVehicleCondition.topic
new file mode 100644
index 00000000..d5e80962
--- /dev/null
+++ b/documentation/topics/generated/updateSelfserveVehicleCondition.topic
@@ -0,0 +1,75 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /department/selfserve/vehicle/conditions
+
+
+ Operation ID: updateSelfserveVehicleCondition
+ Update an existing vehicle condition. Customers can only update conditions for their own vehicles.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | query | yes | integer | Condition ID |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_id": {
+ "nullable": true,
+ "type": "integer"
+ },
+ "department": {
+ "type": "integer"
+ },
+ "lane": {
+ "type": "integer"
+ },
+ "question": {
+ "type": "integer"
+ },
+ "reg": {
+ "type": "string"
+ },
+ "value": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Successfully updated vehicle condition | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/DepartmentSelfserveVehicleConditionMutationResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateShellyConfig.topic b/documentation/topics/generated/updateShellyConfig.topic
new file mode 100644
index 00000000..e20ba94b
--- /dev/null
+++ b/documentation/topics/generated/updateShellyConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /shelly/config
+
+
+ Operation ID: updateShellyConfig
+ Update Shelly config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Shelly configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateStripeConfig.topic b/documentation/topics/generated/updateStripeConfig.topic
new file mode 100644
index 00000000..84bf336c
--- /dev/null
+++ b/documentation/topics/generated/updateStripeConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /stripe/config
+
+
+ Operation ID: updateStripeConfig
+ Update Stripe config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Stripe configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateSubuserGrant.topic b/documentation/topics/generated/updateSubuserGrant.topic
new file mode 100644
index 00000000..e15ed304
--- /dev/null
+++ b/documentation/topics/generated/updateSubuserGrant.topic
@@ -0,0 +1,60 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PATCH /subusers/grants/{id}
+
+
+ Operation ID: updateSubuserGrant
+ Update subuser grant
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | id | path | yes | integer | |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/SubuserGrantUpdateRequest"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Grant updated | application/json |
+ | 400 | | |
+ | 401 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "grant": {
+ "$ref": "#/components/schemas/SubuserGrant"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/updateUser.topic b/documentation/topics/generated/updateUser.topic
new file mode 100644
index 00000000..eb81c52e
--- /dev/null
+++ b/documentation/topics/generated/updateUser.topic
@@ -0,0 +1,45 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /users
+
+
+ Operation ID: updateUser
+ Update an existing user
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "$ref": "#/components/schemas/UserUpdate"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | User updated successfully | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateUserNotifications.topic b/documentation/topics/generated/updateUserNotifications.topic
new file mode 100644
index 00000000..eace59ee
--- /dev/null
+++ b/documentation/topics/generated/updateUserNotifications.topic
@@ -0,0 +1,54 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ PUT /account/notifications
+
+
+ Operation ID: updateUserNotifications
+ Update user notification settings
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "email_notifications_enabled": {
+ "type": "boolean"
+ },
+ "sms_notifications_enabled": {
+ "type": "boolean"
+ },
+ "wash_certificate_email": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Success | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateVirkdataConfig.topic b/documentation/topics/generated/updateVirkdataConfig.topic
new file mode 100644
index 00000000..bc51b099
--- /dev/null
+++ b/documentation/topics/generated/updateVirkdataConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /virkdata/config
+
+
+ Operation ID: updateVirkdataConfig
+ Update Virkdata config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Virkdata configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateWeatherApiConfig.topic b/documentation/topics/generated/updateWeatherApiConfig.topic
new file mode 100644
index 00000000..cff5109a
--- /dev/null
+++ b/documentation/topics/generated/updateWeatherApiConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /weatherapi/config
+
+
+ Operation ID: updateWeatherApiConfig
+ Update WeatherAPI config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | WeatherAPI configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/updateWorkerVersion.topic b/documentation/topics/generated/updateWorkerVersion.topic
new file mode 100644
index 00000000..ba8afc67
--- /dev/null
+++ b/documentation/topics/generated/updateWorkerVersion.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /worker/update-version
+
+
+ Operation ID: updateWorkerVersion
+ Set the target version for the worker update
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | version | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Version update target set successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/updateXlvaskConfig.topic b/documentation/topics/generated/updateXlvaskConfig.topic
new file mode 100644
index 00000000..acbafd4f
--- /dev/null
+++ b/documentation/topics/generated/updateXlvaskConfig.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /xlvask/config
+
+
+ Operation ID: updateXlvaskConfig
+ Update XLVask config
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: no.
+ Content type: application/json
+
+{}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | XLVask configuration updated successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/ModuleConfigUpdateResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/uploadAttachment.topic b/documentation/topics/generated/uploadAttachment.topic
new file mode 100644
index 00000000..e4b1b5ec
--- /dev/null
+++ b/documentation/topics/generated/uploadAttachment.topic
@@ -0,0 +1,50 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /attachments/upload
+
+
+ Operation ID: uploadAttachment
+ Upload a file attachment
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: multipart/form-data
+
+{
+ "properties": {
+ "file": {
+ "format": "binary",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Attachment uploaded successfully | application/json |
+ | 400 | | |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/uploadOrderAttachment.topic b/documentation/topics/generated/uploadOrderAttachment.topic
new file mode 100644
index 00000000..50b2a2ff
--- /dev/null
+++ b/documentation/topics/generated/uploadOrderAttachment.topic
@@ -0,0 +1,52 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /orders/attachments/upload
+
+
+ Operation ID: uploadOrderAttachment
+ Upload an attachment to an order
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: multipart/form-data
+
+{
+ "properties": {
+ "file": {
+ "format": "binary",
+ "type": "string"
+ },
+ "order_id": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 201 | Order attachment uploaded successfully | application/json |
+
+ Schema for response 201 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/uploadSelfserveTaskAttachment.topic b/documentation/topics/generated/uploadSelfserveTaskAttachment.topic
new file mode 100644
index 00000000..ee777214
--- /dev/null
+++ b/documentation/topics/generated/uploadSelfserveTaskAttachment.topic
@@ -0,0 +1,64 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /department/selfserve/tasks/attachments/upload
+
+
+ Operation ID: uploadSelfserveTaskAttachment
+ Upload a new attachment to a specific self-serve task using base64 encoding.
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "base64_file": {
+ "description": "Base64 encoded file content",
+ "type": "string"
+ },
+ "file_name": {
+ "description": "Name of the file including extension",
+ "type": "string"
+ },
+ "task_id": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "task_id",
+ "base64_file",
+ "file_name"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Attachment uploaded successfully | application/json |
+ | 400 | | |
+ | 404 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/validateCustomerNumber.topic b/documentation/topics/generated/validateCustomerNumber.topic
new file mode 100644
index 00000000..a825baf8
--- /dev/null
+++ b/documentation/topics/generated/validateCustomerNumber.topic
@@ -0,0 +1,46 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /guest/validation/customer-number
+
+
+ Operation ID: validateCustomerNumber
+ Check if a customer number is valid and exists
+
+ No authentication required.
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "customer_number": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "customer_number"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Customer number validation successful | application/json |
+ | 400 | | |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/validatePasswordResetToken.topic b/documentation/topics/generated/validatePasswordResetToken.topic
new file mode 100644
index 00000000..90db1ee0
--- /dev/null
+++ b/documentation/topics/generated/validatePasswordResetToken.topic
@@ -0,0 +1,51 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /auth/password-reset/validate
+
+
+ Operation ID: validatePasswordResetToken
+ Check if a password reset token is valid and hasn't expired
+
+ No authentication required.
+
+
+ | Name | In | Required | Type | Description |
+ | token | query | yes | string | The password reset token |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Token is valid | application/json |
+ | 404 | Invalid or expired token | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "customer_id": {
+ "type": "integer"
+ },
+ "valid": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
+
+ Schema for response 404 (application/json):
+
+{
+ "$ref": "#/components/schemas/Error"
+}
+
+
+
diff --git a/documentation/topics/generated/validateSubuserSetupToken.topic b/documentation/topics/generated/validateSubuserSetupToken.topic
new file mode 100644
index 00000000..20186b97
--- /dev/null
+++ b/documentation/topics/generated/validateSubuserSetupToken.topic
@@ -0,0 +1,48 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /subusers/setup
+
+
+ Operation ID: validateSubuserSetupToken
+ Validates a subuser setup token generated during registration.
+
+ No authentication required.
+
+
+ | Name | In | Required | Type | Description |
+ | token | query | yes | string | One-time setup token received via SMS |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Token is valid | application/json |
+ | 400 | | |
+ | 500 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "properties": {
+ "message": {
+ "example": "Token is valid",
+ "type": "string"
+ },
+ "subuser_id": {
+ "example": 42,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
+
+
+
diff --git a/documentation/topics/generated/verify2fa.topic b/documentation/topics/generated/verify2fa.topic
new file mode 100644
index 00000000..084ea531
--- /dev/null
+++ b/documentation/topics/generated/verify2fa.topic
@@ -0,0 +1,86 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ POST /auth/2fa/verify
+
+
+ Operation ID: verify2fa
+ Complete the login process by verifying the 2FA code
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+ Required: yes.
+ Content type: application/json
+
+{
+ "properties": {
+ "2fa_token": {
+ "description": "The temporary 2FA verification token",
+ "type": "string"
+ },
+ "code": {
+ "description": "The 6-digit TOTP code",
+ "type": "string"
+ }
+ },
+ "required": [
+ "2fa_token",
+ "code"
+ ],
+ "type": "object"
+}
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Login successful | application/json |
+ | 400 | | |
+ | 401 | | |
+
+ Schema for response 200 (application/json):
+
+{
+ "oneOf": [
+ {
+ "properties": {
+ "token": {
+ "description": "Bearer authentication token (for users/employees)",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "session": {
+ "description": "Session token (for subusers)",
+ "type": "string"
+ }
+ },
+ "required": [
+ "session"
+ ],
+ "type": "object"
+ }
+ ]
+}
+
+
+
diff --git a/documentation/topics/generated/virkdataSearch.topic b/documentation/topics/generated/virkdataSearch.topic
new file mode 100644
index 00000000..c3a914eb
--- /dev/null
+++ b/documentation/topics/generated/virkdataSearch.topic
@@ -0,0 +1,40 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/virkdata/search
+
+
+ Operation ID: virkdataSearch
+ Search for company information in VirkData
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | search | query | yes | string | |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Company information retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{}
+
+
+
diff --git a/documentation/topics/generated/weatherApiCurrent.topic b/documentation/topics/generated/weatherApiCurrent.topic
new file mode 100644
index 00000000..1229f42b
--- /dev/null
+++ b/documentation/topics/generated/weatherApiCurrent.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/weatherapi/current
+
+
+ Operation ID: weatherApiCurrent
+ Get current weather data from WeatherAPI for a location query
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | q | query | yes | string | Location query (e.g. city, postal code, or latitude,longitude) |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Current weather retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/WeatherApiObjectResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/weatherApiForecast.topic b/documentation/topics/generated/weatherApiForecast.topic
new file mode 100644
index 00000000..4aadd8ce
--- /dev/null
+++ b/documentation/topics/generated/weatherApiForecast.topic
@@ -0,0 +1,43 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/weatherapi/forecast
+
+
+ Operation ID: weatherApiForecast
+ Get forecast weather data from WeatherAPI
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | q | query | yes | string | Location query (e.g. city, postal code, or latitude,longitude) |
+ | days | query | no | integer | Number of forecast days |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Forecast weather retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/WeatherApiObjectResponse"
+}
+
+
+
diff --git a/documentation/topics/generated/weatherApiSearch.topic b/documentation/topics/generated/weatherApiSearch.topic
new file mode 100644
index 00000000..18eee5cd
--- /dev/null
+++ b/documentation/topics/generated/weatherApiSearch.topic
@@ -0,0 +1,42 @@
+
+
+
+
+
+ This endpoint documentation is generated directly from openapi.yaml.
+
+ GET /modules/weatherapi/search
+
+
+ Operation ID: weatherApiSearch
+ Search location suggestions from WeatherAPI
+
+
+ Security requirements:
+
+ | Scheme | Scopes |
+ | BearerAuth | - |
+
+
+
+
+ | Name | In | Required | Type | Description |
+ | q | query | yes | string | Search text |
+
+
+
+
+ | Status | Description | Content Types |
+ | 200 | Location search results retrieved successfully | application/json |
+
+ Schema for response 200 (application/json):
+
+{
+ "$ref": "#/components/schemas/WeatherApiObjectResponse"
+}
+
+
+
diff --git a/openapi.yaml b/openapi.yaml
index 43b8637c..4c57ea96 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -36,6 +36,8 @@ security:
tags:
- name: Authentication
description: User and employee authentication endpoints
+ - name: Security
+ description: Account security and passkey management endpoints
- name: Users
description: User management and customer operations
- name: Search
@@ -8192,7 +8194,7 @@ paths:
get:
tags: [Config]
summary: Get reCAPTCHA config
- operationId: getRecaptchaConfig
+ operationId: getRecaptchaModuleConfig
responses:
'200':
description: reCAPTCHA configuration retrieved successfully
diff --git a/scripts/generate_writerside_openapi_docs.py b/scripts/generate_writerside_openapi_docs.py
new file mode 100644
index 00000000..01795bbf
--- /dev/null
+++ b/scripts/generate_writerside_openapi_docs.py
@@ -0,0 +1,839 @@
+#!/usr/bin/env python3
+import argparse
+import hashlib
+import html
+import json
+import re
+import sys
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Dict, List, Tuple
+
+import yaml
+
+
+HTTP_METHODS = ["get", "post", "put", "patch", "delete", "options", "head", "trace"]
+AUTOGEN_NOTE = "AUTO-GENERATED, DO NOT EDIT"
+TOC_START_MARKER = ""
+TOC_END_MARKER = ""
+OPS_PER_PAGE = 20
+MODULE_DESCRIPTIONS: Dict[str, Tuple[str, str]] = {
+ "action-logs": ("Action Logs", "Audit and operational logs for integration module activity."),
+ "backup": ("Backup", "Backup integrations and backup module orchestration."),
+ "cvr": ("CVR", "Danish company registry (CVR) lookup and search integration."),
+ "economic": ("e-conomic", "Accounting and invoicing integration with e-conomic."),
+ "entra": ("Entra", "Microsoft Entra directory integration endpoints."),
+ "fxratesapi": ("FXRatesAPI", "Currency exchange-rate lookup integration."),
+ "motorapi": ("MotorAPI", "Vehicle lookup integration via MotorAPI."),
+ "self-serve": ("Self-Serve", "Self-serve lane control and machine command endpoints."),
+ "stripe": ("Stripe", "Stripe payments, invoices, terminals, products, and customers."),
+ "virkdata": ("VirkData", "VirkData company information integration."),
+ "washcertificates": ("Wash Certificates", "Wash certificate retrieval and listing integration."),
+ "weatherapi": ("WeatherAPI", "Weather provider integration for current, forecast, and search."),
+ "xlvask": ("XLVask", "XLVask synchronization, usage logs, vehicles, and customers."),
+}
+CONFIG_DESCRIPTIONS: Dict[str, Tuple[str, str]] = {
+ "backups": ("Backups", "Backup configuration for backup module behavior."),
+ "bird": ("Bird", "Bird communication integration configuration."),
+ "economic": ("e-conomic", "e-conomic accounting integration configuration."),
+ "email": ("Email", "Email provider and SMTP/MailerSend configuration."),
+ "entra": ("Entra", "Microsoft Entra identity integration configuration."),
+ "fxratesapi": ("FXRatesAPI", "FXRatesAPI exchange-rate integration configuration."),
+ "gatewayapi": ("GatewayAPI", "GatewayAPI integration configuration."),
+ "licenseplaterecognizer": ("LicensePlateRecognizer", "License plate recognizer integration configuration."),
+ "limble": ("Limble", "Limble integration configuration."),
+ "motorapi": ("MotorAPI", "MotorAPI vehicle lookup integration configuration."),
+ "ocrspace": ("OcrSpace", "OCR Space integration configuration."),
+ "openai": ("OpenAI", "OpenAI integration configuration."),
+ "reCAPTCHA": ("reCAPTCHA", "reCAPTCHA protection configuration."),
+ "selfserve": ("Self-Serve", "Self-serve module runtime configuration."),
+ "shelly": ("Shelly", "Shelly integration configuration."),
+ "stripe": ("Stripe", "Stripe integration configuration."),
+ "virkdata": ("VirkData", "VirkData integration configuration."),
+ "weatherapi": ("WeatherAPI", "WeatherAPI integration configuration."),
+ "xlvask": ("XLVask", "XLVask integration configuration."),
+}
+
+
+@dataclass(frozen=True)
+class Operation:
+ method: str
+ path: str
+ title: str
+ topic_id: str
+ topic_file: str
+ primary_tag: str
+ operation_id: str
+ description: str
+ parameters: List[dict]
+ request_body: dict
+ responses: dict
+ security: List[dict]
+ module_key: str
+ module_name: str
+ module_description: str
+ config_key: str
+ config_name: str
+ config_description: str
+
+
+def slugify(value: str) -> str:
+ slug = re.sub(r"[^A-Za-z0-9_]+", "_", value.strip())
+ slug = re.sub(r"_+", "_", slug).strip("_")
+ if not slug:
+ slug = "unnamed"
+ if not re.match(r"^[A-Za-z_]", slug):
+ slug = f"id_{slug}"
+ return slug
+
+
+def safe_token(value: str) -> str:
+ return slugify(value).lower()
+
+
+def build_operation_topic_id(operation_id: str, method: str, path: str) -> str:
+ base = slugify(operation_id)
+ if len(base) > 110:
+ digest = hashlib.sha1(f"{method}:{path}:{operation_id}".encode("utf-8")).hexdigest()[:8]
+ base = f"{base[:100]}_{digest}"
+ return base
+
+
+def schema_type_name(schema: dict) -> str:
+ if not isinstance(schema, dict):
+ return "unknown"
+ if "$ref" in schema:
+ ref = str(schema["$ref"])
+ return ref.rsplit("/", 1)[-1]
+ if "type" in schema:
+ t = str(schema["type"])
+ if t == "array" and isinstance(schema.get("items"), dict):
+ return f"array<{schema_type_name(schema['items'])}>"
+ return t
+ if "oneOf" in schema:
+ return "oneOf"
+ if "anyOf" in schema:
+ return "anyOf"
+ if "allOf" in schema:
+ return "allOf"
+ return "object"
+
+
+def xml_escape(value: str) -> str:
+ return html.escape(value or "", quote=True)
+
+
+def pretty_json(value: dict) -> str:
+ return html.escape(json.dumps(value, indent=2, ensure_ascii=False, sort_keys=True))
+
+
+def render_parameters_table(parameters: List[dict]) -> str:
+ if not parameters:
+ return ""
+ rows = [
+ " ",
+ " ",
+ " | Name | In | Required | Type | Description |
",
+ ]
+ for param in parameters:
+ name = xml_escape(str(param.get("name", "")))
+ loc = xml_escape(str(param.get("in", "")))
+ required = "yes" if param.get("required") else "no"
+ ptype = xml_escape(schema_type_name(param.get("schema", {})))
+ desc = xml_escape(str(param.get("description", "")))
+ rows.append(
+ f" | {name} | {loc} | {required} | {ptype} | {desc} |
"
+ )
+ rows.append("
")
+ rows.append(" ")
+ return "\n".join(rows) + "\n"
+
+
+def render_request_body(request_body: dict) -> str:
+ if not isinstance(request_body, dict) or not request_body:
+ return ""
+ lines = [" "]
+ lines.append(f" Required: {'yes' if request_body.get('required') else 'no'}.
")
+ content = request_body.get("content", {})
+ if isinstance(content, dict) and content:
+ for content_type, media in content.items():
+ lines.append(f" Content type: {xml_escape(str(content_type))}
")
+ schema = media.get("schema") if isinstance(media, dict) else None
+ if isinstance(schema, dict):
+ lines.append(" ")
+ lines.append(pretty_json(schema))
+ lines.append(" ")
+ lines.append(" ")
+ return "\n".join(lines) + "\n"
+
+
+def render_responses(responses: dict) -> str:
+ if not isinstance(responses, dict) or not responses:
+ return ""
+ lines = [
+ " ",
+ " ",
+ " | Status | Description | Content Types |
",
+ ]
+ for status_code, response in responses.items():
+ if not isinstance(response, dict):
+ continue
+ description = xml_escape(str(response.get("description", "")))
+ content = response.get("content", {})
+ if isinstance(content, dict):
+ content_types = ", ".join(sorted(str(k) for k in content.keys()))
+ else:
+ content_types = ""
+ lines.append(
+ f" | {xml_escape(str(status_code))} | {description} | {xml_escape(content_types)} |
"
+ )
+ lines.append("
")
+
+ for status_code, response in responses.items():
+ if not isinstance(response, dict):
+ continue
+ content = response.get("content", {})
+ if not isinstance(content, dict):
+ continue
+ for content_type, media in content.items():
+ schema = media.get("schema") if isinstance(media, dict) else None
+ if not isinstance(schema, dict):
+ continue
+ lines.append(
+ f" Schema for response {xml_escape(str(status_code))} ({xml_escape(str(content_type))}):
"
+ )
+ lines.append(" ")
+ lines.append(pretty_json(schema))
+ lines.append(" ")
+ lines.append(" ")
+ return "\n".join(lines) + "\n"
+
+
+def render_security(security: List[dict]) -> str:
+ if not security:
+ return " No authentication required.
\n"
+ lines = [
+ " ",
+ " Security requirements:
",
+ " ",
+ " | Scheme | Scopes |
",
+ ]
+ for req in security:
+ if not isinstance(req, dict):
+ continue
+ for scheme, scopes in req.items():
+ if isinstance(scopes, list):
+ scope_text = ", ".join(str(s) for s in scopes) if scopes else "-"
+ else:
+ scope_text = "-"
+ lines.append(
+ f" | {xml_escape(str(scheme))} | {xml_escape(scope_text)} |
"
+ )
+ lines.extend(["
", " "])
+ return "\n".join(lines) + "\n"
+
+
+def render_operation_topic(operation: Operation) -> str:
+ title = html.escape(operation.title, quote=True)
+ endpoint = xml_escape(operation.path)
+ method = operation.method.upper()
+ topic_id = html.escape(operation.topic_id, quote=True)
+ description = xml_escape(operation.description)
+ operation_id = xml_escape(operation.operation_id)
+
+ parameter_block = render_parameters_table(operation.parameters)
+ request_block = render_request_body(operation.request_body)
+ response_block = render_responses(operation.responses)
+ security_block = render_security(operation.security)
+
+ return (
+ '\n'
+ '\n'
+ '\n'
+ f"\n \n"
+ " This endpoint documentation is generated directly from openapi.yaml.
\n"
+ " \n"
+ f" {method} {endpoint}\n"
+ " \n"
+ " \n"
+ f" Operation ID: {operation_id}
\n"
+ f" {description}
\n"
+ " \n"
+ f"{security_block}"
+ f"{parameter_block}"
+ f"{request_block}"
+ f"{response_block}"
+ "\n"
+ )
+
+
+def render_tag_topic(tag: str, topic_id: str) -> str:
+ title = html.escape(tag, quote=True)
+ safe_id = html.escape(topic_id, quote=True)
+ return (
+ '\n'
+ '\n'
+ '\n'
+ f"\n \n"
+ " Endpoints in this section are generated from openapi.yaml.
\n"
+ "\n"
+ )
+
+
+def render_tag_page_topic(tag: str, topic_id: str, page_number: int, total_pages: int) -> str:
+ title = html.escape(f"{tag} - Page {page_number} of {total_pages}", quote=True)
+ safe_id = html.escape(topic_id, quote=True)
+ return (
+ '\n'
+ '\n'
+ '\n'
+ f"\n \n"
+ " This page groups endpoint topics for this object type.
\n"
+ "\n"
+ )
+
+
+def render_module_topic(module_name: str, module_description: str, topic_id: str) -> str:
+ title = html.escape(module_name, quote=True)
+ safe_id = html.escape(topic_id, quote=True)
+ description = xml_escape(module_description)
+ return (
+ '\n'
+ '\n'
+ '\n'
+ f"\n \n"
+ f" {description}
\n"
+ "\n"
+ )
+
+
+def render_modules_index_topic(topic_id: str, modules: List[Tuple[str, str]]) -> str:
+ safe_id = html.escape(topic_id, quote=True)
+ rows = [
+ '',
+ "',
+ '',
+ "",
+ f" ",
+ " Module integrations sorted by module name.
",
+ " ",
+ " ",
+ " | Module | Description |
",
+ ]
+ for module_name, module_description in modules:
+ rows.append(
+ f" | {xml_escape(module_name)} | {xml_escape(module_description)} |
"
+ )
+ rows.extend(["
", " ", "", ""])
+ return "\n".join(rows)
+
+
+def render_config_index_topic(topic_id: str, modules: List[Tuple[str, str]]) -> str:
+ safe_id = html.escape(topic_id, quote=True)
+ rows = [
+ '',
+ "',
+ '',
+ "",
+ f" ",
+ " Configuration endpoints grouped by module name.
",
+ " ",
+ " ",
+ " | Module | Description |
",
+ ]
+ for module_name, module_description in modules:
+ rows.append(
+ f" | {xml_escape(module_name)} | {xml_escape(module_description)} |
"
+ )
+ rows.extend(["
", " ", "", ""])
+ return "\n".join(rows)
+
+
+def infer_module(path: str) -> Tuple[str, str, str]:
+ segments = [segment for segment in path.split("/") if segment]
+ module_key = "misc"
+ if segments:
+ if segments[0] == "modules" and len(segments) > 1:
+ module_key = segments[1]
+ elif segments[0] in {"economic", "cvr"}:
+ module_key = segments[0]
+
+ if module_key in MODULE_DESCRIPTIONS:
+ module_name, module_description = MODULE_DESCRIPTIONS[module_key]
+ else:
+ module_name = module_key.replace("-", " ").title()
+ module_description = "Integration module endpoints."
+ return module_key, module_name, module_description
+
+
+def infer_config_module(path: str) -> Tuple[str, str, str]:
+ segments = [segment for segment in path.split("/") if segment]
+ config_key = segments[0] if segments else "misc"
+ if config_key in CONFIG_DESCRIPTIONS:
+ config_name, config_description = CONFIG_DESCRIPTIONS[config_key]
+ else:
+ config_name = config_key.replace("-", " ").title()
+ config_description = "Configuration endpoints for this module."
+ return config_key, config_name, config_description
+
+
+def render_api_reference_topic() -> str:
+ return (
+ '\n'
+ '\n'
+ '\n'
+ f"\n \n"
+ " Comprehensive API reference generated from the repository root openapi.yaml.
\n"
+ "\n"
+ )
+
+
+def write_if_changed(path: Path, content: str) -> bool:
+ if path.exists() and path.read_text(encoding="utf-8") == content:
+ return False
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_text(content, encoding="utf-8")
+ return True
+
+
+def parse_openapi(openapi_path: Path) -> Tuple[List[str], List[Operation], Dict[str, List[Operation]]]:
+ doc = yaml.safe_load(openapi_path.read_text(encoding="utf-8"))
+ global_security = doc.get("security", [])
+ tags_section = doc.get("tags", [])
+ declared_tags = []
+ for tag_item in tags_section:
+ if isinstance(tag_item, dict) and isinstance(tag_item.get("name"), str):
+ declared_tags.append(tag_item["name"])
+
+ declared_tag_set = set(declared_tags)
+ paths = doc.get("paths", {})
+ if not isinstance(paths, dict):
+ raise ValueError("Invalid OpenAPI: top-level 'paths' must be an object.")
+
+ operations: List[Operation] = []
+ grouped: Dict[str, List[Operation]] = {}
+ seen_topic_ids: Dict[str, str] = {}
+ unknown_tags: List[str] = []
+
+ for api_path, path_item in paths.items():
+ if not isinstance(path_item, dict):
+ continue
+ path_parameters = path_item.get("parameters", [])
+ for method in HTTP_METHODS:
+ operation = path_item.get(method)
+ if not isinstance(operation, dict):
+ continue
+
+ operation_tags = operation.get("tags")
+ if isinstance(operation_tags, list) and operation_tags:
+ tags = [str(tag) for tag in operation_tags]
+ else:
+ tags = ["Misc"]
+
+ for tag in tags:
+ if tag != "Misc" and tag not in declared_tag_set:
+ unknown_tags.append(f"{method.upper()} {api_path} => '{tag}'")
+
+ primary_tag = tags[0]
+ operation_id = operation.get("operationId")
+ if not isinstance(operation_id, str) or not operation_id.strip():
+ operation_id = f"{method}_{api_path}"
+
+ summary = operation.get("summary")
+ if not isinstance(summary, str) or not summary.strip():
+ summary = f"{method.upper()} {api_path}"
+ description = operation.get("description")
+ if not isinstance(description, str) or not description.strip():
+ description = summary
+
+ topic_id = build_operation_topic_id(operation_id, method, api_path)
+ existing = seen_topic_ids.get(topic_id)
+ operation_ref = f"{method.upper()} {api_path}"
+ if existing and existing != operation_ref:
+ raise ValueError(
+ f"Duplicate topic id '{topic_id}' generated for '{existing}' and '{operation_ref}'."
+ )
+ seen_topic_ids[topic_id] = operation_ref
+
+ topic_file = f"{topic_id}.topic"
+ operation_parameters = operation.get("parameters", [])
+ merged_parameters: List[dict] = []
+ seen_params = set()
+ for param_source in [path_parameters, operation_parameters]:
+ if not isinstance(param_source, list):
+ continue
+ for param in param_source:
+ if not isinstance(param, dict):
+ continue
+ key = (str(param.get("in", "")), str(param.get("name", "")))
+ if key in seen_params:
+ merged_parameters = [
+ p
+ for p in merged_parameters
+ if (str(p.get("in", "")), str(p.get("name", ""))) != key
+ ]
+ seen_params.add(key)
+ merged_parameters.append(param)
+
+ module_key, module_name, module_description = infer_module(api_path)
+ config_key, config_name, config_description = infer_config_module(api_path)
+ op = Operation(
+ method=method,
+ path=api_path,
+ title=summary,
+ topic_id=topic_id,
+ topic_file=topic_file,
+ primary_tag=primary_tag,
+ operation_id=operation_id,
+ description=description,
+ parameters=merged_parameters,
+ request_body=operation.get("requestBody", {}),
+ responses=operation.get("responses", {}),
+ security=operation.get("security", global_security),
+ module_key=module_key,
+ module_name=module_name,
+ module_description=module_description,
+ config_key=config_key,
+ config_name=config_name,
+ config_description=config_description,
+ )
+ operations.append(op)
+ grouped.setdefault(primary_tag, []).append(op)
+
+ if unknown_tags:
+ raise ValueError(
+ "Invalid tag mapping: operation tags not declared in top-level OpenAPI tags:\n"
+ + "\n".join(sorted(unknown_tags))
+ )
+
+ for tag_ops in grouped.values():
+ tag_ops.sort(key=lambda op: (op.path, op.method))
+
+ ordered_tags = [tag for tag in declared_tags if tag in grouped]
+ if "Misc" in grouped and "Misc" not in ordered_tags:
+ ordered_tags.append("Misc")
+ for extra in sorted(tag for tag in grouped if tag not in ordered_tags):
+ ordered_tags.append(extra)
+
+ return ordered_tags, operations, grouped
+
+
+def render_generated_toc(ordered_tags: List[str], grouped: Dict[str, List[Operation]]) -> str:
+ lines: List[str] = []
+ lines.append(' ')
+ for tag in ordered_tags:
+ tag_topic_file = f"Tag_{slugify(tag)}.topic"
+ lines.append(f' ')
+ tag_ops = grouped.get(tag, [])
+ if tag == "Modules":
+ module_groups: Dict[str, List[Operation]] = {}
+ module_meta: Dict[str, Tuple[str, str]] = {}
+ for op in tag_ops:
+ module_groups.setdefault(op.module_key, []).append(op)
+ module_meta[op.module_key] = (op.module_name, op.module_description)
+
+ for module_key in sorted(module_groups, key=lambda key: module_meta[key][0].lower()):
+ module_name, _ = module_meta[module_key]
+ module_slug = safe_token(module_name)
+ module_topic = f"modules_module_{module_slug}.topic"
+ lines.append(f' ')
+ module_ops = sorted(module_groups[module_key], key=lambda op: (op.module_name.lower(), op.title.lower(), op.path, op.method))
+ total_pages = max(1, (len(module_ops) + OPS_PER_PAGE - 1) // OPS_PER_PAGE)
+ for page_index in range(total_pages):
+ start = page_index * OPS_PER_PAGE
+ end = start + OPS_PER_PAGE
+ page_ops = module_ops[start:end]
+ page_number = page_index + 1
+ page_topic = f"modules_module_{module_slug}_page_{page_number}.topic"
+ lines.append(f' ')
+ for op in page_ops:
+ lines.append(f' ')
+ lines.append(" ")
+ lines.append(" ")
+ lines.append(" ")
+ continue
+
+ if tag == "Config":
+ config_groups: Dict[str, List[Operation]] = {}
+ config_meta: Dict[str, Tuple[str, str]] = {}
+ for op in tag_ops:
+ config_groups.setdefault(op.config_key, []).append(op)
+ config_meta[op.config_key] = (op.config_name, op.config_description)
+
+ for config_key in sorted(config_groups, key=lambda key: config_meta[key][0].lower()):
+ config_name, _ = config_meta[config_key]
+ config_slug = safe_token(config_name)
+ config_topic = f"config_module_{config_slug}.topic"
+ lines.append(f' ')
+ config_ops = sorted(config_groups[config_key], key=lambda op: (op.title.lower(), op.path, op.method))
+ total_pages = max(1, (len(config_ops) + OPS_PER_PAGE - 1) // OPS_PER_PAGE)
+ for page_index in range(total_pages):
+ start = page_index * OPS_PER_PAGE
+ end = start + OPS_PER_PAGE
+ page_ops = config_ops[start:end]
+ page_number = page_index + 1
+ page_topic = f"config_module_{config_slug}_page_{page_number}.topic"
+ lines.append(f' ')
+ for op in page_ops:
+ lines.append(f' ')
+ lines.append(" ")
+ lines.append(" ")
+ lines.append(" ")
+ continue
+
+ total_pages = max(1, (len(tag_ops) + OPS_PER_PAGE - 1) // OPS_PER_PAGE)
+ for page_index in range(total_pages):
+ start = page_index * OPS_PER_PAGE
+ end = start + OPS_PER_PAGE
+ page_ops = tag_ops[start:end]
+ page_number = page_index + 1
+ page_topic = f"Tag_{slugify(tag)}_Page_{page_number}.topic"
+ lines.append(f' ')
+ for op in page_ops:
+ lines.append(f' ')
+ lines.append(" ")
+ lines.append("